一、报告目的
电子商务在发展过程中越来越注意消费者的用户体验,淘宝是深受中国消费者喜欢的电子商务平台,本文试图通过研究淘宝商城消费者的用户行为和潜在的需求,帮助企业制定个性化的营销方案,提高平台的运行效率。
二、数据概况
2.1 数据来源
本文的数据来自天池数据集https://tianchi.aliyun.com/dataset/dataDetail?dataId=46
2.2 数据的基本情况
(1) 数据共有1200万条,选取其中的20万条作为报告内容。
(2) 数据清洗:清洗异常值、重复值、日期格式转换、构造新特征
(3) 数据概览
三、分析思路
3.1 流量分析
pv uv 跳失率 平均访问量,结合时间维度进行分析
3.2 用户分析
用户点击、收藏、加购、新增用户情况、用户复购率分析用户情况,用户价值模型分类
3.3 产品分析
主要产品结构、爆款产品分析
3.4 转化分析
四、分析过程
4.1 数据清洗
# 数据清洗 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns data = pd.read_csv('UserBehavior.csv',nrows=200000, header=None, names= ['用户ID','商品ID','商品类目ID','行为类型','时间戳']) data.head() data.describe() data.isnull().sum().sort_values(ascending=False) # 缺失值为0 data.duplicated().sum() # 重复值为0 start_time = datetime.datetime(2017,11,25) end_time = datetime.datetime(2017,12,4) start_ts = time.mktime(start_time.timetuple()) end_ts = time.mktime(end_time.timetuple()) data = data[(int(start_ts) <= data['时间戳']) & (data['时间戳'] <= int(end_ts))] data['时间戳'] = data.时间戳.apply(lambda x: datetime.datetime.fromtimestamp(x)) data['日期'] = data.时间戳.dt.date data['时间'] = data.时间戳.dt.time data['小时'] = data.时间戳.dt.hour
4.2 流量分析
pv_date = data[data['行为类型'] == 'pv'].groupby('日期')['行为类型'].count() uv_date = data[data['行为类型']== 'pv'].drop_duplicates(['日期','用户ID']).groupby('日期')['用户ID'].count() print(pv_date) print(uv_date) # 日流量 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = pv_date.index y1 = pv_date.values y2 = uv_date.values plt.plot(x,y1,label='PV',linewidth=4, color='blue', marker='o', markerfacecolor='red', markersize=4) plt.xticks(rotation=30) plt.xlabel('日期',size=18) plt.ylabel('数量',size=20) plt.title('日流量情况',size=18) plt.legend(loc='upper left') plt.savefig('1周流量情况') # 日访客数 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = pv_date.index y1 = pv_date.values y2 = uv_date.values plt.plot(x,y2,label='UV',linewidth=4, color='red', marker='o', markerfacecolor='black', markersize=4) plt.xticks(rotation=30) plt.xlabel('日期',size=18) plt.ylabel('数量',size=20) plt.title('访客情况',size=18) plt.legend(loc='upper left') plt.savefig('2一周访客情况') # 日人均流量折线图 y3 = y1/y2 plt.plot(x,y3,label='日均浏览量',linewidth=4, color='green', marker='o', markerfacecolor='black', markersize=4) plt.xticks(rotation=30) plt.xlabel('日期',size=18) plt.ylabel('数量',size=20) plt.title('日人均浏览量',size=18) plt.legend(loc='upper left') plt.savefig('3日均浏览量情况') # 时流量 # 时访客 hour_date = data[data['行为类型'] == 'pv'].groupby('小时')['行为类型'].count() hour_uv = data[data['行为类型'] == 'pv'].drop_duplicates(['小时','用户ID']).groupby('小时')['行为类型'].count() x = hour_date.index y1 = hour_date.values y2 = hour_uv.values y2 plt.plot(x,y1,label='PV',linewidth=4, color='blue', marker='o', markerfacecolor='red', markersize=4) plt.xticks(rotation=30) plt.xlabel('日期',size=18) plt.ylabel('数量',size=20) plt.title('时流量情况',size=18) plt.legend(loc='upper left') plt.savefig('4时流量情况') plt.plot(x,y2,label='PV',linewidth=4, color='red', marker='o', markerfacecolor='black', markersize=4) plt.xticks(rotation=30) plt.xlabel('日期',size=18) plt.ylabel('数量',size=20) plt.title('时访客数情况',size=18) plt.legend(loc='upper left') plt.savefig('4时访客数情况')
- 日PV和日UV呈上升趋势,且在11月1日至11月2日期间有大幅度提高,初步推测该平台流量有增长的态势,并在12月1日开启促销宣传活动。
- 时PV和时UV在10时以后较为平稳,并在16时至20时呈现持续增长的态势,建议在下午和晚上加强宣传引导,提高转化率
- 人均浏览量在27日下降到最低,应该分析该天的运营情况,商品宣传页面是否出现问题等。
4.3 用户分析
# 新增用户分析 from copy import deepcopy import datetime df_pv = df[df.行为类型 == 'pv'] s = set() days = [] nums = [] add_pv = [] for date in df_pv['日期'].unique(): num1 = len(s) s1 = deepcopy(s) ids = df_pv[df_pv.日期 == date]['用户ID'].values.tolist() for i in ids: s.add(i) add_users = s - s1 num2 = len(s) days.append(date) nums.append(num2-num1) df_new_uv = pd.DataFrame({'日期': days, '新增访客数': nums}) df_new_uv
hour_behavior = data.groupby(['行为类型','小时'])['行为类型'].count() plt.figure(figsize=(12,8)) hour_behavior['pv'].plot(color='r',label='点击') plt.legend(fontsize=16, loc='upper right') plt.xticks(hour_behavior['pv'].index, ['0时','1时','2时','3时','4时','5时','6时','7时','8时','9时','10时','11时','12时','13时','14时','15时','16时','17时','18时','19时','20时','21时','22时','23时'], fontsize=12) plt.xlabel('') plt.grid(b='False') plt.twinx() hour_behavior['fav'].plot(color='b', label='收藏') hour_behavior['cart'].plot(color='k', label='加入购物车') hour_behavior['buy'].plot(color='g', label='购买') plt.xlabel('') plt.xticks(hour_behavior['pv'].index, ['0时','1时','2时','3时','4时','5时','6时','7时','8时','9时','10时','11时','12时','13时','14时','15时','16时','17时','18时','19时','20时','21时','22时','23时'], fontsize=12) plt.grid(b='False') plt.legend() plt.title('一天中用户行为分布折线图', fontsize=18) plt.savefig('5一天内用户行为分析') # 两周内用户行为分析 plt.figure(figsize=(12,8)) day_behavior = data.groupby(['行为类型','日期'])['行为类型'].count() day_behavior['pv'].plot(color='r',label='点击') plt.legend(fontsize=16, loc='upper right') plt.xlabel('') plt.xticks(rotation=30) plt.twinx() day_behavior['fav'].plot(color='b', label='收藏') day_behavior['cart'].plot(color='k', label='加入购物车') day_behavior['buy'].plot(color='g', label='购买') plt.xlabel('') plt.xticks(rotation=30) plt.legend() plt.title('近几日用户行为分布折线图', fontsize=18) plt.savefig('6一周内用户行为分析')
from datetime import date nowdate = date(2017, 12, 5) recent_buy_date = df[df.行为类型 == 'buy'].groupby('用户ID')['日期'].apply(lambda x: x.sort_values().iloc[-1]) recent_buy_time = (nowdate - recent_buy_date).map(lambda x: x.days) fre_buy = df[df.行为类型 == 'buy'].drop_duplicates(['用户ID', '时间戳']).groupby('用户ID')['日期'].count() rf_module = pd.DataFrame({'用户ID': recent_buy_time.index, 'recency': recent_buy_time.values, 'frequency': fre_buy.values}) rf_module.to_excel('rf.xlsx')
结论:
- 新增访客数在25日增加最多,在之后几日逐渐减少,需要增加拉新活动
- 用户收藏和购买趋势线基本拟合,可以增加活动提高收藏率,从而增加购买转化
- 18时-22时是用户活跃购买 高峰期,需要加强运营
rfm用户价值分析:
重要价值客户:该类用户消费频次较高,最近一次消费近,应当保持当前策略维持
重要发展客户:该类用户消费频次较高,最近一次消费较远,应该通过发放优惠券、短信及时唤回
潜力客户:该类客户消费频次低,最近一次消费较近,应该通过关联商品、打折等提高消费频率
一般维持客户:该类客户消费频次低,最近一次消费低,应当通过折扣、优惠券将其挽回4.4 转化分析
pv = data[data['行为类型'] == 'pv']['用户ID'].count() cart = data[data['行为类型'] == 'cart']['用户ID'].count() fav = data[data['行为类型'] == 'fav']['用户ID'].count() buy = data[data['行为类型'] == 'buy']['用户ID'].count() attr = ["购买:%.2f%%" % (buy / pv * 100), "收藏或加入购物车: %.2f%%" % ((fav+cart) / pv * 100),"点击量:100%"] value = [18, 36, 54] funnel = Funnel("转化率", width=600, height=400, title_pos='center') funnel.add( "商品", attr, value, is_label_show=True, label_pos="inside", label_text_color="#fff", is_legend_show = False ) funnel
- 总的点击量中,有6.25%加入购物车,有3.24%收藏,而到最后只有2.24%购买,整体来看,购买的转化率最低,有很大的增长空间
- “点击-加入购物车“这一环节的转化率最低,按照“点击-加入购物车-收藏-购买”这一用户行为路径,我们可通过优化“点击-加入购物车”这一环节进而提升购买的转化率。
# 产品分析 # 用户关注哪些产品 goods_buy = data[data['行为类型']=='buy'].groupby('商品类目ID')['用户ID'].count().sort_values(ascending=False) goods_buy[:10] goods_pv = data[data['行为类型']=='pv'].groupby('商品类目ID')['用户ID'].count().sort_values(ascending=False) goods_pv[:10] goods_buy[:10].to_excel('goods_buy.xlsx') goods_pv[:10].to_excel('goods_pv.xlsx')
结论:通过分析找出前10位的主要产品,可以对主要产品进行精准宣传,打造爆款产品