当前位置:   article > 正文

手把手教你电商用户行为分析 | 附实战代码

线上用户行为

b1c1a04366edbe6384b522b441993640.gif

42554bfe263527fc6ad5fe46f319df11.png

导读:本文将针对淘宝App的运营数据,以行业常见指标对用户的行为进行分析。

9ed7300430b4987f7d8a5efa48784c2c.png

作者:刘鹏、高中强

来源:华章计算机(hzbook_jsj)

0805e42d7fc768f4f74508689fe0453d.png

数据内容包括user_id(用户身份)、item_id(商品)、IDbehavior_type(用户行为类型,包含点击、收藏、加购物车、支付四种行为,分别用数字1、2、3、4表示)、user_geohash(地理位置)、item_category(品类ID,即商品所属的品类)、Time(用户行为发生的时间),其中user_id和item_id因为涉及隐私,做了脱敏处理,显示的是数字编号。

下面是具体的代码实现过程。

1. 导入相关工具和数据

  1. # 导入相关库
  2. import pandas as pd
  3. import numpy as np
  4. %matplotlib inline
  5. import matplotlib.pyplot as plt
  6. import seaborn as sns
  7. dt = pd.read_csv('E:/tianchi_mobile_recommend_train_user.csv')

其中,seaborn库可实现对统计数据的可视化展示,是基于Matplotlib的Python数据可视化库。

2. 数据的处理

  1. # 对其中的label进行重命名
  2. dt=dt.rename(columns={'user_id':'用户名','item_id':'商品名','behavior_type':'用
  3. 户行为类型','user_geohash':'地理位置','InvoiceDate':'发票日期','item_category':
  4. '品类名','CustomerID':'用户名','time':'行为时间'})
  5. dt.apply(lambda x:sum(x.isnull())/len(x))# 计算缺失率(缺失数/总数)
  6. # # 对时间数据进行处理,将日期与小时数据分开
  7. dt['date']=dt['行为时间'].str[0:10]
  8. dt['hour']=dt['行为时间'].str[11:]
  9. dt['date']=pd.to_datetime(dt['date'])
  10. dt['行为时间']=pd.to_datetime(dt['行为时间'])
  11. dt['hour']=dt['hour'].astype(int)
  12. dt.sample(5)

结果如图12-24所示。

2d09fd3d0b609e1d882cde3066c7e841.png

图12-24 数据处理结果

  1. # # 将数据集按时间列进行升序排列
  2. dt.sort_values(by='行为时间',ascending=True,inplace=True)
  3. # 舍弃原来的索引进行重置
  4. dt.reset_index(drop=True,inplace=True)
  5. # 查看处理后的数据信息
  6. dt.info()

结果如图12-25所示。

da942d0849614dd85cc5da535a67693b.png

图12-25 处理后的数据信息

dt.describe()

结果如图12-26所示。

0a94594d59c2792f78015bd2f67bd9e2.png

图12-26 处理后的数据分布情况

3. 用户行为分析

在介绍用户行为分析前,先了解两个概念。

  • PV(Page View,访问量):具体是指网站的页面浏览量或者点击量,页面被刷新一次就计算一次;

  • UV(Unique Visitor,独立访客):访问网站的一台电脑客户端即一个访客。

1)日访问量分析:

  1. # uv_daily记录每天不同的上线用户数量
  2. uv_daily=dt.groupby('date')['用户名'].nunique().rename('uv')
  3. uv_daily=uv_daily.reset_index().rename(columns={'用户名':'uv'})
  4. uv_daily.set_index('date',inplace=True)
  5. # pv_daily记录每天用户操作次数
  6. pv_daily=dt.groupby('date')['用户名'].count()
  7. pv_daily=pv_daily.reset_index().rename(columns={'用户名':'pv'})
  8. pv_daily.set_index('date',inplace=True)
  9. # UV同比
  10. uv_daily['uv_lastday']=uv_daily.shift(1)
  11. uv_daily['tb']=100*(uv_daily['uv']-uv_daily['uv_lastday'])/uv_daily['uv_
  12. lastday']
  13. formater="{0:.02f}".format
  14. uv_daily['tb']=uv_daily['tb'].map(formater).astype('float')
  • nunique():该函数返回所有数据唯一值个数。unique()函数是以数组形式返回列的所有唯一值。

  • shift():该函数对数据进行移动的操作,默认值是1。注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。

  • formater="{0:.02f}".format相当于formater=lambda x: '%.02f',即x取小数点后两位。

  1. # UV环比
  2. uv_daily['uv_7days']=uv_daily['uv'].shift(7)
  3. uv_daily['hb']=100*(uv_daily['uv']-uv_daily['uv_7days'])/uv_daily['uv_7days']
  4. formater="{0:.02f}".format
  5. uv_daily['hb']=uv_daily['hb'].map(formater).astype('float')
  6. uv_daily.head(2)

结果如图12-27所示。

5ed1c7f3aac178b81238a05882f84e1a.png

图12-27 UV同比、环比情况

  1. # PV同比
  2. pv_daily['pv_lastday']=pv_daily.shift(1)
  3. pv_daily['tb']=100*(pv_daily['pv']-pv_daily['pv_lastday'])/pv_daily['pv_
  4. lastday']
  5. formater="{0:.02f}".format
  6. pv_daily['tb']=pv_daily['tb'].map(formater).astype('float')
  7. # PV环比
  8. pv_daily['pv_7days']=pv_daily.pv.shift(7)
  9. pv_daily['hb']=100*(pv_daily['pv']-pv_daily['pv_7days'])/pv_daily['pv_7days']
  10. formater="{0:.02f}".format
  11. pv_daily['hb']=pv_daily['hb'].map(formater).astype('float')
  12. pv_daily.head(2)

结果如图12-28所示。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/642543
推荐阅读
相关标签
  

闽ICP备14008679号