1、分析背景及目的
隨著生活水平的不斷提高,越來越多的人更加注重自己外在的形象,美妝產(chǎn)品便成為人們保持外在形象的神器。根據(jù)艾瑞網(wǎng)《2021年中國美妝集合店行業(yè)研究報(bào)告》顯示,2018年-2020年化妝品市場(chǎng)規(guī)模逐年升高并預(yù)測(cè)2021年-2023年化妝品市場(chǎng)規(guī)模也是保持逐年升高的狀態(tài),可見美妝市場(chǎng)存在著巨大潛力,加之電商行業(yè)的興起越來越多的人喜歡在線上購買產(chǎn)品,隨之衍生出了幾個(gè)與購物相關(guān)重要的節(jié)日,例如雙十一、雙十二等。本文則是通過對(duì)雙十一美妝銷售數(shù)據(jù)的研究,從店鋪和產(chǎn)品兩個(gè)維度分析雙十一期間的熱銷產(chǎn)品,產(chǎn)品銷量、銷售額等指標(biāo)進(jìn)而了解用戶對(duì)美妝產(chǎn)品的需求,便于商家更好的服務(wù)用戶,提高店鋪收入
#導(dǎo)入數(shù)據(jù)集
import pandas as pd
import numpy as py
import matplotlib.pyplot as plt
df=pd.read_csv('D:\雙十一淘寶美妝數(shù)據(jù).csv')
#查看行列信息
df.info()
數(shù)據(jù)集總共包含7個(gè)字段:update_time(更新時(shí)間)、id(商品
id,具有唯一性)、title(產(chǎn)品名稱詳細(xì)信息)、price(銷售價(jià)格)、sale_count(銷量)、comment_count(評(píng)論數(shù)量)、店名,共計(jì)27598條數(shù)據(jù),數(shù)據(jù)集時(shí)間范圍是2016.11.5-2016.11.14
2、分析思路與提出問題
2.1 分析思路
2.2 提出問題
不同種類的銷量、銷售額情況如何?
不同種類下的不同產(chǎn)品銷量、銷售額、單價(jià)的關(guān)系?
銷量隨著時(shí)間的變化有什么規(guī)律?
不同商品id的評(píng)論數(shù)與銷量的關(guān)系?
不同店鋪的銷售額和銷量情況如何?
用戶喜歡在銷量TOP5的店鋪購買產(chǎn)品TOP5是什么?
3、數(shù)據(jù)清洗
3.1 列名重命名
本數(shù)據(jù)集不需要對(duì)列名進(jìn)行重命名
3.2 隱藏子集
本數(shù)據(jù)集不需要隱藏子集
3.3 刪除重復(fù)值
本數(shù)據(jù)集不需要?jiǎng)h除重復(fù)值
3.4 缺失值處理
# 查看缺失值
df.isnull().sum()
字段sale_count、comment_count各有2354處缺失,但由于不會(huì)對(duì)數(shù)據(jù)分析產(chǎn)生太大影響,故先不做處理
3.5 數(shù)據(jù)一致化
(1)將數(shù)據(jù)格式一致化
# 查看數(shù)據(jù)類型
df.dtypes
從查詢結(jié)果看,update_time字段應(yīng)該為日期格式
# update_time字段轉(zhuǎn)換為日期格式
df['update_time']=pd.to_datetime(df['update_time'])
# 查看數(shù)據(jù)類型df.types
(2)數(shù)據(jù)提取字段title將產(chǎn)品類別以及產(chǎn)品提取出來,新增main_cagetory,product兩個(gè)字段;對(duì)產(chǎn)品價(jià)格進(jìn)行價(jià)格區(qū)間分類同時(shí)新增price_scale字段;新增total sales字段
#對(duì)price字段進(jìn)行分類
def price_scale_transform(pricevalue):
price_scale_list=[]
for value in pricevalue :
if 0<=value <100 :
t=('[0-100)')
elif 100<=value<200:
t=('[100-200)')
elif 200<=value<300:
t=('[200-300)')
elif 300<=value<400:
t=('[300-400)')
elif 400<=value<500:
t=('[400-500)')
elif 500<=value<600:
t=('[500-600)')
elif 600<=value<700:
t=('[600-700)')
elif 700<=value<800:
t=('[700-800)')
elif 800<=value<900:
t=('[800-900)')
elif 900<=value<1000:
t=('[900-1000)')
elif 1000<=value<2500:
t=('[1000-2500)')
elif 2500<=value<5000:
t=('[2500-5000)')
else:
t=('5000以上')
price_scale_list.append(t)
price_scale=pd.Series(price_scale_list)
return price_scale
pricevalues=df['price']
s=price_scale_transform(pricevalues)
df['Price_scale']=s.values
# 對(duì)title字段提取產(chǎn)品類別以及產(chǎn)品
main_cagetory=[]
product=[]
for value in df.title:
if any(kw in value for kw in ['爽膚水','化妝水','柔膚水','柔膚液','精粹水','亮膚水','潤膚水','保濕水','菁華水','凝露','補(bǔ)水露','修護(hù)露']):
t='化妝水'
s='護(hù)膚品'
elif any(kw in value for kw in ['美白乳','潤膚乳','亮膚乳','菁華乳','修護(hù)乳','凝液','乳液','保濕精華乳']):
t='乳液'
s='護(hù)膚品'
elif any(kw in value for kw in ['眼部精華露']):
t='眼部精華'
s='護(hù)膚品'
elif any(kw in value for kw in ['眼霜']):
t='眼霜'
s='護(hù)膚品'
elif any(kw in value for kw in ['洗面','潔面','潔顏','洗顏','去角質(zhì)','磨砂','卸妝']):
t='潔面產(chǎn)品'
s='護(hù)膚品'
elif any(kw in value for kw in ['眼膜']):
t='眼膜'
s='護(hù)膚品'
elif any(kw in value for kw in ['面膜']):
t='面膜'
s='護(hù)膚品'
elif any(kw in value for kw in ['舒緩噴霧','防曬噴霧','保濕噴霧','噴霧']):
t='噴霧'
s='護(hù)膚品'
elif any(kw in value for kw in ['面霜','日霜','晚霜','凝霜','滋潤霜','柔膚霜','日間霜','保濕霜','修護(hù)霜','修護(hù)特潤霜']):
t='面霜'
s='護(hù)膚品'
elif any(kw in value for kw in ['防曬霜','防曬乳']):
t='防曬霜'
s='護(hù)膚品'
elif any(kw in value for kw in ['精華液','精華水','精華露']):
t='精華'
s='護(hù)膚品'
elif any(kw in value for kw in ['口紅','唇釉','唇彩','唇膏']):
t='口紅'
s='彩妝'
elif any(kw in value for kw in ['粉底液','粉霜','粉底膏','粉底霜']):
t='粉底'
s='彩妝'
elif any(kw in value for kw in ['粉餅']):
t='粉餅'
s='彩妝'
elif any(kw in value for kw in ['散粉','蜜粉','定妝粉']):
t='定妝粉'
s='彩妝'
elif any(kw in value for kw in ['氣墊']):
t='氣墊'
s='彩妝'
elif any(kw in value for kw in ['眉粉']):
t='眉粉'
s='彩妝'
elif any(kw in value for kw in ['染眉膏']):
t='染眉膏'
s='彩妝'
elif any(kw in value for kw in ['眼線']):
t='眼線'
s='彩妝'
elif any(kw in value for kw in ['眼影']):
t='眼影'
s='彩妝'
elif any(kw in value for kw in ['睫毛膏']):
t='睫毛膏'
s='彩妝'
elif any(kw in value for kw in ['鼻影']):
t='鼻影'
s='彩妝'
elif any(kw in value for kw in ['高光']):
t='高光'
s='彩妝'
elif any(kw in value for kw in ['修容粉']):
t='修容粉'
s='彩妝'
elif any(kw in value for kw in ['腮紅']):
t='腮紅'
s='彩妝'
elif any(kw in value for kw in ['BB霜']):
t='BB霜'
s='彩妝'
else:
t='其它'
s='其它'
main_cagetory.append(s)
product.append(t)
df['main_cagetory']=main_cagetory
df['product']=product
#新增銷售額字段total_sales
df['total_sales']=df['price']*df['sale_count']
3.6 異常值處理
可以采用Turkey's test方法識(shí)別異常值最小四分位Q1.最大四分位Q3.中位數(shù)Q2.異常值的范圍為小于最小估計(jì)值Q1-K*(Q3-Q1)和大于最大估計(jì)值Q3+K*(Q3-Q1),本數(shù)據(jù)集則不需要進(jìn)行異常值識(shí)別和處理
四、數(shù)據(jù)可視化
4.1產(chǎn)品
4.1.1 不同種類的銷售額和銷量
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
figure=plt.figure(figsize=(12.8))
data1=df.groupby(['main_cagetory'])['total_sales'].sum()
data2=df.groupby(['main_cagetory'])['sale_count'].sum()
ax1=figure.add_subplot(1.2.1)
ax1.pie(data1.autopct='%.2f%%',textprops=dict(size=8),labels=data1.index,colors=['gray','lightgreen','limegreen'])
ax1.set_title('不同類別的銷售額',fontsize=12)
ax2=figure.add_subplot(1.2.2)
ax2.pie(data2.autopct='%.2f%%',textprops=dict(size=8),labels=data2.index,colors=['gray','lightgreen','limegreen'])
ax2.set_title('不同類別的銷量',fontsize=12)
plt.show()
如圖護(hù)膚品的銷售額占比56.76%、銷量占比60.34%均都遠(yuǎn)超彩妝的銷售額和銷量,可見護(hù)膚品在美妝中仍占有主導(dǎo)地位(備注:由于對(duì)產(chǎn)品分類不夠詳細(xì),所以導(dǎo)致其它占比較高,這里主要分析護(hù)膚品以及彩妝類的產(chǎn)品)
4.1.2不同種類下的不同產(chǎn)品銷量、銷售額、單價(jià)的關(guān)系?
#護(hù)膚品銷量、銷售額、單價(jià)的關(guān)系
df1=df[df['main_cagetory']=='護(hù)膚品']
df1.groupby(['Price_scale']).agg(hfp_sale_count=('sale_count','sum'),hfp_total_sales=('total_sales','sum')).sort_values(by=['hfp_total_sales'],ascending=False)
從圖表上看[100-200)的銷售額最高但銷量卻不是最高,而[0-100)銷量最高但銷售額不是最高,進(jìn)一步對(duì)價(jià)格區(qū)間為[0-100)的產(chǎn)品分析
#對(duì)護(hù)膚品價(jià)格區(qū)間在[0.100)的產(chǎn)品進(jìn)一步分析
df8=df[(df['main_cagetory']=='護(hù)膚品')&(df['Price_scale']=='[0-100)')]
df8.groupby(['id'])['sale_count'].agg(sale_count8='sum').sort_values(by=['sale_count8'],ascending=False).iloc[0:5.0]
由圖上可知,在區(qū)間[0.100)中,產(chǎn)品id A24304992630的銷量最高,是否 可以考慮將該產(chǎn)品采取組合銷售的方式從而將單價(jià)提高到[100.200)區(qū)間,進(jìn)而提高銷售額
#彩妝銷量、單價(jià)、銷售額之間的關(guān)系
df3=df[df['main_cagetory']=='彩妝']
df3.groupby(['Price_scale']).agg(cz_sale_count=('sale_count','sum'),cz_total_sales=('total_sales','sum')).sort_values(by=['cz_total_sales'],ascending=False)
從圖表上看[100-200)的銷售額最高但銷量卻不是最高,而[0-100)銷量最高但銷售額不是最高。進(jìn)一步對(duì)價(jià)格區(qū)間在[0-100)的產(chǎn)品分析
#對(duì)彩妝價(jià)格區(qū)間[0-100)的產(chǎn)品進(jìn)一步分析
df9=df[(df['main_cagetory']=='彩妝')&(df['Price_scale']=='[0-100)')]
df9.groupby(['id'])['sale_count'].agg(sale_count9='sum').sort_values(by=['sale_count9'],ascending=False).iloc[0:5.0]
由上可知,在區(qū)間[0.100)中,產(chǎn)品id A39876413435的銷量最高,是否 可以考慮將該產(chǎn)品采取組合銷售的方式從而將單價(jià)提高到[100.200)區(qū)間,進(jìn)而提高銷售額
4.1.3產(chǎn)品銷量隨時(shí)間的變化
figure1=plt.figure(figsize=(10.6))
ax3=figure1.add_subplot(1.1.1)
df5=df.groupby(['update_time'])['sale_count'].agg(sale_count='sum')
ax3.set_title('銷量隨時(shí)間的變化情況',fontsize=12)
df5.plot(marker='o',ax=ax3.markersize=4.color='limegreen')
ax3.set_ylabel('銷量')
ax3.set_xlabel('日期')
ax3.set_ylim([0.40000000])
如圖從11.5-11.10的銷量基本保持穩(wěn)定且都在3000萬以上,而在11.11當(dāng)天銷量下降到11.5-11.14期間最低,從11.12開始銷量逐漸上升。參考網(wǎng)上信息了解到11.5-11.10均為2016年雙十一的預(yù)熱期,用戶在此期間購買產(chǎn)品,所以銷量會(huì)增加。由于用戶在預(yù)熱期時(shí)已購買產(chǎn)品所以在雙十一當(dāng)天的銷量減少,達(dá)到期間最低
4.1.4不同商品id的評(píng)論數(shù)與銷量的關(guān)系
figure2=plt.figure(figsize=(12.6))
ax1=figure2.add_subplot(1.2.1)
df6=df.groupby(['id']).agg(comment_count1=('comment_count','sum'),sale_count2=('sale_count','sum'))
ax1.scatter(x=df6['comment_count1'],y=df6['sale_count2'],color=['limegreen'])
ax1.set_title('銷量隨商品id的評(píng)論數(shù)的變化',fontsize=12)
ax1.set_xlim(xmin=0.xmax=2500000)
ax1.set_xlabel('商品評(píng)論數(shù)')
ax1.set_ylabel('銷量')
plt.show()
如圖所示,商品id的評(píng)論數(shù)與銷量之間是呈一定的正相關(guān),進(jìn)一步計(jì)算商品id的評(píng)論數(shù)與銷量之間的相關(guān)系數(shù)
#計(jì)算商品id的評(píng)論數(shù)與銷量的相關(guān)系數(shù)
df6=df.groupby(['id']).agg(comment_count1=('comment_count','sum'),sale_count2=('sale_count','sum'))
df6.corr()
如圖所示,相關(guān)系數(shù)r約為0.87.由此可知,商品評(píng)論數(shù)與銷量是呈高度正相關(guān)
4.2店鋪
4.2.1 不同店鋪的銷售額和銷量
figure3=plt.figure(figsize=(14.5))
ax1=figure3.add_subplot(1.2.1)
df6=df.groupby(['店名'])['total_sales'].agg(total_sale4='sum').sort_values(by=['total_sale4'],ascending=True)
df6.plot(width=0.8.kind='barh',ax=ax1.color='limegreen')
ax1.set_title('不同店鋪的銷售額',fontsize=12)
ax1.set_xlabel('銷售額')
ax2=figure3.add_subplot(1.2.2)
df8=df.groupby(['店名'])['sale_count'].agg(sale_count5='sum').sort_values(by=['sale_count5'],ascending=True)
df8.plot(kind='barh',width=0.8.ax=ax2.color='darkorange')
ax2.set_title('不同店鋪的銷量',fontsize=12)
ax2.set_xlabel('銷量')
plt.show()
如圖所示銷售額TOP5分別為相宜本草、歐萊雅、佰草集、美寶蓮、悅詩風(fēng)吟;銷量TOP5分別為相宜本草、美寶蓮、悅詩風(fēng)吟、妮維雅、歐萊雅。值得注意的是佰草集的銷量雖不是Top5但銷售額卻排在第3位
4.2.2熱銷店鋪Top5的熱銷產(chǎn)品Top5
由4.2.1不同店鋪的銷量可了解熱銷店鋪Top5分別是相宜本草、美寶蓮、悅詩風(fēng)吟、妮維雅、歐萊雅。進(jìn)一步查看這5個(gè)店鋪的熱銷產(chǎn)品Top5
figure5=plt.figure(figsize=(12.8))
ax1=figure5.add_subplot(2.2.1)
ax2=figure5.add_subplot(2.2.2)
df9=df[(df['店名']=='相宜本草')&(df['product']!='其它')]
df10=df[(df['店名']=='美寶蓮')&(df['product']!='其它')]
df9.groupby(['product'])['sale_count'].agg(sale_count6='sum').sort_values(by=['sale_count6'],ascending=False).plot(kind='bar',width=0.8.ax=ax1.color='limegreen')
df10.groupby(['product'])['sale_count'].agg(sale_count7='sum').sort_values(by=['sale_count7'],ascending=False).plot(kind='bar',width=0.8.ax=ax2.color='lightgreen')
ax1.set_title('相宜本草品類銷量',fontsize=10)
ax2.set_title('美寶蓮品類銷量',fontsize=10)
plt.show()
figure6=plt.figure(figsize=(12.8))
ax1=figure6.add_subplot(2.2.1)
ax2=figure6.add_subplot(2.2.2)
df11=df[(df['店名']=='悅詩風(fēng)吟')&(df['product']!='其它')]
df12=df[(df['店名']=='妮維雅')&(df['product']!='其它')]
df11.groupby(['product'])['sale_count'].agg(sale_count8='sum').sort_values(by=['sale_count8'],ascending=False).plot(kind='bar',width=0.8.ax=ax1.color='orange')
df12.groupby(['product'])['sale_count'].agg(sale_count9='sum').sort_values(by=['sale_count9'],ascending=False).plot(kind='bar',width=0.8.ax=ax2.color='darkorange')
ax1.set_title('悅詩風(fēng)吟品類銷量',fontsize=10)
ax2.set_title('妮維雅品類銷量',fontsize=10)
plt.show()
figure7=plt.figure(figsize=(12.8))
ax1=figure7add_subplot(2.2.1)
df13=df[(df['店名']=='歐萊雅')&(df['product']!='其它')]
df13.groupby(['product'])['sale_count'].agg(sale_count10='sum').sort_values(by=['sale_count10'],ascending=False).plot(kind='bar',width=0.8.ax=ax1.color='gray')
ax1.set_title('歐萊雅品類銷量',fontsize=12)
plt.show()
如圖所示,相宜本草top5產(chǎn)品是潔面、面膜、化妝水、面霜、乳液;美寶蓮top5產(chǎn)品是口紅、潔面、眼線、睫毛膏、眉粉;悅詩風(fēng)吟top5產(chǎn)品是面膜、潔面、粉餅、化妝水、氣墊;妮維雅top5產(chǎn)品是乳液、潔面、化妝水、口紅、面霜;歐萊雅top5產(chǎn)品是潔面、化妝水、乳液、面霜、口紅。
4、結(jié)論
護(hù)膚品的銷售額占比56.76%、銷量占比60.34%均都遠(yuǎn)超彩妝的銷售額和銷量,可見護(hù)膚品在美妝中仍占有主導(dǎo)地位
護(hù)膚品類和彩妝類產(chǎn)品都是在價(jià)格區(qū)間[100-200)的銷售額最高但銷量卻不是最高,而在價(jià)格區(qū)間[0-100)銷量最高但銷售額不是最高,在價(jià)格區(qū)間[0-100)銷量最高的護(hù)膚產(chǎn)品是產(chǎn)品id A24304992630、彩妝產(chǎn)品是產(chǎn)品id A39876413435
在11.5-11.10期間(預(yù)熱期)銷量基本保持穩(wěn)定且均達(dá)到3000萬以上,均高于11.11-11.14的銷量,到11.11當(dāng)天銷量下降達(dá)到11.5-11.14期間的最低值,從11.12開始銷量又開始逐漸上升
商品id的評(píng)論數(shù)與銷量的相關(guān)系數(shù)約為0.87.達(dá)到高度正相關(guān),說明評(píng)論數(shù)對(duì)銷量存在一定影響
銷售額Top5的店鋪分別為相宜本草、歐萊雅、佰草集、美寶蓮、悅詩風(fēng)吟;銷量TOP5的店鋪分別為相宜本草、美寶蓮、悅詩風(fēng)吟、妮維雅、歐萊雅。值得注意的是佰草集的銷量雖不是Top5但銷售額卻排在第3位
銷量top5的店鋪熱銷產(chǎn)品top5分別是相宜本草:潔面、面膜、化妝水、面霜、乳液;美寶蓮:口紅、潔面、眼線、睫毛膏、眉粉;悅詩風(fēng)吟:面膜、潔面、粉餅、化妝水、氣墊;妮維雅:乳液、潔面、化妝水、口紅、面霜;歐萊雅:潔面、化妝水、乳液、面霜、口紅
5、建議
由于彩妝類和護(hù)膚類的產(chǎn)品在價(jià)格區(qū)間[0.100)的銷量都是最高的,在價(jià)格區(qū)間[100.200)的銷售額最高,又通過進(jìn)一步了解在價(jià)格區(qū)間[0.100)銷量最高的彩妝類產(chǎn)品是產(chǎn)品id A39876413435、最高的護(hù)膚品類是產(chǎn)品id A24304992630.是否可以對(duì)這兩種產(chǎn)品分別組合售出來提高產(chǎn)品的客單價(jià)從而提高產(chǎn)品的銷售額
11.5-11.10雙十一預(yù)熱期的銷量均都高于11.11-11.14.說明雙十一的預(yù)熱活動(dòng)還是非常成功的,商家可以在預(yù)熱期間加大優(yōu)惠力度刺激用戶消費(fèi)
商品的評(píng)論數(shù)與銷量呈高度正相關(guān),說明評(píng)論數(shù)對(duì)銷量有一定的影響,商家可以采取一些措施來提醒用戶在購買后進(jìn)行評(píng)論,例如短信提醒,消息提醒等
樂發(fā)網(wǎng)超市批發(fā)網(wǎng)提供超市貨源信息,超市采購進(jìn)貨渠道。超市進(jìn)貨網(wǎng)提供成都食品批發(fā),日用百貨批發(fā)信息、微信淘寶網(wǎng)店超市采購信息和超市加盟信息.打造國內(nèi)超市采購商與批發(fā)市場(chǎng)供應(yīng)廠商搭建網(wǎng)上批發(fā)市場(chǎng)平臺(tái),是全國批發(fā)市場(chǎng)行業(yè)中電子商務(wù)權(quán)威性網(wǎng)站。
本文內(nèi)容整合網(wǎng)站:百度百科、知乎、淘寶平臺(tái)規(guī)則
本文來源: 淘寶美妝銷售數(shù)據(jù)分析