双十一淘宝美妆消费数据分析

双十一淘宝美妆消费数据分析
数据来源

  • 和鲸社区数据分析项目:https://www.kesci.com/mw/project/5e60fc9cb8dfce002d7ff6a1/dataset

项目描述

  • 由于是真实的商业数据,所以做了匿名处理,数据集中对店名的引用被处理为产品的品牌名以保护店家隐私。
  • 通过对天猫双十一美妆数据集中品牌、销量、热度等特征的分析,尝试探索以下问题:

  1. 双十一期间,最受消费者青睐的产品或品牌是哪些
  2. 双十一期间,美妆行业各品类的销售情况
  3. 双十一期间,消费高峰何时出现
  4. 双十一期间,客户的评论数对销量的影响
import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
%matplotlib inline

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

import warnings
warnings.filterwarnings('ignore')

1.读取数据

df=pd.read_csv('./beautymakeup.csv',',')
df.info()

双十一淘宝美妆消费数据分析_第1张图片

df.head()

双十一淘宝美妆消费数据分析_第2张图片

2.清洗数据

2.1去除重复值

df.duplicated().sum()#计算重复条数
df.drop_duplicates(inplace=True)#去除重复值
df.shape#查看去重后数据条数
df.reset_index(inplace=True,drop=True)#重置索引

2.2处理缺失值

双十一淘宝美妆消费数据分析_第3张图片

df.sale_count.mode()#sale_count的众数
df.comment_count.mode()#comment_count的众数

sale_count、comment_count的众数都为0,且结合实际情况销量、评论数都可能存在为0的情况,因此是使用0来填充这两列的空值。

df.fillna(0,inplace=True)
df.sale_count=df.sale_count.astype('int64')
df.comment_count=df.comment_count.astype('int64')
df.isnull().sum()#检查是否完成缺失值的处理

2.3提取表格信息

2.3.1对商品名称title进行分词处理

import jieba
title_cut=[]
for i in df.title:
    j=jieba.lcut(i)
    title_cut.append(j)
df['name_cut']=title_cut
df[['title','name_cut']].head()

双十一淘宝美妆消费数据分析_第4张图片

2.3.2给商品添加分类并增加对应列

first_type=[]#主类别
second_type=[]#子类别
basic_config_data = '''护肤品	套装	套装							
护肤品	乳液类	乳液	美白乳	润肤乳	凝乳	柔肤液'	亮肤乳	菁华乳	修护乳
护肤品	眼部护理	眼霜	眼部精华	眼膜					
护肤品	面膜类	面膜													
护肤品	清洁类	洗面	洁面	清洁	卸妆	洁颜	洗颜	去角质	磨砂						
护肤品	化妆水	化妆水	爽肤水	柔肤水	补水露	凝露	柔肤液	精粹水	亮肤水	润肤水	保湿水	菁华水	保湿喷雾	舒缓喷雾
护肤品	面霜类	面霜	日霜	晚霜	柔肤霜	滋润霜	保湿霜	凝霜	日间霜	晚间霜	乳霜	修护霜	亮肤霜	底霜	菁华霜
护肤品	精华类	精华液	精华水	精华露	精华素										
护肤品	防晒类	防晒霜	防晒喷雾												
化妆品	口红类	唇釉	口红	唇彩											
化妆品	底妆类	散粉	蜜粉	粉底液	定妆粉 	气垫	粉饼	BB	CC	遮瑕	粉霜	粉底膏	粉底霜		
化妆品	眼部彩妆	眉粉	染眉膏	眼线	眼影	睫毛膏									
化妆品	修容类	鼻影	修容粉	高光	腮红										
其他	其他	其他'''#标准分类
category_map={}
for m in basic_config_data.split('\n'):
    basic_category_list=m.strip().strip('\n').strip('\t').split('\t')
    first_category=basic_category_list[0]
    second_category=basic_category_list[1]
    unit_category_list=basic_category_list[2:-1]
    for unit_category in unit_category_list:
        if unit_category and unit_category.strip().strip('\t'):
            category_map[unit_category]=(first_category,second_category)
 category_map

双十一淘宝美妆消费数据分析_第5张图片

for i in range(len(df)):
    exist=False
    for j in df['name_cut'][i]:
        if j in category_map:
            first_type.append(category_map.get(j)[0])
            second_type.append(category_map.get(j)[1])
            exist=True
            break
    if not exist:
            first_type.append('其他')
            second_type.append('其他')

双十一淘宝美妆消费数据分析_第6张图片

gender=[]
for i in range(len(df)):
    if '男' in df.name_cut[i]:
        gender.append('是')
    elif '男生' in df.name_cut[i]:
        gender.append('是')
    elif '男士' in df.name_cut[i]:
        gender.append('是')
    else:
        gender.append('否')
#将“推荐男士使用”新增为一列
df['gender']=gender

2.3.3增加销售额列,并设置日期索引

df['销售额']=df.sale_count*df.price
df['update_time']=pd.to_datetime(df['update_time'])
df=df.set_index('update_time')
#新增日期号数为一列
df['日期']=df.index.day
del df['name_cut']
df.head()

双十一淘宝美妆消费数据分析_第7张图片

3.数据探索分析

双十一淘宝美妆消费数据分析_第8张图片

3.1品牌的总销量和总销售额

fig,axes=plt.subplots(1,2,figsize=(12,10))

ax1=df.groupby(['店名']).sale_count.sum().sort_values(ascending=True).plot(kind='barh',ax=axes[0],width=0.6)
ax1.set_xlabel('总销量',fontsize=12)
ax1.set_ylabel('品牌',fontsize=12)
ax1.set_title('各品牌总销量对比',fontsize=14)

ax2=df['销售额'].groupby(df.店名).sum().sort_values(ascending=True).plot(kind='barh',ax=axes[1],width=0.6)
ax2.set_xlabel('总销售额',fontsize=12)
ax2.set_ylabel('品牌',fontsize=12)
ax2.set_title('各品牌总销售额对比',fontsize=14)

plt.subplots_adjust(wspace=0.4)
plt.savefig('./各品牌总销量和销售额对比.png')
plt.show()

双十一淘宝美妆消费数据分析_第9张图片
由上图可知:

  • 销量排名前5位的分别是:相宜本草、美宝莲、悦诗风吟、妮维雅、欧莱雅
  • 销售额排名前5位的分别是:相宜本草、欧莱雅、佰草集、美宝莲、悦诗风吟
  • 相宜本草、欧莱雅、美宝莲、悦诗风吟的销量和销售额都排在前5,其中相宜本草销量和销售额都是最高的

3.2品牌热度

a=df['comment_count'].groupby(df['店名']).sum().sort_values(ascending=False)
plt.figure(figsize=(16,8),dpi=80)
b=list(range(len(a)))
plt.bar(b,a.values,width=0.4,color='#0c84c6')
plt.xticks(b,a.index,fontsize=12,rotation=90)
plt.xlabel('品牌',fontsize=12)
plt.ylabel('评论热度',fontsize=12)
plt.title('各品牌双十一期间的评论热度',fontsize=14)
plt.savefig('./各品牌双十一期间的评论热度.png')

双十一淘宝美妆消费数据分析_第10张图片
由上图可知:双十一期间,评论热度较高的是:悦诗风吟、妮维雅、美宝莲、相宜本草、自然堂

plt.figure(figsize=(12,6),dpi=80)

x=df.groupby('店名')['sale_count'].sum()
y=df.groupby('店名').comment_count.sum()
avg_price=df.groupby('店名').price.mean()
txt=df.groupby('店名').id.count().index

sns.scatterplot(x,y,size=avg_price,hue=avg_price,sizes=(0,1500),data=df)
for i in range(len(txt)):
    plt.annotate(txt[i],xy=(x[i],y[i]))

plt.xlabel('销量',fontsize=12)
plt.ylabel('热度',fontsize=12)
plt.legend(loc='upper left')
plt.grid(alpha=0.5)
plt.savefig('./热度.png')
plt.show()

双十一淘宝美妆消费数据分析_第11张图片
由上图可知:

  • 悦诗风吟热度第一、销量第三,妮维雅热度第二、销量第四,美宝莲热度第三、销量第二,相宜本草热度第四、销量第一,这些销量和热度都靠前的品牌,价格都比较低,说明价格会在一定程序上影响销量和热度
  • 评论热度较高的品牌,销量也比较高,两者之间呈现了一定的正相关关系。

3.3品牌价格

plt.figure(figsize=(12,6),dpi=80)

b=avg_price.sort_values(ascending=False)
plt.bar(list(range(len(avg_price))),b,width=0.4,label='各品牌平均价格')
plt.xlabel('品牌',fontsize=12)
plt.ylabel('平均价格',fontsize=12)
plt.xticks(list(range(len(avg_price))),b.index,fontsize=11,rotation=90)
plt.title('各品牌产品平均价格',fontsize=14)
c=df.price.mean()
plt.axhline(c,color='r',label='全品牌平均价格',alpha=0.8)
plt.legend()
plt.savefig('./品牌均价.png')

双十一淘宝美妆消费数据分析_第12张图片
由上2图可知:

  • 高于全品牌平均价格的6个大品牌(娇兰、SKII、雪花秀、雅诗兰黛、兰蔻、资生堂)在活动期间销量、热度都比较低
  • 平均价格较低的美宝莲、蜜丝佛陀、相宜本草、妮维雅等品牌在销量上有不错的表现
  • 尽管大品牌价格远高于全品牌平均价格,但中低价格的品牌多,销量大,使得整个全品牌平均价格低于400元
plt.figure(figsize=(12,6),dpi=80)

x=df['sale_count'].groupby(df['店名']).sum()
y=df['销售额'].groupby(df['店名']).sum()

sns.scatterplot(x,y,size=avg_price,hue=avg_price,sizes=(0,1500),data=df)
plt.xlabel('销量',fontsize=12)
plt.ylabel('销售额',fontsize=12)
txt=x.index
for i in range(len(x)):
    plt.annotate(txt[i],xy=(x[i],y[i]),xytext=(x[i]+1,y[i]+1))
plt.savefig('./价格与销量.png')

双十一淘宝美妆消费数据分析_第13张图片
由上图可知:

  • 相宜本草销量和销售额都为第一,且价格比较实惠
  • 价格高昂的品牌销量和销售额较低,价格实惠的品牌销量和销售额更高

3.4分类别的销量和销售额情况

3.4.1各类别的销量和销售额的总体市场情况

fig,axes=plt.subplots(1,2,figsize=(14,7))

data1=df['sale_count'].groupby(df['first_type']).sum()
ax1 = data1.plot(kind='pie',ax=axes[0],autopct='%.1f%%',
pctdistance=0.6, 
labels= data1.index,
labeldistance = 1.05,
startangle = 60, 
radius = 1.2,
counterclock = False, 
wedgeprops = {'linewidth': 0.6, 'edgecolor':'k'},
textprops = {'fontsize':12, 'color':'k'}
)
ax1.set_title('主类别销量占比',fontsize=14)

data2=df.groupby(['second_type']).sale_count.sum()
ax2=data2.plot(kind='pie',ax=axes[1],autopct='%.1f%%',
pctdistance=0.8,
labels=data2.index,
labeldistance=1.05,
radius=1.2,
startangle=210,
counterclock=False,
wedgeprops={'linewidth':0.6,'edgecolor':'k'},
textprops={'fontsize':10,'color':'k'}
)
ax2.set_title('子类别销量占比',fontsize=14)

plt.subplots_adjust(wspace=0.4)
plt.savefig('./分类别销量.png')
plt.show()

双十一淘宝美妆消费数据分析_第14张图片
由上2图可知:

  • 从主类别销量占比来看,护肤品的销量占到了43%,化妆品为13.9%,护肤品的销量是化妆品的3倍
  • 从子类别销量占比来看,护肤品中销量最高的是清洁类、化妆水和面霜类;化妆品中销量最高的是底妆类和口红类
fig,axes=plt.subplots(1,2,figsize=(14,7))

d1=df['销售额'].groupby(df.first_type).sum()
a1=d1.plot(kind='pie',ax=axes[0],autopct='%.1f%%',labels=d1.index,pctdistance=0.6,labeldistance=1.05,radius=1.2,counterclock=False,
          wedgeprops={'linewidth':0.6,'edgecolor':'k'},textprops={'fontsize':10,'color':'k'})
a1.set_title('主类别总销售额占比',fontsize=14)

d2=df['销售额'].groupby(df.second_type).sum()
a2=d2.plot(kind='pie',ax=axes[1],autopct='%.1f%%',labels=d2.index,pctdistance=0.6,labeldistance=1.05,radius=1.2,counterclock=False,
          wedgeprops={'linewidth':0.6,'edgecolor':'k'},textprops={'fontsize':10,'color':'k'})
a2.set_title('次类别总销售额占比',fontsize=14)

plt.subplots_adjust(wspace=0.5)
plt.savefig('./分类别的销售额.png')
plt.show()

双十一淘宝美妆消费数据分析_第15张图片
由上2图可知:

  • 主类别销售额中,化妆品仅占12.8%,护肤品占41.2%护肤品的销售额远高于化妆品,接近化妆品销售额的3.2倍
  • 次类别销售额中,排名前5的是:清洁类11.4%、化妆水9.6%、底妆类8.0%、面霜类6.6%、眼部护理5.3%,其中只有底妆类属于化妆品,其余4类都是护肤品。

3.4.2各品牌分类别的销量和销售额情况

plt.figure(figsize=(16,8),dpi=80)
sns.barplot(x='店名',y='sale_count',hue='first_type',data=df,saturation=0.8,ci=0)
plt.title('各品牌各主类别的总销量',fontsize=14)
plt.ylabel('销量',fontsize=12)
plt.xlabel('品牌',fontsize=12)
plt.grid(axis='y',alpha=0.5)
plt.savefig('./品牌类别销量.png')
plt.show()

双十一淘宝美妆消费数据分析_第16张图片
由上图可知:

  • 护肤品中,销量前5位分别是美宝莲、相宜本草、妮维雅、自然堂、欧莱雅,其中美宝莲、相宜本草的销量远高于其他品牌
  • 化妆品中,销量前5位分别是美宝莲、蜜丝佛陀、悦诗风吟、自然堂、兰芝,其中美宝莲、蜜丝佛陀的销量远高于其他品牌
  • 其他产品中,销量前5位分别是相宜本草、美宝莲、蜜丝佛陀、欧莱雅、妮维雅,其中相宜本草的销量优势明显
plt.figure(figsize=(16,8),dpi=80)
sns.barplot(x='店名',y='销售额',hue='first_type',data=df,saturation=0.8,ci=0)
plt.title('各品牌各主类别的总销售额',fontsize=14)
plt.xlabel('品牌',fontsize=12)
plt.ylabel('销售额',fontsize=12)
plt.grid(axis='y',alpha=0.5)
plt.savefig('./品牌类别销售额.png')
plt.show()

双十一淘宝美妆消费数据分析_第17张图片
由上图可知:

  • 护肤品中,总销售额前5位的分别是美宝莲、欧莱雅、相宜本草、自然堂、妮维雅,其中美宝莲的总销售额远高于其他品牌
  • 化妆品中,总销售额前5位的分别是蜜丝佛陀、美宝莲、兰芝、兰蔻、自然堂,其中蜜丝佛陀的总销售额是最高的
  • 其他产品中,总销售额前5位的分别是相宜本草、蜜丝佛陀、兰芝、美宝莲、欧莱雅,其中相宜本草的总销售额是最高的

由上2图可知:美宝莲、相宜本草、蜜丝佛陀在销量和销售额上都表现得很不错

3.5男性美妆使用情况

gender_data=df[df.gender=='是']
gender_data1=gender_data[(gender_data.first_type=='护肤品')|(gender_data.first_type=='化妆品')]

plt.figure(figsize=(12,6),dpi=80)
sns.barplot(x='店名',y='sale_count',hue='first_type',data=gender_data1,saturation=0.8,ci=0)
plt.xlabel('品牌',fontsize=12)
plt.ylabel('销量',fontsize=12)
plt.title('各品牌男士护肤品和化妆品销量统计',fontsize=14)
plt.savefig('./男士美妆销量统计.png')

双十一淘宝美妆消费数据分析_第18张图片

f,[a1,a2]=plt.subplots(1,2,figsize=(14,7))

gender_data2=gender_data[gender_data.first_type=='护肤品']

gender_data2.sale_count.groupby(gender_data2['店名']).sum().sort_values(ascending=True).plot(kind='barh',ax=a1,width=0.6)
a1.set_ylabel('品牌',fontsize=12)
a1.set_title('男士护肤品销量情况统计',fontsize=14)

gender_data2['销售额'].groupby(gender_data2['店名']).sum().sort_values(ascending=True).plot(kind='barh',ax=a2,width=0.6)
a2.set_ylabel('品牌',fontsize=12)
a2.set_title('男士护肤品销售额情况统计',fontsize=14)

plt.subplots_adjust(wspace=0.4)
plt.savefig('./男士护肤品销售.png')

双十一淘宝美妆消费数据分析_第19张图片
由上2图可知:

  • 男士在美妆市场上以护肤品消费为主,化妆品的销量极少,且主要选购品牌为妮维雅。
  • 男性护肤品市场中,妮维雅的销量和销售额以遥遥领先的优势位居第一,其次是欧莱雅和相宜本草两个品牌。

3.6时间与销量、评论热度的关系

plt.figure(figsize=(12,6),dpi=80)
plt.grid(linestyle='-.',color='gray',axis='x',alpha=0.5)
b1=df['sale_count'].groupby(df['日期']).sum()
b2=df['comment_count'].groupby(df['日期']).sum()
x=b1.index
ax1=plt.subplot(111)
ax1.plot(x,b1.values,label='销量')
ax1.legend(loc='upper left')
ax1.set_ylabel('销量',fontsize=12)
ax2=ax1.twinx()
ax2.plot(x,b2.values,label='评论热度',color='r')
ax2.legend(loc='upper right')
ax2.set_ylabel('评论热度',fontsize=12)

ax1.set_xlabel('日期(11月)',fontsize=12)
ax1.set_xticks(list(range(5,15)))
plt.savefig('./销量、热度随时间变化.png')
plt.show()

双十一淘宝美妆消费数据分析_第20张图片
由上图可知:

  • 销量和评论热度的波动趋势大致相同
  • 11号当天销量最低,由于商家的提前预热,消费者为了避免11号的网络高峰,选择在11号之前的几天提前购买
  • 11号之后,可能受活动的余热影响,虽然销量和评论热度都远不及11号之前,但也表现出逐渐增长的趋势

结论:

  • 热度高、价格低的品牌更容易受到消费者的青睐。

  • 美妆类别中,护肤品的需求明显高于化妆品。其中清洁类、化妆水和面霜类销量最高;化妆品中底妆类、口红类销量是最高额。

  • 男性美妆市场以护肤品消费为主,化妆品的消费极少。妮维雅品牌是最受男士喜欢的品牌。

  • 销量和评论热度波动大致相同,评论热度上涨,销量也会上涨。

  • 受物流、网络高峰等因素影响,再加上活动的提前预热,11号之前的几天会引来购买高峰;11号之后借着活动的余热,销量会呈现逐渐上升的趋势。

你可能感兴趣的:(项目,数据分析,python)