电商客户特征识别数据分析 - 数据分析报告
数据分析报告的通用流程
- 背景介绍
- 数据分析
- 算指标(分组、聚合、透视表、交叉表)
- 画图
- 反复循环
- 结论和建议
电商客户特征识别数据分析 流程
- 引入问题
- 背景介绍
- 提出问题
- 研究方法
- 订单分析
- 客户匹配(找出无价值客户)
- 客户特征分析
- 研究结论
- 研究总结
- 相关建议
引入问题
背景介绍
xx电商平台
- 平台概述:xx旗下O2O生鲜电商平台
- 主营商品:果蔬、肉蛋、水产、粮油、水饮、零食等
- 主要特色:半成品配送,环保方便;社区自提柜,产销联合
- 服务区域:北京市、上海市、深圳市
提出问题
- 优惠促销商品利润微薄,是企业用以发展新客户的营销手段
- 有一类客户基本只购买优惠促销商品,很少购买正价商品,这类客户对企业没有价值,只会增加营销成本
- 企业想要将无价值客户识别出来,同正常客户做区分,以便针对性的改变营销策略
问题:和正常客户相比,无价值客户有什么特征?
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# plt.style.use('seaborn')
plt.rcParams['font.family'] = ['Arial Unicode MS', 'Microsoft Yahei', 'SimHei', 'sans-serif']
数据载入
shop = pd.read_excel('shopmall2.xlsx', None)
shop
OrderedDict([('订单信息', 订单ID 客户ID 订单状态 优惠类型
0 47739 5245 1 0
1 341269 5245 0 0
2 32690 5254 1 0
3 45641 5254 1 0
4 66116 5254 1 0
5 79014 5254 1 0
6 79058 5254 0 0
7 79221 5254 1 0
8 79608 5254 1 0
9 146455 5254 1 0
10 148275 5254 1 0
11 149066 5254 1 1
12 240219 5286 1 1
13 287500 5286 1 0
14 287502 5286 0 0
15 290370 5286 0 0
16 290372 5286 0 0
17 378615 5286 0 0
18 378618 5286 0 0
19 378621 5286 0 0
20 66457 5292 1 0
21 211972 5292 0 1
22 226715 5292 1 0
23 237862 5292 0 1
24 246600 5292 1 0
25 248991 5292 0 1
26 249847 5292 1 1
27 256960 5292 1 1
28 422975 5292 1 0
29 148707 5474 1 0
... ... ... ... ...
29120 445946 169197 0 1
29121 442081 169217 1 1
29122 442299 169269 1 1
29123 442333 169276 1 1
29124 442649 169299 0 1
29125 442726 169299 1 1
29126 443197 169318 1 1
29127 444034 169318 1 1
29128 443767 169393 0 1
29129 443770 169393 1 0
29130 443771 169393 1 0
29131 444237 169393 1 0
29132 443940 169445 0 1
29133 444077 169445 1 0
29134 445037 169445 0 0
29135 444721 169598 1 0
29136 445432 169598 0 1
29137 445444 169598 1 1
29138 444984 169613 1 1
29139 445427 169614 1 1
29140 445249 169691 1 1
29141 445279 169699 1 0
29142 447620 169699 1 1
29143 445884 169815 1 1
29144 447102 169832 1 1
29145 446758 169934 1 1
29146 446759 169934 1 0
29147 447165 169976 0 1
29148 447274 169976 0 1
29149 447375 169976 1 1
[29150 rows x 4 columns]),
('货物信息', 订单ID 货物ID 货物名称 优惠额度
0 264971 103247 自然乐园水果礼盒 >15
1 264994 103247 自然乐园水果礼盒 >15
2 266829 103247 自然乐园水果礼盒 >15
3 267232 103247 自然乐园水果礼盒 >15
4 269051 103247 自然乐园水果礼盒 >15
5 256809 101645 紫甘蓝 >15
6 256984 101645 紫甘蓝 >15
7 258700 101645 紫甘蓝 >15
8 268496 101645 紫甘蓝 >15
9 268510 101645 紫甘蓝 >15
10 275809 101645 紫甘蓝 >15
11 277573 101645 紫甘蓝 >15
12 284473 101645 紫甘蓝 >15
13 287662 101645 紫甘蓝 >15
14 287668 101645 紫甘蓝 >15
15 289079 101645 紫甘蓝 >15
16 290400 101645 紫甘蓝 >15
17 264515 103306 滋久 >15
18 266465 103306 滋久 >15
19 266994 103306 滋久 >15
20 272357 103306 滋久 >15
21 277529 103306 滋久 >15
22 258249 103305 滋久 >15
23 260035 103305 滋久 >15
24 263743 103305 滋久 >15
25 268881 103305 滋久 >15
26 271752 104052 猪蹄(一只) >15
27 274915 104052 猪蹄(一只) >15
28 276892 104052 猪蹄(一只) >15
29 277573 104052 猪蹄(一只) >15
... ... ... ... ...
3100 284553 102103 冷冻鲜肉 0
3101 284927 102103 冷冻鲜肉 0
3102 285226 102103 冷冻鲜肉 0
3103 285307 102103 冷冻鲜肉 0
3104 285552 102103 冷冻鲜肉 0
3105 286058 102103 冷冻鲜肉 0
3106 286168 102103 冷冻鲜肉 0
3107 286815 102103 冷冻鲜肉 0
3108 287216 102103 冷冻鲜肉 0
3109 287519 102103 冷冻鲜肉 0
3110 291209 102103 冷冻鲜肉 0
3111 291234 102103 冷冻鲜肉 0
3112 291584 102103 冷冻鲜肉 0
3113 292142 102103 冷冻鲜肉 0
3114 284006 104323 牙签 0
3115 263864 103376 500元充值卡 0
3116 268178 103376 500元充值卡 0
3117 268277 103376 500元充值卡 0
3118 285796 103376 500元充值卡 0
3119 286098 103376 500元充值卡 0
3120 257077 103376 500元充值卡 0
3121 261240 103376 500元充值卡 0
3122 265594 103376 500元充值卡 0
3123 265982 103376 500元充值卡 0
3124 266432 103376 500元充值卡 0
3125 282903 103376 500元充值卡 0
3126 283994 103376 500元充值卡 0
3127 284171 103376 500元充值卡 0
3128 256095 103376 500元充值卡 0
3129 256499 103376 500元充值卡 0
[3130 rows x 4 columns]),
('顾客信息',
客户ID 登陆次数 注册时间(距1970-1-1的秒数) 本次购买时间(距1970-1-1的秒数) 经验值 订单数
0 5245 55 1430413266 1495339734 206 1
1 5254 69 1430413266 1499041945 428 13
2 5286 57 1430413266 1509936376 280 1
3 5292 184 1430413266 1510135868 643 5
4 5474 71 1430413266 1481185064 61 2
5 5544 520 1430413266 1511065463 5033 103
6 5547 30 1430413266 1510577047 477 8
7 5552 2699 1430413266 1511245956 12673 164
8 5560 39 1430413266 1481811865 27 0
9 5580 137 1430413266 1506301413 236 2
10 5625 463 1430413266 1510935255 2087 14
11 5628 356 1430413266 1511145498 11494 166
12 5661 11675 1430413266 1511224143 34701 487
13 5690 1769 1430413266 1511175196 13398 182
14 5699 634 1430413266 1510274405 8415 121
15 5701 94 1430413266 1481201883 512 8
16 5723 29 1430413266 1488960790 163 2
17 5725 1372 1430413266 1510625605 9243 126
18 5726 1576 1430413266 1511162452 13078 193
19 5727 102 1430413266 1510223946 2574 37
20 5728 164 1430413266 1498397004 863 16
21 5734 1193 1430413266 1511169496 6852 86
22 5740 826 1430413266 1506164574 2309 19
23 5767 80 1430413266 1506216500 1681 17
24 5785 62 1430413266 1506783217 249 5
25 5789 170 1430413266 1511140849 1373 20
26 5804 730 1430413266 1511190699 2851 28
27 5816 374 1430413266 1508748129 1225 15
28 5880 206 1430413266 1511146306 3913 70
29 5912 288 1430413266 1510033445 1755 26
... ... ... ... ... ... ...
2970 168758 18 1510124356 1510960789 105 2
2971 168792 15 1510136872 1510661772 60 1
2972 168831 78 1510182960 1511241351 635 10
2973 168834 12 1510187047 1511239077 102 3
2974 168948 6 1510233924 1510234362 48 1
2975 168976 7 1510275950 1511166273 66 3
2976 168981 30 1510278673 1511184888 146 2
2977 168991 6 1510280818 1510456811 129 3
2978 169031 10 1510287019 1510613142 27 1
2979 169049 7 1510292348 1510392612 43 1
2980 169084 11 1510303482 1510927533 94 1
2981 169106 23 1510312431 1511054357 215 2
2982 169132 18 1510324837 1511090706 75 2
2983 169197 38 1510373093 1510890780 66 1
2984 169217 28 1510377281 1510877581 38 1
2985 169269 4 1510388952 1510388952 7 1
2986 169276 6 1510391145 1511008391 50 1
2987 169299 9 1510397978 1511187978 27 1
2988 169318 8 1510407061 1510615622 154 2
2989 169393 14 1510464820 1511147607 187 3
2990 169445 13 1510487420 1510645072 84 1
2991 169598 35 1510618726 1510983354 63 2
2992 169613 11 1510627070 1510746988 12 1
2993 169614 9 1510627121 1510889773 33 1
2994 169691 6 1510657422 1510706666 73 1
2995 169699 20 1510662595 1511217077 153 3
2996 169815 13 1510753437 1511159975 57 1
2997 169832 12 1510793074 1511142183 62 1
2998 169934 14 1510841381 1510971292 68 2
2999 169976 16 1510908302 1511184987 27 1
[3000 rows x 6 columns])])
#### 数据整体概览
dingdan = shop['订单信息']
dingdan.head()
image.png
huowu = shop['货物信息']
huowu.head()
image.png
guke = shop['顾客信息']
guke.head()
image.png
数据规整(略)
数据情况
数据由3个单元表组成:
订单信息:
- 订单ID
- 客户ID
- 订单状态
- 1表示正常完成订单
- 0表示未完成订单
- 优惠类型
- 0表示无优惠
- 1表示优惠
货物信息:
- 订单ID
- 货物ID
- 货物名称
- 优惠额度
- 分组显示优惠额度
顾客信息:
- 客户ID
- 登陆次数
- 注册时间(距1970-1-1的秒数)
- 本次购买时间(距1970-1-1的秒数)
- 经验值
- 订单数
研究方法
订单分析
分析订单的优惠额度
指标创建:不同优惠额度的订单数量
huowu.head()
image.png
指标创建
a = huowu.groupby('优惠额度').size()
a
优惠额度
0 1439
0-2 584
10-15 38
2-5 596
5-10 310
>15 163
dtype: int64
指标可视化
plt.bar(a.index, a)
<BarContainer object of 6 artists>
output_16_1.png
a.plot.bar(figsize=(18, 8), alpha=0.7)
plt.xticks(rotation = 0)
<matplotlib.axes._subplots.AxesSubplot at 0x8c16e10>
output_17_1.png
创建堆叠柱状图
创建一个新表绘制堆叠柱状图
0 1439
0-2 584
10-15 38
2-5 596
5-10 310
>15 163
other 0-2 2-5
<5 1439 584 596
5-10 310 nan nan
10-15 38 nan nan
>15 163 nan nan
d = pd.DataFrame(
[
[np.nan, 584, 596],
[310, np.nan, np.nan],
[38, np.nan, np.nan],
[163, np.nan, np.nan],
],
index=['<5', '5-10', '10-15', '>15'],
columns=['other', '0-2', '2-5'],
)
d
image.png
d.plot.bar(figsize=(18, 9), alpha=0.7, stacked=True)
plt.grid(linewidth=0.3, alpha=0.7)
plt.title('不同优惠额度的订单数量', fontsize=24)
plt.xticks(rotation = 0)
image.png
分析订单商品排行
原价商品销量前10排名
huowu.head()
image.png
huowu[huowu['优惠额度'] == '0'] # 原价商品
huowu[huowu['优惠额度'] == '0'].groupby('货物名称').size().sort_values(ascending=False)[:10]
_ = huowu[huowu['优惠额度'] == '0'].groupby('货物名称').size().sort_values(ascending=False)[:10]\
.reset_index().set_index('货物名称').rename(columns={0: '销量'})
_.index.name = ''
_.columns.name = '货物名称'
_
image.png
优惠商品销量前10排名
huowu[-(huowu['优惠额度'] == '0')].groupby('货物名称').size().sort_values(ascending=False)[:10]
货物名称
蒲江耙耙柑 118
蒲江不知火丑柑【原产地直供】 61
藕 54
青椒 41
小葱 39
泰国龙眼【进口商品】800g 39
西红柿 38
云南青枣 37
小白菜 34
新土豆 34
dtype: int64
客户匹配
“无价值客户”指标量化定义
什么是无价值客户?
当客户已成交订单中,优惠商品的订单大于等于75%时,定义客户为无价值客户
分离正常客户和无价值客户
dingdan.head()
image.png
查看未完成和已完成订单的数量
dingdan.groupby('订单状态').size()
订单状态
0 5013
1 24137
dtype: int64
生成已完成订单数据表
dingdan2 = dingdan[dingdan['订单状态'] == 1]
dingdan2.head()
image.png
客户ID对应的正常和优惠订单的数量
交叉表
方法1:使用交叉表函数实现
pd.crosstab(dingdan2['客户ID'], dingdan2['优惠类型']).head()
image.png
方法2:使用透视表实现交叉表
dingdan2.pivot_table('订单ID', index='客户ID', columns='优惠类型', aggfunc=len, fill_value=0).head()
image.png
方法3:使用分组聚合实现交叉表
dingdan2.head()
image.png
cross = dingdan2.groupby(['客户ID', '优惠类型']).size().unstack().fillna(0).astype(np.int)
cross.head()
image.png
计算优惠订单大于等于75%的数据
8/(8+1) # 正常订单比例
1/(8+1) # 优惠订单比例****
最终目的获取无价值客户ID
cross.sum(axis=1) # 按列求和
cross[1] / cross.sum(axis=1) # 每个用户优惠订单比例
s = cross[(cross[1] / cross.sum(axis=1) >= 0.75)] # 无价值客户
s.index # 无价值客户的ID
Int64Index([ 5560, 5580, 5723, 6310, 6353, 6380, 7255, 7590,
10822, 10885,
...
169269, 169276, 169299, 169318, 169613, 169614, 169691, 169815,
169832, 169976],
dtype='int64', name='客户ID', length=1669)
分离 正常客户 和 无价值客户
cross['客户类别'] = 1 # 所有客户都设为有价值客户
cross.loc[s.index, '客户类别'] = 0 # 将无价值客户的类别替换为0
cross.head()
image.png
把 cross 的 客户类别 列插入 顾客信息 单元表中
注意插入新列时,行的索引和关联列必须对齐
cross['客户类别'].head()
客户ID
5245 1
5254 1
5286 1
5292 1
5474 1
Name: 客户类别, dtype: int64
guke2 = guke.set_index('客户ID')
guke2.head()
image.png
将客户ID设为guke信息表行索引,插入列数据时候,两个表的索引会自动对齐
guke2['客户类别'] = cross['客户类别'] # 插入新列数据
guke2.head()
image.png
cross.shape
guke2.shape
(3000, 6)
检查新列是否正常
cross.groupby('客户类别').size()
guke2.groupby('客户类别').size()
客户类别
0 1669
1 1331
dtype: int64
guke2.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3000 entries, 5245 to 169976
Data columns (total 6 columns):
登陆次数 3000 non-null int64
注册时间(距1970-1-1的秒数) 3000 non-null int64
本次购买时间(距1970-1-1的秒数) 3000 non-null int64
经验值 3000 non-null int64
订单数 3000 non-null int64
客户类别 3000 non-null int64
dtypes: int64(6)
memory usage: 164.1 KB
正常客户和无价值客户分离完成
客户特征分析
分析正常客户和无价值客户的特征和行为差异
guke2.head()
image.png
正常客户和无价值客户比例
x = guke2.groupby('客户类别').size()
x
客户类别
0 1669
1 1331
dtype: int64
x / x.sum()
x2 = (x / x.sum()).rename({0: '无价值客户', 1: '正常客户'})
x2
客户类别
无价值客户 0.556333
正常客户 0.443667
dtype: float64
plt.figure(figsize=(8, 8))
plt.pie(
x2, # 百分比
labels = x2.index, # 名称
explode=(0, 0.03), # 突出块,突出比例
autopct='%1.1f%%', # 显示百分比方式
startangle=90, # 饼图起始的角度,度数,默认0为右侧水平180度开始,逆时针旋转
)
plt.axis('equal') #正圆形饼图,x/y轴尺寸相等.默认是扁图
plt.show()
output_59_0.png
结论:无价值客户的数量略大于正常客户
比较各列数据在不同客户类别下的差异
gukeMean = guke2.groupby('客户类别').mean().rename(index={0: '无价值客户', 1: '正常客户'})
gukeMean
image.png
年平均登陆次数差异
gukeMean['登陆次数']
客户类别
无价值客户 77.547633
正常客户 257.391435
Name: 登陆次数, dtype: float64
gukeMean['登陆次数'].plot.bar()
plt.xticks(rotation = 0)
<matplotlib.axes._subplots.AxesSubplot at 0x97cb208>
output_65_1.png
结论:正常客户的年平均登陆次数远大于无价值客户
客户会员经验平均值差异
gukeMean['经验值']
客户类别
无价值客户 259.021570
正常客户 1190.660406
Name: 经验值, dtype: float64
gukeMean['经验值'].plot.bar()
plt.xticks(rotation = 0)
<matplotlib.axes._subplots.AxesSubplot at 0x95b0c50>
output_69_1.png
结论:正常客户的经验值远大于无价值客户
客户平均订单数差异
gukeMean['订单数']
客户类别
无价值客户 2.980827
正常客户 15.408715
Name: 订单数, dtype: float64
gukeMean['订单数'].plot.bar()
plt.xticks(rotation = 0)
<matplotlib.axes._subplots.AxesSubplot at 0x8d83f28>
output_73_1.png
结论:正常客户订单数远大于无价值客户
注册时间和购买时间差异
增加1列,间隔天数
,(注册时间到本次购买时间的间隔天数)
无价值用户和正常用户的平均间隔天数差异
无价值客户和正常客户注册当天即下单购物的比例
方法1:使用相隔天数列计算注册后当天购物的客户
计算无价值客户和正常客户注册当天购物的比例
guke2.head()
登陆次数 | 注册时间(距1970-1-1的秒数) | 本次购买时间(距1970-1-1的秒数) | 经验值 | 订单数 | 客户类别 | |
---|---|---|---|---|---|---|
客户ID | ||||||
5245 | 55 | 1430413266 | 1495339734 | 206 | 1 | 1 |
5254 | 69 | 1430413266 | 1499041945 | 428 | 13 | 1 |
5286 | 57 | 1430413266 | 1509936376 | 280 | 1 | 1 |
5292 | 184 | 1430413266 | 1510135868 | 643 | 5 | 1 |
5474 | 71 | 1430413266 | 1481185064 | 61 | 2 | 1 |
guke2['间隔天数'] = (guke2['本次购买时间(距1970-1-1的秒数)']-guke2['注册时间(距1970-1-1的秒数)'])/86400
guke2.head()
登陆次数 | 注册时间(距1970-1-1的秒数) | 本次购买时间(距1970-1-1的秒数) | 经验值 | 订单数 | 客户类别 | 间隔天数 | |
---|---|---|---|---|---|---|---|
客户ID | |||||||
5245 | 55 | 1430413266 | 1495339734 | 206 | 1 | 1 | 751.463750 |
5254 | 69 | 1430413266 | 1499041945 | 428 | 13 | 1 | 794.313414 |
5286 | 57 | 1430413266 | 1509936376 | 280 | 1 | 1 | 920.406366 |
5292 | 184 | 1430413266 | 1510135868 | 643 | 5 | 1 | 922.715301 |
5474 | 71 | 1430413266 | 1481185064 | 61 | 2 | 1 | 587.636551 |
t = guke2.groupby('客户类别')['间隔天数'].median().rename(index={0: '无价值客户',1: '正常客户'})
t
客户类别
无价值客户 38.766852
正常客户 372.295220
Name: 间隔天数, dtype: float64
t.plot.bar()
plt.xticks(rotation = 0)
(array([0, 1]), <a list of 2 Text xticklabel objects>)
1.png
结论:无价值客户购买和注册时间间隔显著小于正常客户
计算无价值客户和正常客户注册当天购物的比例
guke2.head()
登陆次数 | 注册时间(距1970-1-1的秒数) | 本次购买时间(距1970-1-1的秒数) | 经验值 | 订单数 | 客户类别 | 间隔天数 | |
---|---|---|---|---|---|---|---|
客户ID | |||||||
5245 | 55 | 1430413266 | 1495339734 | 206 | 1 | 1 | 751.463750 |
5254 | 69 | 1430413266 | 1499041945 | 428 | 13 | 1 | 794.313414 |
5286 | 57 | 1430413266 | 1509936376 | 280 | 1 | 1 | 920.406366 |
5292 | 184 | 1430413266 | 1510135868 | 643 | 5 | 1 | 922.715301 |
5474 | 71 | 1430413266 | 1481185064 | 61 | 2 | 1 | 587.636551 |
方法1:使用相隔天数列计算注册后当天购物的客户
guke2[guke2['间隔天数'] < 1].shape
(316, 7)
guke2[guke2['间隔天数'] < 1].index
Int64Index([107809, 107819, 108768, 109259, 109410, 109654, 109658, 110122,
110172, 110223,
...
158720, 158730, 162931, 163525, 168745, 168748, 168751, 168948,
169269, 169691],
dtype='int64', name='客户ID', length=316)
方法2:手动计算
In [52]:
day = (guke2['注册时间(距1970-1-1的秒数)']+ 86400) >= guke2['本次购买时间(距1970-1-1的秒数)']
day.head()
guke2[day].index
Out[52]:
Int64Index([107809, 107819, 108768, 109259, 109410, 109654, 109658, 110122,
110172, 110223,
...
158720, 158730, 162931, 163525, 168745, 168748, 168751, 168948,
169269, 169691],
dtype='int64', name='客户ID', length=316)
#新增列 ,是否当天购买, 是1,不是0
guke2['是否当天购买'] = 0
guke2.loc[guke2[day].index,['是否当天购买']] = 1
guke2
登陆次数 | 注册时间(距1970-1-1的秒数) | 本次购买时间(距1970-1-1的秒数) | 经验值 | 订单数 | 客户类别 | 间隔天数 | 是否当天购买 | |
---|---|---|---|---|---|---|---|---|
客户ID | ||||||||
5245 | 55 | 1430413266 | 1495339734 | 206 | 1 | 1 | 751.463750 | 0 |
5254 | 69 | 1430413266 | 1499041945 | 428 | 13 | 1 | 794.313414 | 0 |
5286 | 57 | 1430413266 | 1509936376 | 280 | 1 | 1 | 920.406366 | 0 |
5292 | 184 | 1430413266 | 1510135868 | 643 | 5 | 1 | 922.715301 | 0 |
5474 | 71 | 1430413266 | 1481185064 | 61 | 2 | 1 | 587.636551 | 0 |
5544 | 520 | 1430413266 | 1511065463 | 5033 | 103 | 1 | 933.474502 | 0 |
5547 | 30 | 1430413266 | 1510577047 | 477 | 8 | 1 | 927.821539 | 0 |
5552 | 2699 | 1430413266 | 1511245956 | 12673 | 164 | 1 | 935.563542 | 0 |
5560 | 39 | 1430413266 | 1481811865 | 27 | 0 | 0 | 594.891192 | 0 |
5580 | 137 | 1430413266 | 1506301413 | 236 | 2 | 0 | 878.335035 | 0 |
5625 | 463 | 1430413266 | 1510935255 | 2087 | 14 | 1 | 931.967465 | 0 |
5628 | 356 | 1430413266 | 1511145498 | 11494 | 166 | 1 | 934.400833 | 0 |
5661 | 11675 | 1430413266 | 1511224143 | 34701 | 487 | 1 | 935.311076 | 0 |
5690 | 1769 | 1430413266 | 1511175196 | 13398 | 182 | 1 | 934.744560 | 0 |
5699 | 634 | 1430413266 | 1510274405 | 8415 | 121 | 1 | 924.318738 | 0 |
5701 | 94 | 1430413266 | 1481201883 | 512 | 8 | 1 | 587.831215 | 0 |
5723 | 29 | 1430413266 | 1488960790 | 163 | 2 | 0 | 677.633380 | 0 |
5725 | 1372 | 1430413266 | 1510625605 | 9243 | 126 | 1 | 928.383553 | 0 |
5726 | 1576 | 1430413266 | 1511162452 | 13078 | 193 | 1 | 934.597060 | 0 |
5727 | 102 | 1430413266 | 1510223946 | 2574 | 37 | 1 | 923.734722 | 0 |
5728 | 164 | 1430413266 | 1498397004 | 863 | 16 | 1 | 786.848819 | 0 |
5734 | 1193 | 1430413266 | 1511169496 | 6852 | 86 | 1 | 934.678588 | 0 |
5740 | 826 | 1430413266 | 1506164574 | 2309 | 19 | 1 | 876.751250 | 0 |
5767 | 80 | 1430413266 | 1506216500 | 1681 | 17 | 1 | 877.352245 | 0 |
5785 | 62 | 1430413266 | 1506783217 | 249 | 5 | 1 | 883.911470 | 0 |
5789 | 170 | 1430413266 | 1511140849 | 1373 | 20 | 1 | 934.347025 | 0 |
5804 | 730 | 1430413266 | 1511190699 | 2851 | 28 | 1 | 934.923993 | 0 |
5816 | 374 | 1430413266 | 1508748129 | 1225 | 15 | 1 | 906.653507 | 0 |
5880 | 206 | 1430413266 | 1511146306 | 3913 | 70 | 1 | 934.410185 | 0 |
5912 | 288 | 1430413266 | 1510033445 | 1755 | 26 | 1 | 921.529850 | 0 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
168758 | 18 | 1510124356 | 1510960789 | 105 | 2 | 0 | 9.680938 | 0 |
168792 | 15 | 1510136872 | 1510661772 | 60 | 1 | 0 | 6.075231 | 0 |
168831 | 78 | 1510182960 | 1511241351 | 635 | 10 | 1 | 12.249896 | 0 |
168834 | 12 | 1510187047 | 1511239077 | 102 | 3 | 0 | 12.176273 | 0 |
168948 | 6 | 1510233924 | 1510234362 | 48 | 1 | 0 | 0.005069 | 1 |
168976 | 7 | 1510275950 | 1511166273 | 66 | 3 | 1 | 10.304664 | 0 |
168981 | 30 | 1510278673 | 1511184888 | 146 | 2 | 0 | 10.488600 | 0 |
168991 | 6 | 1510280818 | 1510456811 | 129 | 3 | 0 | 2.036956 | 0 |
169031 | 10 | 1510287019 | 1510613142 | 27 | 1 | 1 | 3.774572 | 0 |
169049 | 7 | 1510292348 | 1510392612 | 43 | 1 | 1 | 1.160463 | 0 |
169084 | 11 | 1510303482 | 1510927533 | 94 | 1 | 1 | 7.222812 | 0 |
169106 | 23 | 1510312431 | 1511054357 | 215 | 2 | 1 | 8.587106 | 0 |
169132 | 18 | 1510324837 | 1511090706 | 75 | 2 | 0 | 8.864225 | 0 |
169197 | 38 | 1510373093 | 1510890780 | 66 | 1 | 0 | 5.991748 | 0 |
169217 | 28 | 1510377281 | 1510877581 | 38 | 1 | 0 | 5.790509 | 0 |
169269 | 4 | 1510388952 | 1510388952 | 7 | 1 | 0 | 0.000000 | 1 |
169276 | 6 | 1510391145 | 1511008391 | 50 | 1 | 0 | 7.144051 | 0 |
169299 | 9 | 1510397978 | 1511187978 | 27 | 1 | 0 | 9.143519 | 0 |
169318 | 8 | 1510407061 | 1510615622 | 154 | 2 | 0 | 2.413900 | 0 |
169393 | 14 | 1510464820 | 1511147607 | 187 | 3 | 1 | 7.902627 | 0 |
169445 | 13 | 1510487420 | 1510645072 | 84 | 1 | 1 | 1.824676 | 0 |
169598 | 35 | 1510618726 | 1510983354 | 63 | 2 | 1 | 4.220231 | 0 |
169613 | 11 | 1510627070 | 1510746988 | 12 | 1 | 0 | 1.387940 | 0 |
169614 | 9 | 1510627121 | 1510889773 | 33 | 1 | 0 | 3.039954 | 0 |
169691 | 6 | 1510657422 | 1510706666 | 73 | 1 | 0 | 0.569954 | 1 |
169699 | 20 | 1510662595 | 1511217077 | 153 | 3 | 1 | 6.417616 | 0 |
169815 | 13 | 1510753437 | 1511159975 | 57 | 1 | 0 | 4.705301 | 0 |
169832 | 12 | 1510793074 | 1511142183 | 62 | 1 | 0 | 4.040613 | 0 |
169934 | 14 | 1510841381 | 1510971292 | 68 | 2 | 1 | 1.503600 | 0 |
169976 | 16 | 1510908302 | 1511184987 | 27 | 1 | 0 | 3.202373 | 0 |
3000 rows × 8 columns
计算无价值客户和正常客户注册当天购物的比例
g = guke2.groupby('客户类别')['是否当天购买'].mean().rename(index={0: '无价值客户',1: '正常客户'})
g*100
客户类别
无价值客户 18.334332
正常客户 0.751315
Name: 是否当天购买, dtype: float64
(g*100).plot.bar()
plt.xticks(rotation = 0)
(array([0, 1]), <a list of 2 Text xticklabel objects>)
2.png
结论: 1.无价值客户注册当天购买的比例为18.3% 2.正常客户注册当天购买的比例为0.75%
结论
研究总结
-
正常客户:
- 年平均登陆X次
- x%的客户在注册当天购买
- 注册时间与本次购买时问相隔x天
- 会员经验平均值
- 平均订单
-
无价值客户:
- 年平均登陆次
- x%的客户在注册当天购买
- 注册时间与本次购买时间相隔x天
- 会员经验平均值
- 平均订单
总体差异:
相对于正常客户,无价值客户:
- 登陆次数更少
- 会员经验更少
- 购买订单数更少
整体看优惠商品的优惠幅度不大,主要集中在5元以下,最受欢迎的优惠商品主要是:柑橘、藕青椒龙眼等常见蔬菜水果
意见建议
相关建议:
下订单"稳准快"的无价值客户,不会在正价商品上过多停留,不会花时间去关注除优惠商品以外的其他商品。为了节省优惠销费用、提高盈利,给出以下建议:
- 差异性推广
- 向正常客户推广优质商品
- 向无价值客户推广高性价比商品
- 关联推广
- 在优惠商品处增加原价商品广告,引导客户顺便购买
- 打包销售
- 将优惠商品与原价商品打包组合销售
数据分析师的价值所在
- 给公司创造实际利润
- 分析之前,公司月利润xx;分析并且宣讲之后,公司利润提升了xx ,没有其他变的情况下,提升的利润是数据分析带来的
- 理论上可行,实际上很难实践。实际上,数据分析师因为不如业务人员懂业务,很少能提出对业务有改进的建议
- 真正的实际价值
- 印证领导的看法
- 领导作出一个判断,数据分析师用数据验证领导的判断正确与否
网友评论