一次让人脸红心跳的python数据分析

  1. 云栖社区>
  2. 博客>
  3. 正文

一次让人脸红心跳的python数据分析

诸葛青云h 2019-04-14 07:16:39 浏览704
展开阅读全文

前些天,看到某公司对数据分析师的招聘要求有一条:

分析客户人群的购买习惯,并通过客户购买行为做出相关数据分析。

好项目,正好让大家练手Python,于是决定研究亚马逊上Top100的细分品类——女式内衣!!!的销售情况。

这个话题,遐想空间很大,各位老司机坐稳咯!

strip

分析分为三步:数据采集、数据清理、可视化分析

第一步,采集数据。没有数据怎么办,用万能的Python爬嘛。

爬取商品排名和详情页链接,需要的字段为:排名、商品名、详情页链接。

爬取商品详情,需要的信息为:

店家:也就是竞争对手。分析其爆品情况,保留店家链接,后续可针对性挖掘分析;

价格:分析爆品价格区间,对商品定价有帮助;

上架时间:什么时候上的?爆了多久;

星级、评论数、评论标签、所有评论链接:爬取评论内容,来分析爆品的优劣势;

尺寸、颜色:嗯哼?也是非常有价值的参考数据;

图片链接:难道你不想看看商品长啥样吗?

第三步,数据转化为可视化图表,并做分析。

是不是迫不及待想要看过程了,来吧~

如何爬取内衣数据

Python爬数据很简单,我个人总结大致就 3点:

请求数据

进行数据处理

写数据

第一点 请求的数据

会有几种可能:

1、很简单的html页面,就直接requests就可以请求成功;

2、js渲染的页面 ,这种页面超多,requests请求一堆js数据;

3、需要登录才能获取,至今登录我都是用的cookie 请求登录,但应该有更好的办法;

4、json数据;

第二点 数据处理

会有几种可能:

1、请求的数据是简单的html结构页面——直接BS4解析就好了

2、请求的数据是json——导入json模块进行解析

3、请求的数据是简单的js渲染的html页面

遇到这种页面通过抓包或者简单的在网站上审查请求,然后找的你想要的那部分数据,如果是js渲染的html,其实就是js拼写的html,只要把其他无用的数据匹配掉用正则找到剩下想要的html文本就好了 。然后BS4解析。

第三点 写数据

open方法进行文件打开 里面的参数进行文件格式设置,读写文件、编码格式操作

with open("XXX.xxx","a",encoding="utf-8") as f :

f.write('''写入的数据''')

文件格式我用过的就是txt、csv 、xml 大部分文本格式都支持的。

a--是创建文件 每次写都是重新创建

w--是追加

a--是读数据

encoding="utf-8"这句话 不加encoding= 在windows系统下会报编码错误,linux不会。

然后就是数据量太大,写入到数据库数据库就用sqlite,记得引入模块 import sqlite3,就是创建数据表。

好了,不啰嗦,开始爬数据。

爬取过程分为三步,完整代码见文末,不用谢

1、爬取商品排名和详情页链接

1240

需要爬取的具体字段:排名(Rank),商品名(item_name),商品详情页链接(item_link)、商品图片链接(img_src)。

2、在商品详情页爬取更多商品信息

1240

店家名、店家链接、商品名、价格

1240

星级、评论标签

核心:

构建函数来获取单个商品的详细信息;

利用for循环,遍历商品详情页链接列表,来获取每个商品的详细信息

3、爬取评论

1240

评论内容,星级

核心:

从上一步的csv文件中,读取Rank , item_name , reviews , reviews_link字段

构建函数读取每个商品的所有评论

利用for循环,获取所有商品的所有评论

存储到数据库和csv文件中

4、爬取size和color数据

和第三步基本一样,代码基本一样,主要在于要确认每页评论的size&color个数。

数据清洗和预处理

1、读取、清洗数据

从csv文件读取100个商品的数据,筛选出所需要的字段,进行数据清洗。

这里注意,部分读取的数据,看似是数值,实际是字符,因此需要进行类型转换(如price拆分后,还需要转为float型)

需要参与数值计算的NaN,使用平均值进行替换。

1240

2、以商家维度处理数据

获取所需的数据:商家的星级、评论数总和、评论数均值、最低价均值、最高价均值、价格均值、商品数量、占比。针对星级、评论数均值、价格均值、商品数量做标准化处理,并计算加权分。

1240

分析:歪果情趣内衣哪家强

1、不同商家的星级排名

1240

平均星级达4.15分,高于平均分的商家超过一半(17/32)

Top1的LALAVAVA高达4.9分,紧随其后也有5家达到4.5分。

倒数第一N-pearI只有3.2分

让我看看LALAVAVA长什么样。亚马逊上的商品,看上去就是普通泳衣,米国人还是很保守的嘛~

1240

但评分高真的就说明产品好吗?不如来看看评论数吧。

②不同商家的平均评论数排名

1240

首先平均评论数只有193条,而且高于平均线的只有不到三成(12/32),想想淘宝动辄上万,我们的人口优势让米国人羡慕呀;

再来看星级Top1的LALAVAVA,评论数少得可怜,那么对其商品真实质量就要存疑了;

而星级倒数的N-pear I,同样评论数很少,那大概率其商品其实不咋地;

反观评论数Top1的Garmol,其星级评价4.4,口碑佳评论也多,看来是不错的商品;

紧随其后的几家,其星级分数就低于平均分了

那么,亚马逊的星级评价难道就只受评论数的几颗星比例影响吗?我查阅了网上的一些资料,发现亚马逊评价星级评定的三个重要因素:评论距离现在的时间,评论被买家投票采纳数,评论是否有verified purchase标志(意指真实买家)。此外,评论的字符数,被点击次数等因素也可能会对评论星级有影响。

看来,亚马逊对评论的监控和管理是非常严格而复杂的!当然,最重要的还是看看评论第一名的Garmol长什么样:

1240

比上边的泳衣更点题了,大家说好才是真的好,very sexy!

2、不同商家的价格区间排名(按均价)

1240

从图上来看,明显ELOVER锁定的是高端市场,定价区间在49刀左右;相反,Goddessvan定价仅0.39刀,还只有一款,猜测可能是亏本冲量,提高商家曝光,抢夺低端市场

从均价来看,基本分布在10-20刀间,说明这是情趣内衣市场的主要价格区间;但20-40刀区间居然没有任何商家,可以在这一块深入研究,看能不能找到证据说明该区间是蓝海,有更大的市场潜力

而从每个商家的价格区间来看,大多数都是采取多颜色或款式的策略,一方面为用户提供更多选择,另一方面也体现了商家的上新能力;而仅有少数几家采取了单一爆款的策略

最奢华的ELOVER看上去果然比较女神,缩略图都比别家更用心。

1240

那么,到底哪个商家的策略更靠谱,市场份额更大呢?

3、商家的商品数量饼图

1240

在Top100的商品占比中,Avidlove以28%的巨大优势称霸

而其他商家基本都是个位数的占比,没有很明显的优劣势

Avidlove的内衣是酷酷风的,我喜欢。

1240

单一方面毕竟还是很难衡量哪家商家更优秀,不如综合多个指标来分析吧~

4、不同商家的加权分排名

1240

将星级、平均评论数、商品均价、商品数量进行标准化处理后,因为不好拍定加权的比例,便将4项的归一化结果x10后直接累加得到总分,并制作成条形堆积图。

而每个商家的4项指标的占比,则侧面反映其自身的优劣势。

Avidlove,刚刚的酷酷风内衣,在其他三项中规中矩的情况下,以商品数量优势夺得综合分第一,有种农村包围城市的感觉

Garmol,主要依靠口碑(星级、平均评论数)的优势,夺得了第二名

ELOVER,主要依靠精准切分高端市场,夺得了第三名

N-pearI,没有任何优势,不出意料的光荣垫底

口碑最差的N-pearI,能搜到的商品也最少,不过图很劲爆,emm……然而不是我的菜

1240

粗略来看的话,想要排名靠前,口碑一定不能太差,至少要保持在平均水平及以上!

5、不同商家的星级/价格散点图

用Python做了张散点图,x轴为商家的商品均价,y轴为商家的星级,点大小为商品数量,商品数量越大,点越大,点颜色为评论均值,评论均值越大,颜色越深红。

1240

利用价格均值和星级均值,将图切分为四个象限:

①左上象限:实惠好评的商家

②右上象限:有点贵,但一分钱一分货的商家

③右下象限:贵,但质量不咋地的商家

④左下象限:便宜没好货的商家

所以借助这张散点图,挑商家买东西就容易多啦:

追求性价比,可选择Avidlove,而且商品多,任君挑选 ;

追求高端,可选择ELOVER,它贵有它的道理 ;

追求大众,可选择Garmol,评论数最多,而且好评居多 。

顾客可以根据自己的喜好挑选合适的商家,那么作为商家如何改进自己呢?

6、词频分析

1240

前面在爬取的过程中,同样爬取了评论标签,通过对此进行词频分析,可以发现顾客最关心的依次是:

① 是否合身:size、fit等相关字眼多次出现且排位靠前

② 质量:good quality、well made;soft and comfortable、fabric是对材质的肯定

③ 款式:cute、sexy、like the picture你懂的

④ 价格:cheaply made勉强算价格吧,但更多是对商品质量的怀疑

⑤ 口碑:highly recommend,评论的还是非常有参考价值的

评论标签的数量较少,进一步对2.4w条评论进行词频分析,并制作成词云:

1240

快夸我底图选得好!

最直观的,仍然是跟“是否合身”以及质量或款式有关。那么我们就从顾客购买商品的Size&Color继续分析

这里,Size&Color的词频数据存在几点问题:

1、数据量较少,仅有约6000条

2、Size&Color无法较好的区分开,因此一起分析

3、商家的命名规则不同,比如同样是黑色款,有个商家会命名black,而有的可能是style1(所以一些奇怪的数字编号其实是商家的款式编号)

4、有些奇怪的字眼如trim可能是爬虫时爬错了或者导出csv时的格式错乱

1240

可以明显看出:

Size方面:large、medium、small肯定均有涵盖,但另外还有xlarge、xxlarge、xxxlarge,亚马逊主要是欧美顾客,可能体型相对较大,所以商家应该多研发以及备货针对体型较大的顾客的商品。

Color方面:非常直观:Black > red > blue > green > white > purple....所以黑色、红色永远不会错;绿色是出乎我意料的,商家也可以大胆尝试。

Style方面:词频中出现trim、lace字眼,蕾丝最高!!!


1240


关于怎么快速学python,不管你是小白还是大牛,小编我都欢迎,不定期分享干货

每天晚上20:00都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实


最后

在分析了Top100的商品信息和2.4w条评论后,作为一篇正经的python数据分析研究,我们来总结一下亚马逊情趣内衣产品和销售策略:

1、一定要注意的竞品

Garmol、ELOVER、Avidlove分别在口碑、定价、产品数量三个方向有其核心优势,是需要重点研究的竞争对手。

2、口碑很重要

Review和星级是影响口碑的重要因素,需要深入研究其算法机制并制定针对性的营销策略

Review和星级有基础要求

平均星级达4.15分,高于平均分的商家超过一半

平均评论数只有193条,高于平均线的商家约三成

Review相对淘宝评论较少,亚马逊的算法复杂且惩罚力度大,因此Review重精胜于重多

3、定价策略

主流市场竞争激烈,价格多集中在10-20刀间

高端市场有切入机会,目前仅ELOVER一家,价格在40-55刀间

低端市场价值不大,利润空间小,为了提高曝光或铺量可考虑,但不利于以后冲击中高端市场

中高端市场机会巨大,20-40刀区间暂无其他商家,有巨大的市场潜力

4、产品策略

应结合目标市场和定价,提高研发和上新能力,先多产品试错,再尝试单一爆款巩固市场

内衣尺寸:合身最重要,需贴合国外顾客的体型,一般large及以上。颜色上:保守可多使用黑色、红色,同时可大胆尝试绿色。款式上:多采用蕾丝装饰

质量和品控是底线

5、拓展&思考:

亚马逊Best Sellers是每小时更新一次,理论上可以每一小时爬一次,看商品的排名变化,是否有新品等 ,可以尝试自动化爬虫;

针对上一点,但商品的评论内容并不是经常更新的,如何去重避免重复爬取?(类似于断点续传功能);

此次也有爬取商品图片的链接,可全部下载;在积累一定的图片素材以后,就可以一定程度上看出颜色、甚至是款式的趋势。

最后,一场脸红又心跳的数据分析就到这里,Python的学习也告一段落了。要是学到点啥,看到点啥就点个关注和好看吧~

网友评论

登录后评论
0/500
评论
诸葛青云h
+ 关注