Python 双十一淘宝美妆数据分析

 

一,选题背景

如今社会因为科技的进步,各种生活方式都发生了变化。例如购物如今都是使用网上购物,而线下实体店占比很少。我们可以通过这个数据分析可以分析出购买化妆品的客户的关注度(评论数)是多少?各产品销量分布情况? 哪些产品的卖得最好,哪些牌子最受欢迎,哪些化妆品是大家最需要的? 不同商家之间的差异,及促销打折力度? 模拟定价系统及推荐系统?然后商家就可以通过这个修改自家商品和优惠力度。

二、大数据分析设计方案

1.数据的内容与数据特征分析

update_time 统计时间

id 产品编号

title 产品名称

price 交易价格

sale_count 销量

comment_count 评论数量

2.数据分析的课程设计方案概述

(1)实现思路

通过分析网上淘宝爬来数据进行数据分析。

(2)技术难点
要分析大量数据寻找可靠真是数据。

三、数据分析步骤

1数据源

 https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1

2数据清洗

2.1重复数据处理

# 对重复数据做删除处理
print(data.shape)
data = data.drop_duplicates(inplace=False)
print(data.shape)

 

  

 

# 此处虽然删除了重复值,但索引未变,因此应用以下方法进行重置索引
print(data.index)
data = data.reset_index(drop=True)
print('新索引:',data.index)

2.2缺失值处理

# 查看缺失值
data.isnull().any()

# 查看数据结构
data.describe()

 

 

 

# 查看sale_count列的众数
mode_01 = data.sale_count.mode()
print(mode_01)

# 查看comment_count列的众数
mode_02 = data.comment_count.mode()
print(mode_02)

 

 

 

# 填充缺失值
data = data.fillna(0)
# 对空值行数求和
data.isnull().sum()

# 给商品添加分类
basic_config_data = """护肤品    套装    套装                            
护肤品    乳液类    乳液    美白乳    润肤乳    凝乳    柔肤液'    亮肤乳    菁华乳    修护乳
护肤品    眼部护理    眼霜    眼部精华    眼膜                    
护肤品    面膜类    面膜                                                    
护肤品    清洁类    洗面    洁面    清洁    卸妆    洁颜    洗颜    去角质    磨砂                        
护肤品    化妆水    化妆水    爽肤水    柔肤水    补水露    凝露    柔肤液    精粹水    亮肤水    润肤水    保湿水    菁华水    保湿喷雾    舒缓喷雾
护肤品    面霜类    面霜    日霜    晚霜    柔肤霜    滋润霜    保湿霜    凝霜    日间霜    晚间霜    乳霜    修护霜    亮肤霜    底霜    菁华霜
护肤品    精华类    精华液    精华水    精华露    精华素                                        
护肤品    防晒类    防晒霜    防晒喷雾                                                
化妆品    口红类    唇釉    口红    唇彩                                            
化妆品    底妆类    散粉    蜜粉    粉底液    定妆粉     气垫    粉饼    BB    CC    遮瑕    粉霜    粉底膏    粉底霜        
化妆品    眼部彩妆    眉粉    染眉膏    眼线    眼影    睫毛膏                                    
化妆品    修容类    鼻影    修容粉    高光    腮红                                        
其他    其他    其他"""

# 将字符串basic_config_data 转为字典 category_config_map
category_config_map = {}
for config_line in basic_config_data.split('\n'):
    basic_cateogry_list = config_line.strip().strip('\n').strip('    ').split('    ')
    main_category = basic_cateogry_list[0]
    sub_category = basic_cateogry_list[1]
    unit_category_list = basic_cateogry_list[2:-1]
    for unit_category in unit_category_list:
        if unit_category and unit_category.strip().strip('    '):
            category_config_map[unit_category] = (main_category,sub_category)
            
category_config_map

 

def func1(row):
    sub_type = ''   #子类别
    main_type = '' #主类别
    exist = False
    # 遍历item_name_cut 里每个词语
    for temp in row:
        # 如果词语包含在category_config_map里面,打上子类和主类标签
        if temp in category_config_map:
            sub_type = category_config_map.get(temp)[1]
            main_type = category_config_map.get(temp)[0]
            exist = True
            break
    if not exist:
        sub_type= '其他'
        main_type = '其他'
        
    return [sub_type, main_type]
# 将子类别sub_type新增为一列
data['sub_type'] = data['item_name_cut'].map(lambda r:func1(r)[0])
# 将主类别main-type新增为一列
data['main_type'] = data['item_name_cut'].map(lambda r:func1(r)[1])
data.head()

# 保存清理好的数据为Excel格式
data.to_excel('./clean_beautymakeup.xlsx',sheet_name='clean_data')

三、大数据分析过程及采用的算法

导入第三方库

# 结巴分词库
import jieba 
# jieba.load_userdict('addwords.txt')
title_cut = []
for i in data.title:
    j = jieba.lcut(i)
    title_cut.append(j)
    
# 对标题进行分词,新增item_name_cut列
data['item_name_cut'] = title_cut
data[['title','item_name_cut']].head()

 

4数据可视化

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

data.columns

 

 

 4.1各品牌SKU属

 

plt.rcParams['font.sans-serif']=['SimHei']  #指定默认字体  
plt.rcParams['axes.unicode_minus']=False  #解决负号'-'显示为方块的问题

plt.figure(figsize=(12,7))
# 计算各店铺的商品数量
data['店名'].value_counts().sort_values(ascending=False).plot.bar(width=0.8,alpha=0.6,color='b')

plt.title('各品牌SKU数',fontsize=18)
plt.ylabel('商品数量',fontsize=14)
plt.show()

 

 

悦诗风吟的商品数量最多,其次为佰草集、欧莱雅

4.2品牌总销售和总销售额

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

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

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

plt.subplots_adjust(wspace=0.4)
plt.show()

 

 

 

相宜本草的销售量和销售额都是最高的。销量第二至第五,分别为美宝莲、悦诗风吟、妮维雅、欧莱雅;销售额第二至第五,分别为欧莱雅、佰草集、美宝莲、悦诗风吟。 宝莲、悦诗风吟、欧莱雅都在销量、销售额前五中。

4,3各类的销售量,销售额情况

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

data1 = data.groupby('main_type')['sale_count'].sum()
ax1 = data1.plot(kind='pie',ax=axes[0],autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
pctdistance=0.8, # 设置百分比标签与圆心的距离
labels= data1.index,
labeldistance = 1.05, # 设置标签与圆心的距离
startangle = 60, # 设置饼图的初始角度
radius = 1.2, # 设置饼图的半径
counterclock = False, # 是否逆时针,这里设置为顺时针方向
wedgeprops = {'linewidth': 1.2, },# 设置饼图内外边界的属性值
textprops = {'fontsize':16, 'color':'k','rotation':80}, # 设置文本标签的属性值
)
ax1.set_title('主类别销售量占比',fontsize=20)

data2 = data.groupby('sub_type')['sale_count'].sum()
ax2 = data2.plot(kind='pie',ax=axes[1],autopct='%.1f%%', 
pctdistance=0.8, 
labels= data2.index,
labeldistance = 1.05,
startangle = 230, 
radius = 1.2, 
counterclock = False, 
wedgeprops = {'linewidth': 1.2, },
textprops = {'fontsize':16, 'color':'k','rotation':80}, 
)

ax2.set_title('子类别销售量占比',fontsize=20)

# 设置坐标标签
ax1.set_xlabel(..., fontsize=16,labelpad=38.5)
ax1.set_ylabel(..., fontsize=16,labelpad=38.5)
ax2.set_xlabel(..., fontsize=16,labelpad=38.5)
ax2.set_ylabel(..., fontsize=16,labelpad=38.5)
plt.subplots_adjust(wspace=0.4)
plt.show()

 

从主类别销售量占比情况来看,护肤品的销量远大于化妆品;

从子类别销售量占比情况来看,底妆类、口红类在化妆品中销量最多,清洁类、化妆水、面霜类在护肤品中销量最多。

plt.figure(figsize=(18,8))
sns.barplot(x='店名',y='sale_count',hue='main_type',data=data,saturation=0.75,ci=0)
plt.title('各品牌各总类的总销量', fontsize=20)
plt.ylabel('销量',fontsize=16)
plt.xlabel('店名',fontsize=16)
plt.text(0,78000,'注:此处也可使用堆叠图,对比效果更直观',
         verticalalignment='top', horizontalalignment='left',color='gray', fontsize=10)
# 设置刻度字体大小

plt.xticks(fontsize=16,rotation=45)
plt.yticks(fontsize=16)
plt.show()

 

plt.figure(figsize=(18,8))
sns.barplot( x = '店名',
y = '销售额',hue = 'main_type',data =data,saturation = 0.75,ci=0,)
plt.ylabel('销售额',fontsize=16)
plt.xlabel('店名',fontsize=16)
plt.title('各品牌各总类的总销售额',fontsize=20)
# 设置刻度字体大小
plt.xticks(fontsize=16,rotation=45)
plt.yticks(fontsize=16)
plt.show()

 

 

plt.figure(figsize = (16,6))
sns.barplot( x = '店名',
y = 'sale_count',hue = 'sub_type',data =data,saturation = 0.75,ci=0)
plt.title('各品牌各子类的总销量')
plt.ylabel('销量')
plt.show()

 

plt.figure(figsize = (14,6))
sns.barplot( x = '店名',
y = '销售额',hue = 'sub_type',data =data,saturation = 0.75,ci=0)
plt.title('各品牌各子类的总销售额')
plt.ylabel('销售额')
plt.show()

 

4.4各品牌热度

plt.figure(figsize = (12,6))
data.groupby('店名').comment_count.mean().sort_values(ascending=False).plot(kind='bar',width=0.8)
plt.title('各品牌商品的平均评论数')
plt.ylabel('评论数')
plt.show()

 

 

plt.figure(figsize=(18,12))

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

sns.scatterplot(x,y,size=s,hue=s,sizes=(100,1500),data=data)

for i in range(len(txt)):
    plt.annotate(txt[i],xy=(x[i],y[i]))
    
plt.ylabel('热度')
plt.xlabel('销量')

plt.legend(loc='upper left')
plt.show()

 

 

 4.5各品牌价格

plt.figure(figsize=(18,10))
sns.boxplot(x='店名',y='price',data=data)
plt.ylim(0,3000)#如果不限制,就不容易看清箱型,所以把Y轴刻度缩小为0-3000
plt.show()

 

data.groupby('店名').price.sum()
avg_price=data.groupby('店名').price.sum()/data.groupby('店名').price.count()
avg_price

 

 

plt.figure(figsize=(18,10))

x = data.groupby('店名')['sale_count'].mean()
y = data.groupby('店名')['销售额'].mean()
s = avg_price
txt = data.groupby('店名').id.count().index

sns.scatterplot(x,y,size=s,sizes=(100,1500),marker='v',alpha=0.5,color='b',data=data)

for i in range(len(txt)):
    plt.annotate(txt[i],xy=(x[i],y[i]),xytext = (x[i]+0.2, y[i]+0.2))  #在散点后面增加品牌信息的标签
    
plt.ylabel('销售额')
plt.xlabel('销量')

plt.legend(loc='upper left')
plt.show()

from matplotlib.pyplot import MultipleLocator
plt.figure(figsize = (12,6))
day_sale=data.groupby('day')['sale_count'].sum()
day_sale.plot()
plt.grid(linestyle="-.",color="gray",axis="x",alpha=0.5)
x_major_locator=MultipleLocator(1)  #把x轴的刻度间隔设置为1,并存在变量里
ax=plt.gca()  #ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
#把x轴的主刻度设置为1的倍数
plt.xlabel('日期(11月)',fontsize=12)
plt.ylabel('销量',fontsize=12)
plt.show()

f,[ax1,ax2]=plt.subplots(1,2,figsize=(12,6))
gender_data.groupby('店名').sale_count.sum().sort_values(ascending=True).plot(kind='barh',width=0.8,ax=ax1)
ax1.set_title('男士护肤品销量排名')

gender_data.groupby('店名').销售额.sum().sort_values(ascending=True).plot(kind='barh',width=0.8,ax=ax2)
ax2.set_title('男士护肤品销售额排名')

plt.subplots_adjust(wspace=0.4)
plt.show()

 

 5完整代码

  1 import pandas as pd
  2 import numpy as np
  3 
  4 data = pd.read_csv('双十一淘宝美妆数据.csv')
  5 data.head()
  6 # 对重复数据做删除处理
  7 print(data.shape)
  8 data = data.drop_duplicates(inplace=False)
  9 print(data.shape)
 10 # 此处虽然删除了重复值,但索引未变,因此应用以下方法进行重置索引
 11 print(data.index)
 12 data = data.reset_index(drop=True)
 13 print('新索引:',data.index)
 14 # 查看缺失值
 15 data.isnull().any()
 16 # 查看数据结构
 17 data.describe()
 18 # 查看sale_count列的众数
 19 mode_01 = data.sale_count.mode()
 20 print(mode_01)
 21 # 查看comment_count列的众数
 22 mode_02 = data.comment_count.mode()
 23 print(mode_02)
 24 # 填充缺失值
 25 data = data.fillna(0)
 26 # 对空值行数求和
 27 data.isnull().sum()
 28 # 给商品添加分类
 29 basic_config_data = """护肤品    套装    套装                            
 30 护肤品    乳液类    乳液    美白乳    润肤乳    凝乳    柔肤液'    亮肤乳    菁华乳    修护乳
 31 护肤品    眼部护理    眼霜    眼部精华    眼膜                    
 32 护肤品    面膜类    面膜                                                    
 33 护肤品    清洁类    洗面    洁面    清洁    卸妆    洁颜    洗颜    去角质    磨砂                        
 34 护肤品    化妆水    化妆水    爽肤水    柔肤水    补水露    凝露    柔肤液    精粹水    亮肤水    润肤水    保湿水    菁华水    保湿喷雾    舒缓喷雾
 35 护肤品    面霜类    面霜    日霜    晚霜    柔肤霜    滋润霜    保湿霜    凝霜    日间霜    晚间霜    乳霜    修护霜    亮肤霜    底霜    菁华霜
 36 护肤品    精华类    精华液    精华水    精华露    精华素                                        
 37 护肤品    防晒类    防晒霜    防晒喷雾                                                
 38 化妆品    口红类    唇釉    口红    唇彩                                            
 39 化妆品    底妆类    散粉    蜜粉    粉底液    定妆粉     气垫    粉饼    BB    CC    遮瑕    粉霜    粉底膏    粉底霜        
 40 化妆品    眼部彩妆    眉粉    染眉膏    眼线    眼影    睫毛膏                                    
 41 化妆品    修容类    鼻影    修容粉    高光    腮红                                        
 42 其他    其他    其他"""
 43 
 44 # 将字符串basic_config_data 转为字典 category_config_map
 45 category_config_map = {}
 46 for config_line in basic_config_data.split('\n'):
 47     basic_cateogry_list = config_line.strip().strip('\n').strip('    ').split('    ')
 48     main_category = basic_cateogry_list[0]
 49     sub_category = basic_cateogry_list[1]
 50     unit_category_list = basic_cateogry_list[2:-1]
 51     for unit_category in unit_category_list:
 52         if unit_category and unit_category.strip().strip('    '):
 53             category_config_map[unit_category] = (main_category,sub_category)
 54             
 55 category_config_map
 56 def func1(row):
 57     sub_type = ''   #子类别
 58     main_type = '' #主类别
 59     exist = False
 60     # 遍历item_name_cut 里每个词语
 61     for temp in row:
 62         # 如果词语包含在category_config_map里面,打上子类和主类标签
 63         if temp in category_config_map:
 64             sub_type = category_config_map.get(temp)[1]
 65             main_type = category_config_map.get(temp)[0]
 66             exist = True
 67             break
 68     if not exist:
 69         sub_type= '其他'
 70         main_type = '其他'
 71         
 72     return [sub_type, main_type]
 73 # 将子类别sub_type新增为一列
 74 data['sub_type'] = data['item_name_cut'].map(lambda r:func1(r)[0])
 75 # 将主类别main-type新增为一列
 76 data['main_type'] = data['item_name_cut'].map(lambda r:func1(r)[1])
 77 data.head()
 78 # 保存清理好的数据为Excel格式
 79 data.to_excel('./clean_beautymakeup.xlsx',sheet_name='clean_data')
 80 # 结巴分词库
 81 import jieba 
 82 # jieba.load_userdict('addwords.txt')
 83 title_cut = []
 84 for i in data.title:
 85     j = jieba.lcut(i)
 86     title_cut.append(j)
 87 # 对标题进行分词,新增item_name_cut列
 88 data['item_name_cut'] = title_cut
 89 data[['title','item_name_cut']].head()
 90 import matplotlib.pyplot as plt
 91 import seaborn as sns
 92 %matplotlib inline
 93 data.columns
 94 plt.rcParams['font.sans-serif']=['SimHei']  #指定默认字体  
 95 plt.rcParams['axes.unicode_minus']=False  #解决负号'-'显示为方块的问题
 96 
 97 plt.figure(figsize=(12,7))
 98 # 计算各店铺的商品数量
 99 data['店名'].value_counts().sort_values(ascending=False).plot.bar(width=0.8,alpha=0.6,color='b')
100 
101 plt.title('各品牌SKU数',fontsize=18)
102 plt.ylabel('商品数量',fontsize=14)
103 plt.show()
104 fig,axes = plt.subplots(1,2,figsize=(12,10))
105 
106 ax1 = data.groupby('店名').sale_count.sum().sort_values(ascending=True).plot(kind='barh',ax=axes[0],width=0.6)
107 ax1.set_title('品牌总销售量',fontsize=12)
108 ax1.set_xlabel('总销售量')
109 
110 ax2 = data.groupby('店名')['销售额'].sum().sort_values(ascending=True).plot(kind='barh',ax=axes[1],width=0.6)
111 ax2.set_title('品牌总销售额',fontsize=12)
112 ax2.set_xlabel('总销售额')
113 
114 plt.subplots_adjust(wspace=0.4)
115 plt.show()
116 fig,axes = plt.subplots(1,2,figsize=(18,12))
117 
118 data1 = data.groupby('main_type')['sale_count'].sum()
119 ax1 = data1.plot(kind='pie',ax=axes[0],autopct='%.1f%%', # 设置百分比的格式,这里保留一位小数
120 pctdistance=0.8, # 设置百分比标签与圆心的距离
121 labels= data1.index,
122 labeldistance = 1.05, # 设置标签与圆心的距离
123 startangle = 60, # 设置饼图的初始角度
124 radius = 1.2, # 设置饼图的半径
125 counterclock = False, # 是否逆时针,这里设置为顺时针方向
126 wedgeprops = {'linewidth': 1.2, },# 设置饼图内外边界的属性值
127 textprops = {'fontsize':16, 'color':'k','rotation':80}, # 设置文本标签的属性值
128 )
129 ax1.set_title('主类别销售量占比',fontsize=20)
130 
131 data2 = data.groupby('sub_type')['sale_count'].sum()
132 ax2 = data2.plot(kind='pie',ax=axes[1],autopct='%.1f%%', 
133 pctdistance=0.8, 
134 labels= data2.index,
135 labeldistance = 1.05,
136 startangle = 230, 
137 radius = 1.2, 
138 counterclock = False, 
139 wedgeprops = {'linewidth': 1.2, },
140 textprops = {'fontsize':16, 'color':'k','rotation':80}, 
141 )
142 
143 ax2.set_title('子类别销售量占比',fontsize=20)
144 
145 # 设置坐标标签
146 ax1.set_xlabel(..., fontsize=16,labelpad=38.5)
147 ax1.set_ylabel(..., fontsize=16,labelpad=38.5)
148 ax2.set_xlabel(..., fontsize=16,labelpad=38.5)
149 ax2.set_ylabel(..., fontsize=16,labelpad=38.5)
150 plt.subplots_adjust(wspace=0.4)
151 plt.show()
152 plt.figure(figsize=(18,8))
153 sns.barplot(x='店名',y='sale_count',hue='main_type',data=data,saturation=0.75,ci=0)
154 plt.title('各品牌各总类的总销量', fontsize=20)
155 plt.ylabel('销量',fontsize=16)
156 plt.xlabel('店名',fontsize=16)
157 plt.text(0,78000,'注:此处也可使用堆叠图,对比效果更直观',
158          verticalalignment='top', horizontalalignment='left',color='gray', fontsize=10)
159 # 设置刻度字体大小
160 
161 plt.figure(figsize=(18,8))
162 sns.barplot( x = '店名',
163 y = '销售额',hue = 'main_type',data =data,saturation = 0.75,ci=0,)
164 plt.ylabel('销售额',fontsize=16)
165 plt.xlabel('店名',fontsize=16)
166 plt.title('各品牌各总类的总销售额',fontsize=20)
167 # 设置刻度字体大小
168 plt.xticks(fontsize=16,rotation=45)
169 plt.yticks(fontsize=16)
170 plt.show()
171 
172 plt.xticks(fontsize=16,rotation=45)
173 plt.yticks(fontsize=16)
174 plt.show()
175 plt.figure(figsize = (16,6))
176 sns.barplot( x = '店名',
177 y = 'sale_count',hue = 'sub_type',data =data,saturation = 0.75,ci=0)
178 plt.title('各品牌各子类的总销量')
179 plt.ylabel('销量')
180 plt.show()
181 plt.figure(figsize = (14,6))
182 sns.barplot( x = '店名',
183 y = '销售额',hue = 'sub_type',data =data,saturation = 0.75,ci=0)
184 plt.title('各品牌各子类的总销售额')
185 plt.ylabel('销售额')
186 plt.show()
187 plt.figure(figsize = (12,6))
188 data.groupby('店名').comment_count.mean().sort_values(ascending=False).plot(kind='bar',width=0.8)
189 plt.title('各品牌商品的平均评论数')
190 plt.ylabel('评论数')
191 plt.show()
192 plt.figure(figsize=(18,12))
193 x = data.groupby('店名')['sale_count'].mean()
194 y = data.groupby('店名')['comment_count'].mean()
195 s = data.groupby('店名')['price'].mean()
196 txt = data.groupby('店名').id.count().index
197 sns.scatterplot(x,y,size=s,hue=s,sizes=(100,1500),data=data)
198 for i in range(len(txt)):
199     plt.annotate(txt[i],xy=(x[i],y[i]))
200 plt.ylabel('热度')
201 plt.xlabel('销量')
202 plt.legend(loc='upper left')
203 plt.show()
204 #查看价格的箱型图
205 plt.figure(figsize=(18,10))
206 sns.boxplot(x='店名',y='price',data=data)
207 plt.ylim(0,3000)#如果不限制,就不容易看清箱型,所以把Y轴刻度缩小为0-3000
208 plt.show()
209 data.groupby('店名').price.sum()
210 avg_price=data.groupby('店名').price.sum()/data.groupby('店名').price.count()
211 avg_price
212 fig = plt.figure(figsize=(12,6))
213 avg_price.sort_values(ascending=False).plot(kind='bar',width=0.8,alpha=0.6,color='b',label='各品牌平均价格')
214 y = data['price'].mean()
215 plt.axhline(y,0,5,color='r',label='全品牌平均价格')
216 plt.ylabel('各品牌平均价格')
217 plt.title('各品牌产品的平均价格',fontsize=24)
218 plt.legend(loc='best')
219 plt.show()
220 plt.figure(figsize=(18,10))
221 x = data.groupby('店名')['sale_count'].mean()
222 y = data.groupby('店名')['销售额'].mean()
223 s = avg_price
224 txt = data.groupby('店名').id.count().index
225 sns.scatterplot(x,y,size=s,sizes=(100,1500),marker='v',alpha=0.5,color='b',data=data)
226 for i in range(len(txt)):
227     plt.annotate(txt[i],xy=(x[i],y[i]),xytext = (x[i]+0.2, y[i]+0.2))  #在散点后面增加品牌信息的标签
228 plt.ylabel('销售额')
229 plt.xlabel('销量')
230 plt.legend(loc='upper left')
231 plt.show()
232 
233 f,[ax1,ax2]=plt.subplots(1,2,figsize=(12,6))
234 gender_data.groupby('店名').sale_count.sum().sort_values(ascending=True).plot(kind='barh',width=0.8,ax=ax1)
235 ax1.set_title('男士护肤品销量排名')
236 
237 gender_data.groupby('店名').销售额.sum().sort_values(ascending=True).plot(kind='barh',width=0.8,ax=ax2)
238 ax2.set_title('男士护肤品销售额排名')
239 
240 plt.subplots_adjust(wspace=0.4)
241 plt.show()
242 
243 from matplotlib.pyplot import MultipleLocator
244 plt.figure(figsize = (12,6))
245 day_sale=data.groupby('day')['sale_count'].sum()
246 day_sale.plot()
247 plt.grid(linestyle="-.",color="gray",axis="x",alpha=0.5)
248 x_major_locator=MultipleLocator(1)  #把x轴的刻度间隔设置为1,并存在变量里
249 ax=plt.gca()  #ax为两条坐标轴的实例
250 ax.xaxis.set_major_locator(x_major_locator)
251 #把x轴的主刻度设置为1的倍数
252 plt.xlabel('日期(11月)',fontsize=12)
253 plt.ylabel('销量',fontsize=12)
254 plt.show()

6总结

 

通过数据分析我们可以得出美妆类别中护肤品销量远大于化妆品,其中清洁类、化妆水、面霜等基础护肤类销量最高;

男士购买美妆集中在护肤品类,其中妮维雅品牌是最受男士喜爱的品牌;

价格和热度对销售量有关联,平价基础产品是大多数消费者的选择;

其中还有一些可以更优代码调试因为代码理解不够还有能力问题没有最终执行出来,但是在过程中还是学会了许多优秀代码,还要多学习这些知识。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------恢复内容结束------------

posted @ 2021-06-18 19:02  Molio  阅读(2050)  评论(0编辑  收藏  举报