#大类销售量、销售额的占比
plt.figure(figsize = (12,12))
#销售量
plt.subplot(2,2,1)
data.groupby('main_type').sale_count.sum().plot.pie(autopct = '%0f%%',title = '各大类销售量占比')
#销售额
plt.subplot(2,2,2)
data.groupby('main_type')['销售额'].sum().plot.pie(autopct = '%0f%%',title = '各大类销售额占比')
#小类销售量、销售额的占比
plt.subplot(2,2,3)
data.groupby('sub_type').sale_count.sum().plot.pie(autopct = '%0f%%',title = '各小类销售量占比')
plt.subplot(2,2,4)
data.groupby('sub_type')['销售额'].sum().plot.pie(autopct = '%0f%%',title = '各小类销售额占比')
plt.tight_layout()
通过观察比较各个类销售量与销售额占比的关系,基本可以判断他们是正相关的。这也是符合常识的。
在大类中,护肤品的销量远胜化妆品以及其他商品。而在小类之中,清洁类的护肤品销量最高,其次是补水类的护肤品。
接下来用seaborn包给出每个店铺各个大类以及各个小类的销量销售额
##为了减少图形复杂度,先去掉总销量为0的店铺,分别为SKII,植村秀,玉兰油
data1 = data.drop(index = data[data['店名'].isin(data.groupby('店名').sale_count.sum()[data.groupby('店名').sale_count.sum() == 0].index)].index)
data1['店名'].value_counts()
import seaborn as sns
plt.figure(figsize = (16,12))
plt.subplot(2,1,1)
plt.tick_params(labelsize = 10)
sns.barplot(x = '店名', y = 'sale_count', hue = 'main_type' ,estimator=np.sum, data = data1 , ci = 0) ####estimator参数表示取该列的什么值
plt.title('各店铺中各大类的销售量',fontsize = 20)
plt.ylabel('销量',fontsize = 15)
plt.subplot(2,1,2)
plt.tick_params(labelsize = 10)
sns.barplot(x = '店名', y = '销售额', hue = 'main_type' ,estimator=np.sum, data = data1 , ci = 0)
plt.title('各店铺中各大类的销售额',fontsize = 20)
plt.ylabel('销售额',fontsize = 15)
plt.tight_layout()
plt.figure(figsize = (16,12))
plt.subplot(2,1,1)
plt.tick_params(labelsize = 10)
sns.barplot(x = '店名', y = 'sale_count', hue = 'sub_type' ,estimator=np.sum, data = data1 , ci = 0)####estimator参数取该列的什么值
plt.title('各店铺中各小类的销售量',fontsize = 20)
plt.ylabel('销量',fontsize = 15)
plt.subplot(2,1,2)
plt.tick_params(labelsize = 10)
sns.barplot(x = '店名', y = '销售额', hue = 'sub_type' ,estimator=np.sum, data = data1 , ci = 0)
plt.title('各店铺中各小类的销售额',fontsize = 20)
plt.ylabel('销售额',fontsize = 15)
plt.tight_layout()
事实上可以看出相宜本草在面霜、乳液、精华、补水、化妆水、眼部护理以及防晒类中都是销量最高的。美宝莲在口红、眼部彩妆也都是卖的最好的。而妮维雅在清洁类中一骑绝尘。在这里我们就可以用上之前提取出的新特征-是否男性专用。因为清洁类显然是有男性市场的。
关于性别
接下来考虑性别因素,了解各类产品在男性消费者中的销量占比
plt.figure(figsize = (16,16))
#男士专用中各类销量占比
plt.subplot(2,2,1)
data.loc[data['是否男士专用'] == '是'].groupby('sub_type').sale_count.sum().plot.pie(autopct = '%0f%%',title = '男士各小类销售量占比', pctdistance=0.8)
#非男士专用中各类销量占比
plt.subplot(2,2,2)
data.loc[data['是否男士专用'] == '否'].groupby('sub_type').sale_count.sum().plot.pie(autopct = '%0f%%',title = '非男士专用各小类销售量占比', pctdistance=0.8)
#男士专用销售量占总销售量
plt.subplot(2,2,3)
data.groupby('是否男士专用').sale_count.sum().plot.pie(autopct = '%0f%%',title = '男士专用销售量占比', pctdistance=0.8)
#男士专用销售额占总销售额
plt.subplot(2,2,4)
data.groupby('是否男士专用')['销售额'].sum().plot.pie(autopct = '%0f%%',title = '男士专用销售额占比', pctdistance=0.8)
plt.tight_layout()
男士的销量基本来自于清洁类,其次是补水类。而这两类正是总销量中占比最高的两类。
非男士专用中,补水类成为了销量最高的类别,清洁类降到了第二位。
男士专用的销量以及销售额占比都比较低。
显然,在没有区分性别的情况下,由于清洁类是男性女性通用,所以占得销量最高是理所应当的。而非男士专用中,女性消费者较多,所以补水类一跃成为最高销量。尽管就整个销量而言,男士专用的占比不高,但是这也说明男性市场是一个值得发展急需拓宽的点。如果增加更多关于男性护肤品的推广,有可能会吸引更多的男性消费者从而增加销量。所以进一步分析,各个店铺的男性专用商品的销量。
male_data = data1.loc[data['是否男士专用'] == '是']
plt.figure(figsize = (12,8))
sns.barplot(x = '店名', y = 'sale_count', hue = 'main_type' ,estimator=np.sum, data = male_data , ci = 0)
plt.title('各店男士专用商品销量',fontsize = 15)
plt.ylabel('销量',fontsize = 10)
plt.tight_layout()
男士专用护肤品的销售量前三名分别是:妮维雅,欧莱雅,相宜本草。所有男士商品主要销量来自于护肤品。对于其他类这里暂时不进行分析,因为其产生大概率是basic_data也就是我们的分类集不完善导致的。观察一下男用化妆品的数据,如下:
male_data[male_data.main_type == '化妆品'].head()
plt.figure(figsize = (16,12))
plt.subplot(2,2,1)
plt.tick_params(labelsize = 15)
male_data.groupby('店名').sale_count.sum().sort_values(ascending = True).plot.bar()
plt.title('各店男士专用商品销量', fontsize = 15)
plt.ylabel('销量', fontsize = 15)
plt.subplot(2,2,2)
plt.tick_params(labelsize = 15)
male_data.groupby('店名')['销售额'].sum().sort_values(ascending = True).plot.bar()
plt.title('各店男士专用商品销售额', fontsize = 15)
plt.ylabel('销售额', fontsize = 15)
###非男性专用
fmale_data = data1.loc[data['是否男士专用'] == '否']
plt.subplot(2,2,3)
plt.tick_params(labelsize = 15)
fmale_data.groupby('店名').sale_count.sum().sort_values(ascending = True).plot.bar()
plt.title('各店非男士专用商品销量', fontsize = 15)
plt.ylabel('销售量', fontsize = 15)
plt.subplot(2,2,4)
plt.tick_params(labelsize = 15)
fmale_data.groupby('店名')['销售额'].sum().sort_values(ascending = True).plot.bar()
plt.title('各店非男士专用商品销售额', fontsize = 15)
plt.ylabel('销售额', fontsize = 15)
plt.tight_layout()
from datetime import datetime
plt.figure(figsize = (12,12))
sale_day=data.groupby('update_time').sale_count.sum()
sale_day.index = [datetime.strptime(i, '%Y/%m/%d') for i in sale_day.index] ###将update_time转换为datetime数据否则plot函数无法识别排序
####每天的销量
plt.subplot(2,1,1)
plt.tick_params(labelsize = 15)
sale_day.plot()
plt.grid(linestyle = '-.')
plt.title('每日销售量',fontsize = 15)
plt.ylabel('销量', fontsize =10)
###每天的销售额
r_day=data.groupby('update_time')['销售额'].sum()
r_day.index = [datetime.strptime(i, '%Y/%m/%d') for i in r_day.index]
plt.subplot(2,1,2)
plt.tick_params(labelsize = 15)
r_day.plot()
plt.grid(linestyle = '-.')
plt.title('每日销售额',fontsize = 15)
plt.ylabel('销售额', fontsize =15)
plt.tight_layout()
对评论数进行分析
plt.figure(figsize = (16,6))
plt.subplot(1,2,1)
data.groupby('店名').comment_count.sum().sort_values().plot.bar()
plt.title('每个店铺总评论数')
plt.subplot(1,2,2)
(data1.groupby('店名').sale_count.sum()/data1.groupby('店名').comment_count.sum()).sort_values().plot.bar()
plt.title('每个店铺平均多少单一条评论')
plt.tight_layout()
总结分析
平均每单价格低的店铺的总销量、销售额都高于均价更高的。价格便宜是消费者考虑的最多的一个点。销量最高的相宜本草的均价就很低,同时它的销售额也是最高额的。而均价较高的类中,只有雅诗兰黛的销售额相对客观。对于一些中高端商品,可以考虑适当降价来吸引更多消费者。而一些低端商品可以考虑多推广来提高知名度获取销量。
所有大类中,护肤品类的销量最高,其次是化妆品类。所有小类中,清洁类、补水类分别是销量的前二名。
男士专用的商品中,护肤品销量最高,而化妆品类中主要是唇膏。并且妮维雅占据了男士专用的大部分市场。
平均每多少单一条评论这个指标,相宜本草过高了,是评论数最多的悦诗风吟的4倍。可能存在刷单等现象。
不同的日期销量也不同。在双11销量反而有一个剧烈的下滑。原因可能是预热活动导致了消费者提前消费,并且由于消费者往往会主观的考虑到双11当天的网络、平台会卡顿,一般都会提前下单来避免“高峰”,虽然这个高峰并不存在。而在双11之后销量又有了小幅度的增长,可能跟商家的持续优惠等各种活动有关。所以商家应该把目光放在双11之前,尽量的吸引消费者消费来增加销量,不要局限于双11当天。在双11之后可以通过类似双11购物返满减卷,来刺激二次消费。
数据分析python数据挖掘
发布于2025-05-07著作权归作者所有