一,選題背景
如今社會因為科技的進步,各種生活方式都發生了變化。例如購物如今都是使用網上購物,而線下實體店占比很少。我們可以通過這個數據分析可以分析出購買化妝品的客戶的關注度(評論數)是多少?各產品銷量分布情況? 哪些產品的賣得最好,哪些牌子最受歡迎,哪些化妝品是大家最需要的? 不同商家之間的差異,及促銷打折力度? 模擬定價系統及推薦系統?然后商家就可以通過這個修改自家商品和優惠力度。
二、大數據分析設計方案
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總結
通過數據分析我們可以得出美妝類別中護膚品銷量遠大於化妝品,其中清潔類、化妝水、面霜等基礎護膚類銷量最高;
男士購買美妝集中在護膚品類,其中妮維雅品牌是最受男士喜愛的品牌;
價格和熱度對銷售量有關聯,平價基礎產品是大多數消費者的選擇;
其中還有一些可以更優代碼調試因為代碼理解不夠還有能力問題沒有最終執行出來,但是在過程中還是學會了許多優秀代碼,還要多學習這些知識。
------------恢復內容結束------------