用Python分析淘宝用户行为
使用Python进行数据分析入门 #生活技巧# #工作学习技巧# #数字技能训练#
数据来源:阿里云 天池数据集https://tianchi.aliyun.com/dataset/dataDetail?dataId=46
阿里巴巴提供的移动端淘宝用户的行为数据集,包含2014-11-18至2014-12-18共计一千多万条数据。
数据集的每一列描述如下:
列名 说明 user_id 用户身份(脱敏) item_id 商品id(脱敏) behavior_type用户行为类型(点击,收藏,加入购物车,购买)
对应数字1,2,3,4
user_geohash 地理位置 item_category商品类别ID
time 用户行为发生时间分析思路如下:
数据预处理
import pandas as pd
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import seaborn as sns
df=pd.read_csv(r'D:\数据分析\数据分析\tianchi\taobao.csv',engine='python')
print(df.info())
print(df.head())
df['time']=pd.to_datetime(df['time'],format='%Y-%m-%d')
t1=datetime.datetime(2014,12,8)
t2=datetime.datetime(2014,12,15)
mask=(df['time']>t1)&(df['time']<t2)
data=df[mask]
print(data.count())
df.drop_duplicates(inplace=True)
df.drop('user_geohash',axis=1,inplace=True)
df['time']=pd.to_datetime(df['time'],format='%Y-%m-%d')
df['hour']=df.time.dt.hour
df['time']=df.time.dt.normalize()
df=df.sort_values(by='time').reset_index(drop=True)
经过日期筛选和数据标准化,最终得到8164040条数据,各列的数据类型和数据格式如下:
用户行为分析
一、时间维度分析 1、流量指标(1) PV、UV环比增长
PV:页面浏览量,全部用户在24小时内看了多少页面,用户每打开一个页面就记做一次,多次打开同一页面算作多次。这里我们将用户所有的操作(click, collect, add to cart,payment)次数进行求和,按照日期统计作为当日的PV值。
UV:独立访客,24小时内访问网站的用户数,同一个人多次访问也算一个,通过访问的客户端计算。我们通过用户唯一标志user_id进行计数求和,按照日期通知作为当日的UV值。
条形图反映了每天的PV值,折线图为环比昨日PV的值:(今日PV-昨日PV)/昨日PV,UV同理。
从周期性分析,PV和UV值都存在周期性的波动以周为统计周期,PV在11.21,11.28,12.5这三个周五都呈现波谷,而11.23,11.30,12.7这三个周日都为一周内的PV最高峰。但UV的情况有所不同,UV在11.22,11.28,11.29,12.5这四天,呈现周期内的波谷。结合访问深度(PV/UV)的数据来看,11.21,11.28,12.5三个周五也都呈现周期性最低点。需要结合更长的时间线分析整体趋势是否存在这样的周期性变化,如果存在变化背后的原因是什么,可具体分析周五活跃用户和不活跃用户之间的区别,并结合商品进行分析,看是否需要提高周五的活跃用户数量。观察异常情况,环比昨日,同比上周分析,11.28,11.29日的UV明显偏低,需要结合当时的业务表现再具体探索。
在11.21日出现PV周期性减少,UV小幅波动,而访问深度明显降低的情况
(2)平均访问深度(PV/UV)
(3)PV、UV及同比增长
以一周为时间周期,比较双十二活动前后5天的PV和UV环比变化。 由下图可知,双十二活动前后PV和UV的总体波动趋势相似,从10号开始有明显的增幅,在12日PV和UV都达到顶峰,然后回落,双十二活动明显促进UV、PV增长。
uv_daily=df.groupby('time')['user_id'].apply(lambda x:x.drop_duplicates().count())
uv_daily=uv_daily.reset_index().rename(columns={'user_id':'uv'})
uv_daily.set_index('time',inplace=True)
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')
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')
pv_daily=df.groupby('time')['user_id'].count()
pv_daily=pv_daily.reset_index().rename(columns={'user_id':'pv'})
pv_daily.set_index('time',inplace=True)
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_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
(4)基于PV分析用户行为
由用户行为的日期折线图可以看出,用户行为也具有周期性特点,在11.21,11.28,12.5这三个周五都是一周内的最低值,12月10日至12月12日,用户点击量、收藏量、加购量都明显增长,在12月12日达到最大值,而购买量则在12月12日当日大幅度增加。
data=df
pv_detail=data.groupby(['behavior_type','time'])['user_id'].count()
pv_detail=pv_detail.reset_index().rename(columns={'user_id':'total_pv'})
pv_detail['time']=pv_detail['time'].dt.strftime('%Y-%m-%d')
pv_detail['behavior_type']=pv_detail['behavior_type'].map({1:'click',2:'collect',3:'add_to_cart',4:'payment'})
fig,axes=plt.subplots(2,1,sharex=True,figsi
网址:用Python分析淘宝用户行为 https://www.yuejiaxmz.com/news/view/239611
相关内容
深入浅出:使用Python构建一个简单的推荐系统—基于用户行为和内容过滤【机器学习】推荐系统——基于用户行为分析的个性化推荐技术
利用Python进行数据分析——Pandas(2)
学了python究竟有什么用,实际应用场景有哪些?我整理了8个应用领域
Python中的生活数据分析与个人健康监测.pptx
Python数据分析实战
Python应用:让生活更智能
淘宝比价的方法是什么?有什么用?
淘宝真的不能买,深圳泽信电子买的芯片,翻新芯片,不能用啊!!
python excel数据分析师职业技能