深度|为了七夕节送女朋友一支口红,我爬取了京东并进行数据分析

2020-08-26 22:21:33 作者: 深度|为了七

作为消费者,除了商品质量,价格也是十分重要的参考因素,下面来看一下京东上销售的口红价格分布(注意因为临近七夕,所以不少口红都打折了,所以严谨的说这个分布只适用于七夕等折扣力度比较大的节日):

# 为了方便后续数据处理,我清空了之前的记录,重新读取数据import pandas as pdimport numpy as np  import matplotlib.mlab as mlab  import matplotlib.pyplot as plt  # 数据清洗df = pd.read_csv('京东口红清洗后数据.csv')df.drop(['商品价格','评价人数','店铺名称','商品标签'],axis=1, inplace=True)df2 = df.groupby(df['价格区间']).count()df2 = df2.rename(columns={'商品名称':'商品分布'})df2 = df2.sort_values(by=['商品分布'],ascending=False)# 注意这里的pyecharts最好是0.5.11版本,如果没有的话需要删了以前的,重新下载。否则会报错from pyecharts import Pielabels=df2.indexX=df2['商品分布']pie = Pie('京东口红价格分布')pie.add('',labels,X,is_label_show=True,legend_orient="vertical",legend_pos="right")pie.render('京东口红价格分布饼图.html')

如图所示,京东的口红,价格位于201-300元的数量最多,其次是101-200元,再次是51-100元。这说明相对于其他的化妆品来说,口红属于比较经济实惠的品类,基本都分布在51-300元(当然这也有七夕打折的因素,以迪奥999为例,平时价格在330,七夕打折是270元),其次说明随着消费升级,高端化妆品还是占据着美妆市场的主流,201-300的价格其实也并不便宜,但是仍然占据着口红商品价格分布的第一位。

京东口红价格分布饼图

商品的价格分布只能反映商品的供给情况,消费者买不买账可是两码事,比如虽然51-300元的商品数量多,但是买的人少,人们倾向于买50元以下的或者300元以上的口红呢?

所以还要结合商品的销售情况去分析,因为京东的网页不显示购买人数,只显示评价人数,而爬虫是“可见即可爬”,不可见当然爬不了。不过评价人数也和购买人数有一定的联系,毕竟只有购买了商品才能进行评价,同理评价人数多的商品一定是热门的。所以下一步我将分析口红的评价人数与价格分布的关系,看看消费者更喜欢哪个价格区间的口红。

# 为了方便后续数据处理,我清空了之前的记录,重新读取数据import pandas as pdimport numpy as np  import matplotlib.mlab as mlab  import matplotlib.pyplot as plt  # 数据清洗df = pd.read_csv('京东口红清洗后数据.csv')# 对于某些京东卖家,许多不同的口红其实评价人数是被归到一起的,比如迪奥的不同口红,评价人数都显示146万,所以需要去重df.drop_duplicates(subset=['评价人数'], keep='first', inplace=True)# 评价人数这一列,部分数据不是纯数字,需要清洗for i in range(0,3000):    try:        df['评价人数'][i] = df['评价人数'][i].replace('条评价','')    except:        pass# 将评价人数转换为浮点型for i in range(0,3000):    try:        df['评价人数'][i] = float(df['评价人数'][i])    except:        passdf.drop(['商品名称','商品价格','店铺名称','商品标签'],axis=1, inplace=True)# 利用groupby累加合并DataFrame数据中的重复行df = df.groupby(df['价格区间']).sum()df = df.sort_values(by=['评价人数'],ascending=False)from pyecharts import Pielabels=df.indexX=df['评价人数']pie = Pie('京东不同价格区间的口红评价人数占比')pie.add('',labels,X,is_label_show=True,legend_orient="vertical",legend_pos="right")pie.render('京东不同价格区间的口红评价人数占比.html')

如图所示,消费者还是最青睐于201-300元的口红,毕竟对于大部分大牌口红,基本都是这个价格区间,比如迪奥,兰蔻,圣罗兰,雅诗兰黛,香奈儿等等(七夕节打折,平时要300多),其次0-50以下占据着第二名的份额,原因是这个价位大部分商品都是润唇膏,本身就比较便宜好卖,这里不太属于口红的范畴。再次就是101-200的价位也有不少消费者青睐。最后51-100的区间也有着13.19%的份额,完美日记的许多口红就在这个范围内,可能许多厂家看不上的市场,就成了完美日记弯道超车的机会。


京东不同价格区间的口红评价人数占比饼图

下面看一看哪个店铺评价人数最多呢,可以用python来完成,代码和前面差不多。我这里使用Tableau来可视化,更方便:

京东商城口红评价人数TOP10店铺

迪奥、圣罗兰、MAC这几家大品牌占据着前三的位置,而完美日记依靠着价格优势占据着2个位置,这说明在消费者心中,大品牌的口红是最为青睐的,毕竟相对于其它品类,比如动辄几千的包包,口红算是性价比高的了。其次就是有价格优势的国产口红,最近几年口红出现了不少“国货之光”,除了物美价廉以外,出发于小众市场的创新或许会令人眼前一亮,比如结合文创的故宫口红,专注国风的花西子口红。


因为商品名称里面经常会出现商品的特点,所以接下来对商品名称进行文本分析,先对字段进行切分,然后绘制词云图,关于词云图之前写过相关的教程,感兴趣的可以看看,限于篇幅这里我就不写代码了:「收藏向」Wordcloud词云图教程,从入门到精通

我将词云图写了个通用代码,基本上将数据和素材放在指定文件夹里就能一键生成想要的词云图,感兴趣可以私信我领取。

如图所示,可以看到口红基本都是当礼物送,词云中“礼物”、“情人节”、“七夕”、“生日”、“套装”、“礼盒”等词汇出现的频率较高,看来我选择口红作为七夕礼物还是很明智的呀,女孩子就喜欢这个。其次就是“保湿”、“滋润”出现的频率比较高,看来涂口红除了美感,消费者也在追求一种健康的生活方式,毕竟当天气干燥时,嘴唇干裂的感觉是比较难受的。词云右上角“女友”、“女士”等词汇也说明了口红还是女性用的比较多,所以李家琦作为男性推广口红反而会令人眼前一亮,最终凭借专业的职业素养成为口红一哥,不得不说李家琦涂口红还是很好看的,不知道未来会不会有更多的男性使用口红呢,感觉男性口红这个市场也是很有潜力。