关注微信公共号:小程在线
关注CSDN博客:程志伟的博客
#6.4.1结论先行
'''
广东、上海、北京的销售额、销量以及客户数量都是最高的
销售额与销量1-8月呈上升趋势,但是8月份之后就开始下降
618和双十一活动效果基本没有得到有效的回报,复盘一下618与双十一活动的内容。
销售额与销量在5月、7月、8月有均有上升,这三个月的新客户都有增长,幅度也不少,证明拉新活动效果不错;9月份下降,加上9月份的新客户下跌,还有9月份下订单的客户也减少了(其中新客下单的数量减少了四分之三,老客只是稍微下降一点点),是否因为9月份的拉新活动投入减少了呢?也可拆解是哪一渠道的新客减少了。
'''
#6.4.2各省销量、销售额情况
local_situation = data.groupby('local').agg(销量=('buy_cnt','sum'),销售额=('amount','sum')).sort_values('销售额')
local_situation['销售额'] = local_situation['销售额'].astype('int')
plt.figure(figsize=(16,8))
plt.barh(local_situation.index,local_situation['销售额'])
for i,j in enumerate(local_situation['销售额']):
plt.text(j+200,local_situation['销售额'].index[i],j)
plt.title('销售额')
plt.show()
plt.figure(figsize=(16,8))
plt.barh(local_situation.index,local_situation['销量'])
for i,j in enumerate(local_situation['销量']):
plt.text(j+200,local_situation['销量'].index[i],j)
plt.title('销量')
plt.show()
data_date = data.groupby('date').agg(销售额=('amount','sum'),销量=('buy_cnt','sum'))
data_date
Out[11]:
销售额 销量
date
2020-01-05 77216.52 580
2020-01-06 61146.03 565
2020-01-07 82381.21 706
2020-01-08 56344.74 446
2020-01-09 58278.71 449
... ...
2020-11-17 274274.37 880
2020-11-18 1148309.01 7809
2020-11-19 1124239.09 7628
2020-11-20 267638.53 685
2020-11-21 117472.30 291
[322 rows x 2 columns]
plt.figure(figsize=(20,5))
plt.plot(data_date.index,data_date['销售额'])
#plt.xticks([]) #隐藏坐标轴
#plt.xticks([data_date.index.min(),'2020-06-18','2020-11-11'])
plt.title('销售额')
plt.show()
plt.figure(figsize=(20,5))
plt.plot(data_date.index,data_date['销量'])
#plt.xticks([]) #隐藏坐标轴
#plt.xticks([data_date.index.min(),'2020-06-18','2020-11-11'])
plt.title('销量')
plt.show()
data_month = data.groupby('month').agg(销售额=('amount','sum'),销量=('buy_cnt','sum'))
plt.figure(figsize=(16,5))
plt.plot(data_month.index,data_month['销售额'])
plt.title('销售额')
plt.xticks(data_month.index)
plt.show()
plt.figure(figsize=(16,5))
plt.plot(data_month.index,data_month['销量'])
plt.title('销量')
plt.xticks(data_month.index)
plt.show()
data_user = data.groupby('user_id').agg(首次购买月份=('month','min')).reset_index()
user_all = pd.merge(data,data_user,on='user_id')
user_all['新老客户'] = np.where(user_all['month']==user_all['首次购买月份'],'新客户','老客户')
user_all.head()
Out[17]:
order_id product_id ... 首次购买月份 新老客户
0 2294359932054536986 1515966223509089906 ... 4 新客户
1 2294444024058086220 2273948319057183658 ... 4 新客户
2 2297951447913857849 2273948319057183658 ... 4 新客户
3 2297951447913857849 1515966223509088613 ... 4 新客户
4 2388440981134625996 1515966223517999094 ... 4 老客户
[5 rows x 18 columns]
user_all_new = user_all[user_all['新老客户']=='新客户'].groupby('month').agg(销售额=('amount','sum'))
user_all_new['销量'] = user_all[user_all['新老客户']=='新客户'].groupby('month').agg(销量=('buy_cnt','sum'))
user_all_new
Out[18]:
销售额 销量
month
1 1729464.93 13449
2 1710658.45 12215
3 1934702.29 11371
4 1214789.79 8221
5 5793011.10 27143
6 4383038.68 18655
7 11668313.82 50192
8 17503323.05 55533
9 8248995.19 26745
10 11695494.47 63289
11 7104580.63 39171
user_all_old = user_all[user_all['新老客户']=='老客户'].groupby('month').agg(销售额=('amount','sum'))
user_all_old['销量'] = user_all[user_all['新老客户']=='老客户'].groupby('month').agg(销量=('buy_cnt','sum'))
user_all_old
Out[19]:
销售额 销量
month
2 506013.86 4733
3 906313.29 6296
4 459660.89 3127
5 1864321.41 11523
6 3106273.64 20492
7 4380494.17 23212
8 9877576.61 40551
9 8548137.42 40564
10 7681078.28 34902
11 4670393.91 24315
plt.figure(figsize=(16,8))
line1, = plt.plot(user_all_new.index,user_all_new['销售额'],c='r')
line2, = plt.plot(user_all_old.index,user_all_old['销售额'],c='b')
plt.legend([line1,line2],['新客','老客'])
plt.xticks(user_all_new.index)
plt.title('新老客户销售额对比')
plt.show()
plt.figure(figsize=(16,8))
line1, = plt.plot(user_all_new.index,user_all_new['销量'],c='r')
line2, = plt.plot(user_all_old.index,user_all_old['销量'],c='b')
plt.legend([line1,line2],['新客','老客'])
plt.xticks(user_all_new.index)
plt.title('新老客户销量对比')
plt.show()
data_weekday = data.groupby('weekday').agg(销售额=('amount','sum'),销量=('buy_cnt','sum'))
plt.figure(figsize=(16,5))
plt.plot(data_weekday.index,data_weekday['销售额'])
plt.title('销售额')
plt.xticks(data_weekday.index)
plt.show()
plt.figure(figsize=(16,5))
plt.plot(data_weekday.index,data_weekday['销量'])
plt.title('销量')
plt.xticks(data_weekday.index)
plt.show()
data_hour = data.groupby('hour').agg(销售额=('amount','sum'),销量=('buy_cnt','sum'))
plt.figure(figsize=(16,5))
plt.plot(data_hour.index,data_hour['销售额'])
plt.title('销售额')
plt.xticks(data_hour.index)
plt.show()
plt.figure(figsize=(16,5))
plt.plot(data_hour.index,data_hour['销量'])
plt.title('销量')
plt.xticks(data_hour.index)
plt.show()
new_user = data.groupby('user_id').agg({'month':'min'}).reset_index()
new_user.head()
Out[27]:
user_id month
0 1515915625439951872 7
1 1515915625440038400 9
2 1515915625440051712 10
3 1515915625440099840 5
4 1515915625440121600 5
new_user_month = new_user.groupby('month').agg(新用户数量=('user_id','nunique'))
new_user_month['环比'] = new_user_month.pct_change()
new_user_month
Out[28]:
新用户数量 环比
month
1 1813 nan
2 1613 -0.11
3 1491 -0.08
4 4178 1.80
5 13913 2.33
6 8951 -0.36
7 22036 1.46
8 22052 0.00
9 8163 -0.63
10 5607 -0.31
11 2938 -0.48
plt.figure(figsize=(16,5))
plt.plot(new_user_month.index,new_user_month['新用户数量'])
plt.title('新用户数量')
plt.xticks(new_user_month.index)
plt.show()
data_buy = data.groupby(['user_id','month','date']).agg(是否购买=('user_id','nunique')).reset_index()
data_buy_month = data_buy.groupby(['user_id','month']).agg(每月购买次数=('是否购买','sum')).reset_index()
data_repurchase = data_buy_month[data_buy_month['每月购买次数']>=2].groupby('month').agg(每月复购人数=('user_id','nunique'))
data_repurchase['每月购买人数'] = data.groupby('month').agg(每月购买人数=('user_id','nunique'))
data_repurchase['复购率'] = data_repurchase['每月复购人数'] / data_repurchase['每月购买人数']
data_repurchase
Out[32]:
每月复购人数 每月购买人数 复购率
month
1 333 1813 0.18
2 511 2237 0.23
3 674 2572 0.26
4 839 5410 0.16
5 3576 17156 0.21
6 2750 13841 0.20
7 8179 29807 0.27
8 10377 35061 0.30
9 6662 19545 0.34
10 4863 14288 0.34
11 2257 8498 0.27
fig,ax1 = plt.subplots(figsize=(16,5))
line1, = ax1.plot(data_repurchase.index,data_repurchase['复购率'],c='r')
ax1.set_ylabel('复购率')
ax2 = ax1.twinx() #twinx将ax1的X轴共用与ax2
line2, = ax2.plot(data_repurchase.index,data_repurchase['每月复购人数'])
ax2.set_ylabel('每月复购人数')
plt.title('每月复购率及复购人数')
plt.xticks(data_repurchase.index)
plt.legend([line1,line2],['复购率','每月复购人数'])
plt.show()
plt.subplots(figsize=(16,5))
plt.plot(data_repurchase.index,data_repurchase['每月购买人数'],c='r')
plt.title('每月购买人数')
plt.xticks(data_repurchase.index)
plt.show()
data_user = data.groupby('user_id').agg(首次购买月份=('month','min')).reset_index()
#data_buy_month 是上面求得的:每个用户每月的购买次数
user = pd.merge(data_buy_month,data_user)
user['新老客户'] = np.where(user['month']==user['首次购买月份'],'新客户','老客户')
#新客户购买人数
user_buy = user[user['新老客户']=='新客户'].groupby('month').agg(新客购买人数=('user_id','nunique'))
#老客户购买人数
user_buy['老客购买人数'] = user[user['新老客户']=='老客户'].groupby('month').agg(老客购买人数=('user_id','nunique'))
user_buy = user_buy.fillna(0)
user_buy
Out[35]:
新客购买人数 老客购买人数
month
1 1813 0.00
2 1613 624.00
3 1491 1081.00
4 4178 1232.00
5 13913 3243.00
6 8951 4890.00
7 22036 7771.00
8 22052 13009.00
9 8163 11382.00
10 5607 8681.00
11 2938 5560.00
plt.subplots(figsize=(16,5))
line1, = plt.plot(user_buy.index,user_buy['新客购买人数'],c='r')
line2, = plt.plot(user_buy.index,user_buy['老客购买人数'])
plt.title('新老客购买人数')
plt.xticks(user_buy.index)
plt.legend([line1,line2],['新客','老客'])
plt.show()