前些天,看到某公司对数据分析师的招聘要求有一条:
分析客户人群的购买习惯,并通过客户购买行为做出相关数据分析。
好项目,正好让大家练手Python,于是决定研究亚马逊上Top100的细分品类——女式内衣!!!的销售情况。
这个话题,遐想空间很大,各位老司机坐稳咯!
分析分为三步:数据采集、数据清理、可视化分析
第一步,采集数据。没有数据怎么办,用万能的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、爬取商品排名和详情页链接
需要爬取的具体字段:排名(Rank),商品名(item_name),商品详情页链接(item_link)、商品图片链接(img_src)。
2、在商品详情页爬取更多商品信息
店家名、店家链接、商品名、价格
星级、评论标签
核心:
构建函数来获取单个商品的详细信息;
利用for循环,遍历商品详情页链接列表,来获取每个商品的详细信息
3、爬取评论
评论内容,星级
核心:
从上一步的csv文件中,读取Rank , item_name , reviews , reviews_link字段
构建函数读取每个商品的所有评论
利用for循环,获取所有商品的所有评论
存储到数据库和csv文件中
4、爬取size和color数据
和第三步基本一样,代码基本一样,主要在于要确认每页评论的size&color个数。
数据清洗和预处理
1、读取、清洗数据
从csv文件读取100个商品的数据,筛选出所需要的字段,进行数据清洗。
这里注意,部分读取的数据,看似是数值,实际是字符,因此需要进行类型转换(如price拆分后,还需要转为float型)
需要参与数值计算的NaN,使用平均值进行替换。
2、以商家维度处理数据
获取所需的数据:商家的星级、评论数总和、评论数均值、最低价均值、最高价均值、价格均值、商品数量、占比。针对星级、评论数均值、价格均值、商品数量做标准化处理,并计算加权分。
分析:歪果情趣内衣哪家强
1、不同商家的星级排名
平均星级达4.15分,高于平均分的商家超过一半(17/32)
Top1的LALAVAVA高达4.9分,紧随其后也有5家达到4.5分。
倒数第一N-pearI只有3.2分
让我看看LALAVAVA长什么样。亚马逊上的商品,看上去就是普通泳衣,米国人还是很保守的嘛~
但评分高真的就说明产品好吗?不如来看看评论数吧。
②不同商家的平均评论数排名
首先平均评论数只有193条,而且高于平均线的只有不到三成(12/32),想想淘宝动辄上万,我们的人口优势让米国人羡慕呀;
再来看星级Top1的LALAVAVA,评论数少得可怜,那么对其商品真实质量就要存疑了;
而星级倒数的N-pear I,同样评论数很少,那大概率其商品其实不咋地;
反观评论数Top1的Garmol,其星级评价4.4,口碑佳评论也多,看来是不错的商品;
紧随其后的几家,其星级分数就低于平均分了
那么,亚马逊的星级评价难道就只受评论数的几颗星比例影响吗?我查阅了网上的一些资料,发现亚马逊评价星级评定的三个重要因素:评论距离现在的时间,评论被买家投票采纳数,评论是否有verified purchase标志(意指真实买家)。此外,评论的字符数,被点击次数等因素也可能会对评论星级有影响。
看来,亚马逊对评论的监控和管理是非常严格而复杂的!当然,最重要的还是看看评论第一名的Garmol长什么样:
比上边的泳衣更点题了,大家说好才是真的好,very sexy!
2、不同商家的价格区间排名(按均价)
从图上来看,明显ELOVER锁定的是高端市场,定价区间在49刀左右;相反,Goddessvan定价仅0.39刀,还只有一款,猜测可能是亏本冲量,提高商家曝光,抢夺低端市场
从均价来看,基本分布在10-20刀间,说明这是情趣内衣市场的主要价格区间;但20-40刀区间居然没有任何商家,可以在这一块深入研究,看能不能找到证据说明该区间是蓝海,有更大的市场潜力
而从每个商家的价格区间来看,大多数都是采取多颜色或款式的策略,一方面为用户提供更多选择,另一方面也体现了商家的上新能力;而仅有少数几家采取了单一爆款的策略
最奢华的ELOVER看上去果然比较女神,缩略图都比别家更用心。
那么,到底哪个商家的策略更靠谱,市场份额更大呢?
3、商家的商品数量饼图
在Top100的商品占比中,Avidlove以28%的巨大优势称霸
而其他商家基本都是个位数的占比,没有很明显的优劣势
Avidlove的内衣是酷酷风的,我喜欢。
单一方面毕竟还是很难衡量哪家商家更优秀,不如综合多个指标来分析吧~
4、不同商家的加权分排名
将星级、平均评论数、商品均价、商品数量进行标准化处理后,因为不好拍定加权的比例,便将4项的归一化结果x10后直接累加得到总分,并制作成条形堆积图。
而每个商家的4项指标的占比,则侧面反映其自身的优劣势。
Avidlove,刚刚的酷酷风内衣,在其他三项中规中矩的情况下,以商品数量优势夺得综合分第一,有种农村包围城市的感觉
Garmol,主要依靠口碑(星级、平均评论数)的优势,夺得了第二名
ELOVER,主要依靠精准切分高端市场,夺得了第三名
N-pearI,没有任何优势,不出意料的光荣垫底
口碑最差的N-pearI,能搜到的商品也最少,不过图很劲爆,emm……然而不是我的菜
粗略来看的话,想要排名靠前,口碑一定不能太差,至少要保持在平均水平及以上!
5、不同商家的星级/价格散点图
用Python做了张散点图,x轴为商家的商品均价,y轴为商家的星级,点大小为商品数量,商品数量越大,点越大,点颜色为评论均值,评论均值越大,颜色越深红。
利用价格均值和星级均值,将图切分为四个象限:
①左上象限:实惠好评的商家
②右上象限:有点贵,但一分钱一分货的商家
③右下象限:贵,但质量不咋地的商家
④左下象限:便宜没好货的商家
所以借助这张散点图,挑商家买东西就容易多啦:
追求性价比,可选择Avidlove,而且商品多,任君挑选 ;
追求高端,可选择ELOVER,它贵有它的道理 ;
追求大众,可选择Garmol,评论数最多,而且好评居多 。
顾客可以根据自己的喜好挑选合适的商家,那么作为商家如何改进自己呢?
6、词频分析
前面在爬取的过程中,同样爬取了评论标签,通过对此进行词频分析,可以发现顾客最关心的依次是:
① 是否合身:size、fit等相关字眼多次出现且排位靠前
② 质量:good quality、well made;soft and comfortable、fabric是对材质的肯定
③ 款式:cute、sexy、like the picture你懂的
④ 价格:cheaply made勉强算价格吧,但更多是对商品质量的怀疑
⑤ 口碑:highly recommend,评论的还是非常有参考价值的
评论标签的数量较少,进一步对2.4w条评论进行词频分析,并制作成词云:
快夸我底图选得好!
最直观的,仍然是跟“是否合身”以及质量或款式有关。那么我们就从顾客购买商品的Size&Color继续分析
这里,Size&Color的词频数据存在几点问题:
1、数据量较少,仅有约6000条
2、Size&Color无法较好的区分开,因此一起分析
3、商家的命名规则不同,比如同样是黑色款,有个商家会命名black,而有的可能是style1(所以一些奇怪的数字编号其实是商家的款式编号)
4、有些奇怪的字眼如trim可能是爬虫时爬错了或者导出csv时的格式错乱
可以明显看出:
Size方面:large、medium、small肯定均有涵盖,但另外还有xlarge、xxlarge、xxxlarge,亚马逊主要是欧美顾客,可能体型相对较大,所以商家应该多研发以及备货针对体型较大的顾客的商品。
Color方面:非常直观:Black > red > blue > green > white > purple....所以黑色、红色永远不会错;绿色是出乎我意料的,商家也可以大胆尝试。
Style方面:词频中出现trim、lace字眼,蕾丝最高!!!
关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货
每天晚上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的学习也告一段落了。要是学到点啥,看到点啥就点个关注和好看吧~