案例三:淘宝用户行为分析

一、项目背景

本项目基于淘宝app平台数据,通过相关指标对行为进行分析,探索消费者相关行为模式

分析方法:

用户行为分析:日pv和日uv分析,时pv和时uv分析,不同行为类型用户的pv分析

用户消费行为分析:用户购买次数情况分析,日ARPPU,日ARPU,付费率,
                  同一时间段用户消费次数分布

复购情况分析:所有复购时间间隔消费次数分布,不同用户平均复购时间分析

漏斗流失分析:浏览到点击,点击到加购物车,加购物车到收藏,收藏到付款

用户价值分析:RFM模型

导入库,导入数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
sns.set(style = 'darkgrid',font_scale = 1.5)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
os.chdir(r'F:\数据分析数据压缩包\tb_data')

ud= pd.read_csv('tbdata.csv',encoding = 'ISO-8859-1',dtype = str)

二.大致浏览数据的情况,行列数,数据类型

#有大约1200万条数据,共六个字段,
#是2014年11月18日至2014年12月18日的用户行为数据,均为object类型,分别为user_id(用户ID),
#item_id(商品ID),behavior_type(行为类型), user_geohash(用户地理位置), 
# item category (商品种类) ,time(行为发生时间)
ud.info()
ud.head(20)

ud.groupby('user_id')['user_id'].size()
#数据集包括10000用户

结果:
在这里插入图片描述

三.数据预处理

3.1 重复值处理

# 重复值处理
#计算重复值个数
ud.duplicated().sum()
print('重复值个数为',ud.duplicated().sum())
#剔除重复值
ud.drop_duplicates(inplace = True)

#剔除重复值后的数据规模
ud.shape

在这里插入图片描述

剔除重复值后的数据规模在这里插入图片描述

#每个字段缺失值的数量
ud.apply(lambda x:sum(x.isnull()))
#只有地理位置数据缺失

在这里插入图片描述

#地理位置字段的缺失率
ud['user_geohash'].isnull().sum()/len(ud['user_geohash'])

在这里插入图片描述
日期数据的处理(拆分和类型转化)

#由于time字段的数据包括了日期和小时,把time拆分成date和hour
ud['date'] = ud['time'].str[0:10]
ud['hour'] = ud['time'].str[11:]
ud.dtypes

# #把time,date转化成datetime类型数据,hour转化成int类型数据
ud['time'] = pd.to_datetime(ud['time'])
ud['date'] = pd.to_datetime(ud['date'])
ud['hour'] = ud['hour'].astype(int)

#查看是否数据类型是否转化成功
ud.dtypes

#将数据按照时间的发生前后按升序处理
ud.sort_values(by = 'time',ascending = True,inplace = True)

#此时列前面的索引已经乱掉,重置索引
ud.reset_index(drop = True,inplace = True)

四、用户行为分析

pv (page view):
每天访问浏览页面的点击量或次数,页面被刷新一次就计算一次,点了100次,pv = 100

uv (unique visitor):
独立访客的意思,访问网站的客户端或电脑为一个访客。由于一个客户可能会有多台电脑即
多个访客,但还是作为一个访客看待

4.1 分析日浏览及访客量变化

# 将数据按照日期分类,并计算每一天的活跃用户总数
ud1 = ud.groupby('date').count()

#将ud1的user_id字段名改为pv_daily
ud1.rename(columns = {
   'user_id':'pv_daily'},inplace = True)

# 把ud1的‘pv_daily’赋值给pv_daily
pv_daily = ud1['pv_daily']
pv_daily 
#统计一下按照日期分类好的,每天的日uv值
uv_daily = ud.groupby('date')['user_id'].apply(lambda x:x.drop_duplicates().count())
uv_daily

#或者直接采取先在原表中去重,再根据日期分组后选取user_id列进行计数
ud2 = ud.drop_duplicates(['date','user_id'])
ud2 = ud2.groupby('date').count()
ud2.rename(columns = {
   'user_id':'uv_daily'},inplace = True)
uv_daily = ud2['uv_daily']
uv_daily

#或者这个方法也可以,三者选一即可
ud.groupby(['date'])['user_id'].unique().apply(lambda x:len(x))

将pv,uv拼接在一起,做相关系数分析

#pv_uv_daily就是根据日期统计出来的:每日访问量 以及独立访客数
pv_uv_daily = pd.concat([pv_daily,uv_daily],axis = 1)
pv_uv_daily

#计算pv和uv的斯皮尔曼相关系数
pv_uv_daily.corr(method = 'spearman')

#计算pv和uv的皮尔森相关系数
pv_uv_daily.corr(method = 'pearson')

输出结果:
在这里插入图片描述

#绘图,同一张图,不同子图
plt.f
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值