淘宝电商用户行为分析-python

淘宝电商用户行为分析-python

1.项目介绍

基于阿里云天池某数据集分析电商用户行为,从以下四个角度进行:
(数据集来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=649
1)以PV、UV、平均浏览量、跳失率等指标,分析用户最活跃的日期及活跃时段,了解用户行为习惯
2)从成交量、人均购买次数、复购率等指标,探索用户对商品的购买偏好,了解商品的销售规律
3)从收藏转化率、购物车转化率、成交转化率,对用户行为从浏览到购买进行漏斗分析
4)参照rfm模型,对用户进行分类,找到高价值用户群

2.数据集概况

本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括pv、cart、fav、buy)。数据集的每一行表示一条用户行为,由user_id、item_id、category_id、behavior、timestamp组成,并以逗号分隔。关于数据集中每一列的详细描述如下:

说明
user_id 整数类型,序列化后的用户ID
item_id 整数类型,序列化后的商品ID
category_id 整数类型,序列化后的商品所属类目ID
behavior 整数类型,序列化后的商品ID
timestamps 行为发生的时间戳

分析步骤

提出问题------理解数据------数据清洗------构建模型

(一)提出问题

1、用户最活跃在哪些日期及时段
2、用户对商品有哪些购买喜好,什么样的商品销售最多
3、用户行为间的转化情况
4、用户分类,哪些是有价值的用户

(二)理解数据

  1. 查看数据基本信息
import pandas as pd
user = pd.read_csv('/Users/cheng/Desktop/艾小丫的数据/阿里云/电商用户行为/UserBehavior.csv')
#原始数据没有列名,加上列名
user.columns = ['user_id', 'item_id', 'category_id', 'behavior', 'timestamps']
#查看数据信息
user.info()

<class ‘pandas.core.frame.DataFrame’>
RangeIndex: 3835330 entries, 0 to 3835329
Data columns (total 5 columns)
Column Dtype


0 user_id int64
1 item_id int64
2 category_id int64
3 behavior object
4 timestamps float64
dtypes: float64(1), int64(3), object(1)
memory usage: 146.3+ MB

(三)数据清洗

  1. 查看是否有缺失值并处理
#查看是否有缺失值
print(user.count())
#将时间戳这一列的数据缺失值进行填充
user['timestamps'] =user['timestamps'].fillna(user['timestamps'].median())

user_id 3835330
item_id 3835330
category_id 3835330
behavior 3835330
timestamps 3835329
dtype: int64

  1. 对时间戳列进行格式转换和异常值处理
#将时间戳格式转换为时间格式
user['time-stamps'] = pd.to_datetime(user['timestamps'] .apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x))))
#添加日期、时间
user['date'] =user['time-stamps'].dt.date
user['time'] =user['time-stamps'].dt.time
user['hour'] =user['time-stamps'].dt.hour
user['weekdayname']=user['time-stamps'].dt.day_name()
print(user.head(20))
#查看日期是否有异常值
print(user['date'].value_counts())
#本数据集包含了2017年11月25日至2017年12月3日之间的数据,对其他日期的数据删除处理
user=user[(user['time-stamps']>='2017-11-25 00:00:00') & (user['time-stamps']<'2017-12-04 00:00:00')]
print(user['date'].value_counts())#查看处理结果

发现日期有异常值,进行处理

[20 rows x 10 columns]
2017-12-02 532774
2017-12-03 528928
2017-12-01 417977
2017-11-26 406793
2017-11-30 400366
2017-11-25 395033
2017-11-29 390885
2017-11-27 382304
2017-11-28 378326
2017-11-24 1507
2017-11-23 181
2017-11-22 53
2017-11-19 33
2017-11-21 25
2017-11-20 20
2017-11-18 19
2017-11-17 18
2018-08-28 16
2017-11-03 14
2017-11-16 10
2017-12-04 6
2017-11-14 6
2017-11-13 6
2017-11-11 5
2017-11-15 4
2017-12-06 3
2017-11-12 2
2017-07-03 2
2017-09-16 2
2017-11-10 2
2017-10-31 1
2017-11-02 1
2017-10-10 1
2015-02-06 1
2037-04-09 1
2017-11-04 1
2017-09-11 1
2017-11-05 1
1970-01-01 1
2017-11-06 1
Name: date, dtype: int64

(四)模型构建

1、用户购物情况分析

1、
这9天里PV(浏览量):3431905
这9天里UV(用户数),返回结果是:37376

#查看pv,浏览量
print(user['behavior'].value_counts())
#发现behavior列有一个拼写错误的值,将其修正
user['behavior']=user['behavior'].replace('p','pv')
print(user['behavior'].value_counts())

发现behavior列有一个拼写错误的值,将其修正

pv 3431904
cart 213634
fav 111140
buy 76707
p 1
Name: behavior, dtype: int64

#查看uv,此处将用户ID数量作为uv,访客量
uv=len(user['user_id'].unique())
print(uv)

平均浏览量是: 3431905/37376=91.8

即每个用户平均访问了92个页面。

2、
跳失率计算(跳失率:只有点击行为的用户/总用户数)

stay=['cart','fav','buy']
lostnum1=uv-len(user[user['behavior'].isin(stay)]['user_id'].unique())
print(lostnum1)

跳失率=2196/37376=0.0587,跳失率不高,说明店铺的商品详情页还是能吸引到用户的进行下一步行为

3、
每天浏览量情况、每天访客量情况

day_pv=user[user['behavior']=='pv']['behavior'].groupby(user['date']).value_counts()
#对不同日期的用户ID去重处理
user1=user.drop_duplicates(
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值