小编给大家分享一下Python数据分析内衣销售哪家强的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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

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

研究亚马逊上Top100的细分品类——女(qing)式(qu)内衣的销售情况。

我的分析分为核心的三步:

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

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

·店家:这不就是竞争对手吗?分析其爆品情况,保留店家链接,后续可针对性挖掘分析

·价格:分析爆品价格区间,对商品定价、切分市场有帮助

·上架时间:新品?爆了多久?

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

·尺寸、颜色:也是非常有价值的参考数据,但在实际爬取过程中遇到问题,后面会提到

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

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

文末分享本次研究的所有代码和数据,是不是迫不及待想要看过程了?

如何爬取内衣数据

爬取过程分为三步

1、链接数据库,安排header、代理信息

#0、创建数据库client=pymongo.MongoClient('localhost',27017)Amazon=client['Amazon']item_info_M=Amazon['item_info_M']#0、反爬措施headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/72.0.3626.109Safari/537.36'}#http://cn-proxy.com/proxy_list=['http://117.177.250.151:8081','http://111.85.219.250:3129','http://122.70.183.138:8118',]proxy_ip=random.choice(proxy_list)#随机获取代理ipproxies={'http':proxy_ip}

2、爬取商品列表页和详情页

核心事项:

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

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

defget_item_info_2(item_url,data):wb_data=requests.get(item_url,headers=headers,proxies=proxies)soup=BeautifulSoup(wb_data.text,'lxml')#获取price(需要判断)price=soup.select('#priceblock_ourprice')data['price']=price[0].textifpriceelseNone#获取star和reviews(需要判断)star=soup.select('div>div>span>span>span>a>i>span.a-icon-alt')ifstar:data['star']=star[0].text.split('')[0]data['reviews']=soup.select('#reviews-medley-footer>div.a-row.a-spacing-large>a')[0].text.split('')[2]data['Readreviewsthatmention']=list(i.text.strip('\n').strip()foriinsoup.select('span.cr-lighthouse-term'))else:data['star']=Nonedata['reviews']=Nonedata['Readreviewsthatmention']=Nonedata['Date_first_listed_on_Amazon']=soup.select('#detailBullets_feature_div>ul>li>span>span:nth-child(2)')[-1].text#获取reviews_link(需要判断)reviews_link=soup.select('#reviews-medley-footer>div.a-row.a-spacing-large>a')ifreviews_link:data['reviews_link']='https://www.amazon.com'+reviews_link[0].get('href')else:data['reviews_link']=None#获取store和store_link(需要判断)store=soup.select('#bylineInfo')ifstore:data['store']=store[0].textdata['store_link']='https://www.amazon.com'+soup.select('#bylineInfo')[0].get('href')else:data['store']=Nonedata['store_link']=Noneitem_info_M.insert_one(data)#存入MongoDB数据库print(data)#3、将商品详情写入csv文件foriinrange(100):get_item_info_2(item_links[i],item_info[i])print('已写入第{}个商品'.format(i+1))

3、爬取评论

核心事项:

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

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

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

4)存储到数据库和csv文件中

csv_file=csv.reader(open('C:/Users/zbd/Desktop/3.csv','r'))reviews_datalst=[]foriincsv_file:reviews_data={'Rank':i[10],'item_name':i[8],'reviews':i[6],'reviews_link':i[5]}reviews_datalst.append(reviews_data)delreviews_datalst[0]#删除表头#print(reviews_datalst)reviews_links=list(i['reviews_link']foriinreviews_datalst)#将评论详情页链接存储到列表reviews_links

4、爬取size和color数据

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

headers=['_id','item_name','customer_name','star','review_date','review_title','review_text']withopen('C:/Users/zbd/Desktop/4.csv','w',newline='',encoding='utf-8')asf:f_csv=csv.DictWriter(f,headers)f_csv.writeheader()f_csv.writerows(all_reviews)print('写入完毕!')

爬取完毕后,对数据进行基本的清洗,包括去空值、统一数据格式等,便可开始做分析。

歪果内衣哪家强?

① 不同商家的星级排名

df_star=df['star'].sort_values(ascending=False)df_star.plot(kind='bar',color='yellow',grid=True,alpha=0.5,ax=axes[0],width=0.7,ylim=[3,5],title='不同商家的星级排名')axes[0].axhline(df_star.mean(),label='平均星级%.2f分'%df_star.mean(),color='r',linestyle='--',)axes[0].legend(loc=1)

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

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

·倒数第一N-pearI只有3.2分

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

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

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

df_reviews_mean=df['reviews_mean'].sort_values(ascending=False)df_reviews_mean.plot(kind='bar',color='blue',grid=True,alpha=0.5,ax=axes[1],width=0.7,title='不同商家的平均评论数排名')axes[1].axhline(df_reviews_mean.mean(),label='平均评论数%i条'%df_reviews_mean.mean(),color='r',linestyle='--',)axes[1].legend(loc=1)

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

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

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

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

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

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

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

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

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

avg_price=(d-c)/2avg_price.name='avg_price'max_price=avg_price.copy()max_price.name='max_price'df_price=pd.concat([c,avg_price,max_price,df_re['price_mean']],axis=1)df_price=df_price.sort_values(['price_mean'],ascending=False)df_price.drop(['price_mean'],axis=1,inplace=True)df_price.plot(kind='bar',grid=True,alpha=0.5,ax=axes[2],width=0.7,stacked=True,color=['white','red','blue'],ylim=[0,55],title='不同商家的价格区间')

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

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

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

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

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

④商家的商品数量饼图

df_per=df_re['item_num']fig,axes=plt.subplots(1,1,figsize=(8,8))plt.axis('equal')#保证长宽相等plt.pie(df_per,labels=df_per.index,autopct='%.2f%%',pctdistance=1.05,#shadow=True,startangle=0,radius=1.5,colors=colors,frame=False)

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

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

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

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

⑤不同商家的加权分排名

df_nor=pd.concat([df_re['star_nor'],df_re['reviews_mean_nor'],df_re['price_mean_nor'],df_re['item_num_nor']],axis=1)df_nor['nor_total']=df_re['star_nor']+df_re['reviews_mean_nor']+df_re['price_mean_nor']+df_re['item_num_nor']df_nor=df_nor.sort_values(['nor_total'],ascending=False)df_nor.drop(['nor_total'],axis=1,inplace=True)df_nor.plot(kind='bar',grid=True,alpha=0.5,ax=axes[3],width=0.7,stacked=True,title='不同商家的加权分排名')

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

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

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

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

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

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

口碑最差的N-pearI,能搜到的商品也最少,不过图很劲爆……

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

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

x轴为商家的商品均价,y轴为商家的星级,点大小为商品数量,商品数量越大,点越大,点颜色为评论均值,评论均值越大,颜色越深红。

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

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

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

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

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

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

·追求性价比,可选择Avidlove,而且商品多,任君挑选 (图中圆圈最大的浅红色商家);

·追求高端,可选择ELOVER,它贵有它的道理 (图中最左侧且落在左上象限的商家);

·追求大众,可选择Garmol,评论数最多,而且好评居多 (图中颜色最红的商家)

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

⑦词频分析

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

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

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

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

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

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

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

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

可以明显看出:

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、拓展&思考:

用python做一篇正经的数据分析不仅需要python基本技巧,还需要强大的数据清洗知识、数据库知识、电商行业理解以及熟练的文字表述能力,作为数据分析师,要学习的还有很多,尤其是对项目的练习。

以上是Python数据分析内衣销售哪家强案例的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!