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

作者: 数据分析不是个事儿 | 来源:发表于2019-04-16 12:40 被阅读59次

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

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

    好项目,正好让大家练手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字眼,蕾丝最高!!!

    最后

    在分析了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的学习也告一段落了。要是学到点啥,看到点啥就点个关注和好看吧~

    相关文章

      网友评论

        本文标题:一次让人脸红心跳的python数据分析

        本文链接:https://www.haomeiwen.com/subject/mqavwqtx.html