赞
踩
导读:本文将针对淘宝App的运营数据,以行业常见指标对用户的行为进行分析。
作者:刘鹏、高中强
来源:华章计算机(hzbook_jsj)
数据内容包括user_id(用户身份)、item_id(商品)、IDbehavior_type(用户行为类型,包含点击、收藏、加购物车、支付四种行为,分别用数字1、2、3、4表示)、user_geohash(地理位置)、item_category(品类ID,即商品所属的品类)、Time(用户行为发生的时间),其中user_id和item_id因为涉及隐私,做了脱敏处理,显示的是数字编号。
下面是具体的代码实现过程。
1. 导入相关工具和数据
- # 导入相关库
- import pandas as pd
- import numpy as np
- %matplotlib inline
- import matplotlib.pyplot as plt
- import seaborn as sns
- dt = pd.read_csv('E:/tianchi_mobile_recommend_train_user.csv')
其中,seaborn库可实现对统计数据的可视化展示,是基于Matplotlib的Python数据可视化库。
2. 数据的处理
- # 对其中的label进行重命名
- dt=dt.rename(columns={'user_id':'用户名','item_id':'商品名','behavior_type':'用
- 户行为类型','user_geohash':'地理位置','InvoiceDate':'发票日期','item_category':
- '品类名','CustomerID':'用户名','time':'行为时间'})
- dt.apply(lambda x:sum(x.isnull())/len(x))# 计算缺失率(缺失数/总数)
- # # 对时间数据进行处理,将日期与小时数据分开
- dt['date']=dt['行为时间'].str[0:10]
- dt['hour']=dt['行为时间'].str[11:]
- dt['date']=pd.to_datetime(dt['date'])
- dt['行为时间']=pd.to_datetime(dt['行为时间'])
- dt['hour']=dt['hour'].astype(int)
- dt.sample(5)
结果如图12-24所示。
图12-24 数据处理结果
- # # 将数据集按时间列进行升序排列
- dt.sort_values(by='行为时间',ascending=True,inplace=True)
- # 舍弃原来的索引进行重置
- dt.reset_index(drop=True,inplace=True)
- # 查看处理后的数据信息
- dt.info()
结果如图12-25所示。
图12-25 处理后的数据信息
dt.describe()
结果如图12-26所示。
图12-26 处理后的数据分布情况
3. 用户行为分析
在介绍用户行为分析前,先了解两个概念。
PV(Page View,访问量):具体是指网站的页面浏览量或者点击量,页面被刷新一次就计算一次;
UV(Unique Visitor,独立访客):访问网站的一台电脑客户端即一个访客。
1)日访问量分析:
- # uv_daily记录每天不同的上线用户数量
- uv_daily=dt.groupby('date')['用户名'].nunique().rename('uv')
- uv_daily=uv_daily.reset_index().rename(columns={'用户名':'uv'})
- uv_daily.set_index('date',inplace=True)
- # pv_daily记录每天用户操作次数
- pv_daily=dt.groupby('date')['用户名'].count()
- pv_daily=pv_daily.reset_index().rename(columns={'用户名':'pv'})
- pv_daily.set_index('date',inplace=True)
- # UV同比
- uv_daily['uv_lastday']=uv_daily.shift(1)
- uv_daily['tb']=100*(uv_daily['uv']-uv_daily['uv_lastday'])/uv_daily['uv_
- lastday']
- formater="{0:.02f}".format
- uv_daily['tb']=uv_daily['tb'].map(formater).astype('float')
nunique():该函数返回所有数据唯一值个数。unique()函数是以数组形式返回列的所有唯一值。
shift():该函数对数据进行移动的操作,默认值是1。注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。
formater="{0:.02f}".format相当于formater=lambda x: '%.02f',即x取小数点后两位。
- # UV环比
- uv_daily['uv_7days']=uv_daily['uv'].shift(7)
- uv_daily['hb']=100*(uv_daily['uv']-uv_daily['uv_7days'])/uv_daily['uv_7days']
- formater="{0:.02f}".format
- uv_daily['hb']=uv_daily['hb'].map(formater).astype('float')
- uv_daily.head(2)
结果如图12-27所示。
图12-27 UV同比、环比情况
- # PV同比
- pv_daily['pv_lastday']=pv_daily.shift(1)
- pv_daily['tb']=100*(pv_daily['pv']-pv_daily['pv_lastday'])/pv_daily['pv_
- lastday']
- formater="{0:.02f}".format
- pv_daily['tb']=pv_daily['tb'].map(formater).astype('float')
- # PV环比
- pv_daily['pv_7days']=pv_daily.pv.shift(7)
- pv_daily['hb']=100*(pv_daily['pv']-pv_daily['pv_7days'])/pv_daily['pv_7days']
- formater="{0:.02f}".format
- pv_daily['hb']=pv_daily['hb'].map(formater).astype('float')
- pv_daily.head(2)
结果如图12-28所示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。