“你是个好人,但我绝不会接受一个连热门口红品牌色号都分不清的好直男。”

作者 | 周志鹏

责编 | 郭   芮

挑战高薪,进军人工智能领域:

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

这是一个为热点蛰伏了N天的故事——朋友们问小Z为什么都三八节了才发这篇文章,快递都来不及了。小Z微微一笑:本文只是提供一种分析思路(线上分析爆款的套路万变不离其宗),好好扪包(钱包)自问,2019才刚刚开始,节日还多着呐(微笑中仿佛透露着贫穷)......

情人节告白被拒的经历还历历在目,小Z觉得,作为一个做数据分析的直男,有必要让数据来解决自己的困惑——什么是热门的口红色号?

小Z攥紧了拳头暗暗发誓:“哥要用数据来找到热门的口红品牌和HOT色号”!一来为自己正名,二来是把数据分析思路和结果公之于众,为直男圈做一点点微小的贡献。

小Z原本天真的以为口红色号就像鞋码一样,每个品牌都是通用的,43码就是43码,阿迪并没有比阿迪王高贵,只需要一视同仁地爬取和统计数据就OK了——但是口红用残酷的现实啪啪啪打醒了他:不同的品牌,甚至同一个品牌的不同系列,就算颜色看起来一毛一样,色号也是不同的。

“没关系,那我就先找出热门品牌,再分析不同品牌的热门色号。”小Z早已百折不挠,“淘宝(包括天猫)是走量最大的平台,那这次分析就从淘宝入手吧。”

热门口红品牌初体验

说干就干,小Z先在淘宝搜索“口红”,按销量排序,明确第一步目标:先爬下TOP200产品的标题、收货人数(收货人数是指近30天确认收货的人数,该指标和销量相比略有浮动,结合后面评价数据来看更具指向性)、价格、店铺名称和地址。

仔细观察发现,第一步我们需要的所有数据都在静态网页中,直接requests网址即可。之所以只拿下TOP200,是因为凭借小Z在电商浅耕多年的直觉:一个销量可观的行业,TOP200产品的特征已经能够代表行业的趋势了。

一顿操作猛如虎,一看结果有眉目:

基本字段齐活了,还缺什么呢?第一步不是要分析品牌吗?品牌在哪里?要通过产品标题或者店铺名称来清洗出品牌未免也太太太麻烦了,不慌,小Z发现每款产品详情页记录着关于品牌的信息:

恰好我们第一步记录了每个产品的URL,这一步的数据也藏在静态网址中,只需要依次访问爬取就好了。

数据源已备好,在分析前小Z很明确分析的最终目的:送给妹子!!!

如果按照销量排名来看品牌热度,难免有些单纯走量的品牌跻身前10,所以,后面的分析主要基于金额排序:

近30天TOP10品牌出炉,MAC(这可不是电脑的那个MAC)以14.96%的市场占有率独占鳌头,YSL、纪梵希紧随其后。不难看出,前10个品牌(TOP200产品中共计85个品牌)累计占据了66.35%的市场份额。更进一步,20%的品牌占据了78.89%的收货额,二八法则可谓诚不欺我小Z。

从平均价格来看,热门品牌可以分为三个梯队,第一梯队是高端线:纪梵希、YSL、阿玛尼、DIOR和雅诗兰黛,平均价格都在270以上;MAC以136元的平均价格独占第二梯队;第三梯队则是亲民品牌,ZEESEA、完美日记、稚优泉与美康粉黛,平均价格不超过50元。

至此,热门品牌和价格梯队划分完成,下面就是死磕不同品牌的色号了。

不同品牌的热门色号

这一步的操作小Z决定分细一点,围绕数据爬取——清洗——分析的流程来进行。

一、数据爬取

所有关于商品色号的信息,都藏在商品评论里:

从消费心理学角度来看,购买之后且愿意评论的人虽是少数,但这些评论者本身受到产品触动,具有强烈的表达意愿,他们所购买的产品色号就更具备参考价值。小Z决定从高、中梯队抽取每一个品牌的爆款(TOP1)产品,进行评价抓取(同志,毕竟是送给妹子的,先放过亲民线品牌)。

敲黑板,页面前端展示评价数都是成千上万,但实际爬取过程中,最多只有99页(20*99条)的权限。另外,评论内容是以动态形式存放在详情的JS网页中,以list_detail_rate开头,访问后是JSON格式,非常简单:

小Z先网罗了纪梵希、YSL、阿玛尼、DIOR、雅诗兰黛和MAC官方旗舰店爆款(总销量TOP1)产品:

再分别爬取之,最终拿到合计10953条评价,还有买家昵称、评论时间以及我们最喜欢的色号信息:

二、数据清洗

数据还挺全,那岂不是直接做一个分类统计就知道什么色号火了!小Z想想都觉得激动。BUT!TOO YOUNG TOO SIMPLE!

小Z突然想到曾经的自己,只有两种情况才会主动评价,一种是吹到爆的好物(或者觉得东西不错商家还好评送红包);一种是烂到不行,感觉智商受到侮辱必须奋起反击,揭不义于公众。

“如果无差别地统计色号,万一,有一款谁买谁骂的色号在统计中排名靠前,而我又向朋友们推荐了这款色号!!!这可是犯罪啊!”所以,小Z作为一个严谨的数据分析师,做色号之前先对评价进行清洗:

  • 简单去噪,发现评价中有部分“此用户没有填写评论”,这一类无意义的评价必须剔除(其实还有一些是评价模板,朋友们自己尝试的时候可以细化,这里只是思路,暂不展开);

  • 对每条评价情感打分,只留下偏正向(积极)的评价,再统计色号。

由于评价都是中文,小Z这次用了PYTHON中的SnowNLP库,用法很简单,举个例子:

sentiments方法返回的是一个0-1之间的情感分值,越接近1表明情感越积极,越靠近0则越消极。小Z批量对评价进行情感判定,剔除掉没有评论的评价,并且只留下分值大于等于0.6(偏积极)的结果:

经过清洗之后,10953条评价还剩9116条,看来口红绝大部分评价都是偏正向(炫耀)的。

三、数据分析

1、不同品牌色号数量分布:

从爆款产品色号数量来看,MAC可谓全面,评论中竟然涉及到50个色号。随后是DIOR的35个色号,YSL、纪梵希、雅诗兰黛色号数量比较接近,都在21左右。阿玛尼则比较高冷,只有15个色号供选择。但色号数量只能看一个总览,各品牌色号集中度是一个什么样的情况呢?

2、各品牌色号集中度:

通过各品牌TOP3色号占比和累计占比来分析色号集中度。

YSL、阿玛尼、雅诗兰黛TOP3色号累计占比非常之高,达到了90%左右,其中阿玛尼和雅诗兰黛以一个爆款色号俾睨天下,他俩TOP1色号占比高达73%+,YSL算是两驾马车并驾齐驱。MAC和纪梵希集中度在72%+,仍是依靠TOP1色号这个ADC的强大输出控场;DIOR呈现出百花齐放的态势,TOP3色号累计占比仅57.05%,TOP1、TOP2色号分布均匀,消费者在色号选择方面较为自主和独立。

3、最热门色号推荐:

啊!DIOR的999 MATTE,MAC的CHILI,YSL的N°1正宫色,阿玛尼的405番茄红,纪梵希的306还有雅诗兰黛的420#13玫瑰豆沙色。

写在最后

“结论如此一目了然,以至于不用再多分析了”。小Z流下了两行激动的泪水,不是因为他有亲人行车不规范,而是因为这一次针对口红品牌和色号的分析终于有了结论,这个过程积累的思路和技巧,还有结论带来的成就感,甚至比和女神相处还美妙。

小Z隐隐觉得这种美妙感有些不正常。这时,PYTHON编辑器突然响起了娇嗔的女声“讨厌!你每天和朋友说想找对象,为什么没有想起我这个对象呢!”......未完待续:)

本文主要针对特定品牌特定产品做了评价爬取和分析,感兴趣的朋友们可以结合自己兴趣去做分析,最后附上评论爬取和清洗代码抛砖引玉:

import requests
import pandas as pd
import os
import time
import json
from snownlp import SnowNLP#定义一个解析单页评论内容的函数
def parse_page(url,headers,cookies):result = pd.DataFrame()html = requests.get(url,headers = headers,cookies = cookies)bs = json.loads(html.text[25:-2])#循环解析,结果放在result中for i in bs['rateList']:content = i['rateContent']time = i['rateDate']sku = i['auctionSku']name = i['displayUserNick']df = pd.DataFrame({'买家昵称':[name],'评论时间':[time],'内容':[content],'SKU':[sku]})result = pd.concat([result,df])return result#构造网页,需要输入基准的网址和商品总评价数量
def format_url(base_url,num):urls = []#如果小于99页,则按照实际页数来循环构造if (num / 20) < 99:for i in range(1,int(num / 20) + 1):url = base_url[:-1] + str(i)urls.append(url)#如果评论数量大于99页能容纳的,则按照99页来爬取else:for i in range(1,100):url = base_url[:-1] + str(i)urls.append(url)#最终返回urlsreturn urls#输入基准网页,以及有多少条评论
def main(url,num):#定义一个存所有内容的变量final_result = pd.DataFrame()  count = 1#构造网页,循环爬取并存储结果for u in format_url(url,num):result = parse_page(u,headers = headers,cookies = cookies)final_result = pd.concat([final_result,result])print('正在疯狂爬取,已经爬取第 %d 页' % count)#设置一个爱心的等待时间,文明爬取count += 1time.sleep(5.2) print('为完成干杯!')return final_result#情感筛选,只留下大于等于0.6分值的结果
def filter_emotion(df,min_ = 0.6):scores = []#判断情感分值for text in df['内容']:ob = SnowNLP(text)score = ob.sentimentsscores.append(score)df_scores = pd.DataFrame({'情感分值':scores})df.index = df_scores.indexresult = pd.concat([df,df_scores],axis = 1)#剔除掉没有评论的用户result = result.loc[result['内容'].str.find('此用户没有填写评论') == -1,:]#留下大于0.6的分值result = result.loc[result['情感分值'] >= min_,:]return resultif __name__ == "__main__":#找到基准网址,在网页JS文件中找到填写就OKurl = 'https://rate.tmall.com/list_detail_rate.htm?itemId=585140124323&spuId=1136244482&sellerId=3102239719&order=3&currentPage=1'#伪装headers按照实际情况填写headers = {'User-Agnet':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6'}#伪装cookies,最近反爬比较严,最好填入登录的值,并且文明爬取,设置合理的间隔时间cookies = {'cookie':'这个地方输入自己的cookies'}#最终执行,这个产品目前只有265条评价,大家根据实际情况酌情填写df = main(url,num = 265)#用情感分值来进行清洗df = filter_emotion(df,min_ = 0.6)    #最后可以把结果存为excel文件的形式#df.to_excel('XXXX.xlsx')

45K!刚面完 AI 岗,这些技术必须掌握!

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

作者:周志鹏,2年数据分析,深切感受到数据分析的有趣和学习过程中缺少案例的无奈,遂新开公众号「数据不吹牛」,定期更新数据分析相关技巧和有趣案例(含实战数据集),欢迎大家关注交流。

声明:本文为作者投稿,版权归其个人所有。

 热 文 推 荐 

☞ 聊天宝解散,多闪、马桶MT还会远吗?| 畅言

☞ 全栈开发永远成不了高级程序员?!

小米速度!雷军再祭 All in AIoT 大招!

☞ 女神节该送程序媛什么礼物?保命指南来了!| 程序员有话说

窃取苹果 1TB 敏感数据,这个少年凭什么“全身而退”?

☞ 小团队的微服务之路

首发 | 旷视14篇CVPR 2019论文,都有哪些亮点?

两会第一天, 大佬们关于区块链的探讨, 你要了解的都在这了

☞ 神操作!这段代码让程序员躺赚200万?给力!

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

直男不懂女人心?10953 条数据告诉你女王节送什么口红色号!相关推荐

  1. 直男福利!手把手教你做一只口红色号识别器,秒变李佳琦

    大数据文摘编辑组出品技术实现:宁静 七夕将至,送礼时节.直男送礼,首选口红.毕竟李佳琦一句"OMG买它",女朋友披头散发抢购,钱包就空了一半.但是,口红色号千千万,选对了牌子才成功 ...

  2. 8万条数据告诉你:跟着大股东和高管买他家股票,能赚钱吗?【邢不行|量化小讲堂系列60-实战篇】

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...

  3. Selenium爬取36万条数据告诉你:网易云音乐热评究竟有什么规律?

    网易云音乐火不火我不知道,可是评论很火,之前也见过不少的帖子抓取网易云音乐评论,今天咱们也来试试 这篇文章主要介绍了python selenium爬取网易云音乐热评,文中通过示例代码介绍的非常详细,对 ...

  4. Python 分析 9 万条数据告诉你复仇者联盟谁才是绝对 C 位!

    <复联 4>国内上映第十天,程序员的江湖里开始流传这样一个故事,即: 漫威宇宙,其实就讲了一件事情.整个宇宙就好比一个项目组.其中有一群叫作美国队长.钢铁侠.惊奇队长.浩克.索尔等人在维护 ...

  5. Python分析9万条数据告诉你复仇者联盟谁才是绝对C位

    作者 | 罗昭成 责编 | 唐小引 转载自CSDN(ID:CSDNnews) <复联 4>国内上映第十天,程序员的江湖里开始流传这样一个故事,即: 漫威宇宙,其实就讲了一件事情.整个宇宙就 ...

  6. 复仇者联盟谁才是绝对 C 位?Python分析9万条数据告诉你答案

    作者 | 罗昭成 责编 | 唐小引 <复联 4>国内上映第十天,程序员的江湖里开始流传这样一个故事,即:漫威宇宙,其实就讲了一件事情.整个宇宙就好比一个项目组.其中有一群叫作美国队长.钢铁 ...

  7. 大数据告诉你,母亲节送妈妈什么礼物会让她更开心

    又到母亲节,据说,"母亲节给妈妈送什么礼物"是世界第2大难题,仅次于第1难的"今天吃什么?" 那么这第2大难题应该如何解决呢?显然它不会有一个万能的标准答案,但 ...

  8. 防脱洗发水是个伪命题?8979 条数据告诉你答案!

    作者 | 周志鹏 责编 | maozz 最近,小Q陷入了一个脱发死循环. 照镜子隐隐若现的头皮,洗完头地上乌压压的断发,让他无时无刻不担心自己的发量,一担心怎么办呢?挠头呗! 越脱发,越担忧:越担忧, ...

  9. 网易云音乐热评的规律,44万条数据告诉你

    网易云的每日推荐里藏着你听过的歌,你听过的歌里藏着你的故事. 网易云音乐的评论里,藏着许多人的故事. 我们爬取了网易云音乐中华语歌单中48400首歌的444054条热评,来看看网易云的热门评论里,有怎 ...

最新文章

  1. android 人生日历,android版人生日历日子怎么用 安卓版人生日历日子使用教程
  2. spider RPC更新至2.0.0-RELEASE
  3. openresty开发系列25--openresty中使用json模块
  4. P3224-[HNOI2012]永无乡【平衡树,启发式合并】
  5. java中求5的阶乘
  6. UNIX(进程间通信):16深入理解Socket
  7. springboot导包显示不存在_基础篇:Spring Boot入门体验(图文教程)
  8. 【C++基础学习】const限定修饰符详解
  9. VC下的人人对弈五子棋(dos)
  10. matlab查表svpwm,SVPWM的查表生成方式代码
  11. 用python实现PSNR与SSIM
  12. 基于node.js的网页聊天系统设计与实现
  13. 测试面试题集锦(一)| 软件测试常见必考问题与流程篇(附答案)
  14. oracle回收DBA权限以及授权表空间
  15. 同学聚会,进行点菜,点了大盘鸡 水煮鱼 大虾 以及4个凉菜 1箱啤酒 分别录入各个单价,并计算总价,录入总学生数,计算人均多少钱。
  16. GO 重新进阶学习(四)
  17. 如何利用文字推动业绩 ——营销人员的软文营销
  18. 疫情控制住了,公司却倒闭了!
  19. 职场选择,也许该考虑一下“增长黑客”?
  20. 小米路由hd php,详谈小米路由器Pro / HD,俩都是…

热门文章

  1. Macaca简单入门
  2. 厨师刀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  3. Docker安装Mysql8.0,并配置忽略大小写,一句命令搞定
  4. input 模糊匹配功能 文本框模糊匹配(纯html+jquery简单实现) demo
  5. asp.net数据库连接php代码,ASP.NET 数据库连接
  6. 拉拢苹果用户,谷歌推出“从 iOS 转移到 Android” App
  7. “我的开源项目被大厂‘盗用’了!”
  8. 零信任风口来了,新一代企业安全架构革新势在必行
  9. 零拷贝技术在 Java 中为何这么牛?
  10. OpenCV AI Kit (OAK) 创始人Brandon Gilles访谈全记录