1、项目背景与分析说明
1)项目背景
网购已经成为人们生活不可或缺的一部分,本次项目基于淘宝app平台数据,通过相关指标对用户行为进行分析,从而探索用户相关行为模式。
2)数据和字段说明
本文使用的数据集包含了2014.11.18到2014.12.18之间,淘宝App移动端一个月内的用户行为数据。该数据有12256906天记录,共6列数据。
user_id:用户身份
item_id:商品id
behavior_type:用户行为类型(包括点击、收藏、加入购物车、支付四种行为,分别用数字1、2、3、4表示)
user_geohash:地理位置
item_category:品类id(商品所属的分类)
time:用户行为发生的时间
3)分析的维度
流量指标分析
用户行为分析
漏斗流失分析
用户价值RFM分析
4)电商常用分析方法
5)什么是漏斗分析?
“漏斗分析”是一套流程式数据分析,它能够科学反映用户行为状态,以及从起点到终点各阶段用户转化率情况的一种重要分析模型。
2、导入相关库
import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns import warnings # 设置为seaborn绘图风格 sns.set(style="darkgrid",font_scale=1.5) # 用来显示中文标签 mpl.rcParams["font.family"] = "SimHei" # 用来显示负号 mpl.rcParams["axes.unicode_minus"] = False # 有时候运行代码时会有很多warning输出,像提醒新版本之类的,如果不想这些乱糟糟的输出,可以使用如下代码 warnings.filterwarnings('ignore')
3、数据预览、数据预处理
# 注意:str是为了将所有的字段都读成字符串 df = pd.read_csv("taobao.csv",dtype=str) df.shape df.info() df.sample(5)
结果如下:
1)计算缺失率
# 由于地理位置的缺失值太多,我们也没办法填充,因此先删除这一列 df.apply(lambda x:sum(x.isnull())/len(x),axis=0)
结果如下:
2)删除地理位置这一列
df.drop(["user_geohash"],axis=1,inplace=True)
3)处理时间time列,将该列拆分为date日期列,和hour小时列
df["date"] = df.time.str[0:-3] df["hour"] = df.time.str[-2:] df.sample(5)
结果如下:
4)将time、date列都变为标准日期格式,将hour列变为int格式
df["date"] = pd.to_datetime(df["date"]) df["time"] = pd.to_datetime(df["time"]) df["hour"] = df["hour"].astype(int) df.dtypes
结果如下:
5)将数据按照time列,升序排列
df.sort_values(by="time",ascending=True,inplace=True) df.head()
解果如下:
6)删除原始索引,重新生成新的索引
df.reset_index(drop=True,inplace=True) df.head()
结果如下:
知识点:注意reset_index()中传入参数drop的这种用法。
7)使用describe()函数查看数据的分布,这里使用了一个include参数,注意一下
# 查看所有object字符串类型的数据分布状况 df.describe(include=["object"]) # describe()默认只会统计数值型变量的数据分布情况。 df.describe() # 查看所有数据类型的数据分布状况 df.describe(include="all")
结果如下:
知识点:注意describe()函数中传入参数include的用法。
8)对时间数据做一个概览
df["date"].unique()
结果如下: