Pandas数据 — 用户消费行为
前言
CD商品订单数据的分析总结。根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为。通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息。对其他产品的线上消费数据分析有一定的借鉴价值,能达到举一反三的效果。
一、案例背景
CDNOW是一家美国在线零售商,主营商品为CD唱片,ToC业务。1998年上市,2000年被贝塔斯曼收购。网上有一份用户订单消费数据集:CDNOW订单数据集
二、案例目的
这份数据集只包含了四个基本信息字段:用户ID、购买日期、购买数量、购买金额。本案例的目标:通过这个四个字段,在数据集时间窗口内,分析用户消费的基本概况;通过用户分层、周期分析、复购率和回购率分析等,梳理现阶段用户的价值现状,并尝试根据业务经验提一些运营建议。
三、分析框架
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
四、分析过程
4.1数据加载和初探
(1)导入相关包、设置风格样式
-
import pandas as pd
-
import numpy as np
-
import matplotlib.pyplot as plt
-
import os
-
# jupter魔法函数,设置可视化页内显示
-
%matplotlib inline
-
# 正常显示中文和负号
-
plt.rcParams['font.sans-serif'] = ['SimHei']
-
plt.rcParams['axes.unicode_minus'] = False
-
# 画图的样式风格设置为:ggplot
-
plt.style.use('ggplot')
(2)导入数据集
字段信息:
-
user_id:用户ID
-
order_dt:购买日期
-
order_products:购买数量
-
order_amount:购买金额
源数据为txt文件,通过pd.read_csv()。分割符为空白字符串,用正则表达'\s ',匹配任意空白符。
-
# 导入数据集
-
fpath = '../datasets/cdnow.txt'
-
df = pd.read_csv(
-
fpath,
-
sep = '\s ', #正则表达'\s ',匹配任意空白符
-
header=None,
-
names=['user_id','order_dt','order_products','order_amount']
-
)
-
df.head()
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
从前5行数据中可以发现:同一个用户在同一天可能购买多次、同一用户在不同时间购买多次等消费现象。
(3)数据清洗
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 69659 entries, 0 to 69658 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 user_id 69659 non-null int64 1 order_dt 69659 non-null int64 2 order_products 69659 non-null int64 3 order_amount 69659 non-null float64 dtypes: float64(1), int64(3) memory usage: 2.1 MB
源数据质量描述:数据不存在缺失值,但购买日期order_dt字段数据类型为int64,需要转换为日期型datetime64[ns]
-
# 'order_dt'字段类型转换
-
df['order_dt'] = pd.to_datetime(df['order_dt'],format='%Y%m%d')
按月份分析销售趋势,新增month字段。(tip:datetime64[M]:每月的第一天日期,datetime64[Y]:每年的第一天日期。)
-
# 新增month字段
-
df['month'] = df['order_dt'].values.astype('datetime64[M]')
-
# 查看字段的数据类型
-
df.dtypes
df.head()
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
(4)数据初探
-
# 数据描述性统计分析
-
df.describe()
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
描述性统计分析:
-
用户平均每笔订单购买2.4件商品,中位数为2.0,数据呈现正偏态(右偏)特征,最大值99,需要关注极值点(为何该用户同时买了那么多CD);
-
用户平均订单金额为35.89,中位数为25.98,数据同样呈现正偏态(右偏)特征,大部分订单金额都集中在中小额范围(14.4~43.7),存在极值点。
4.2消费概况分析
4.2.1时间维度分析消费情况(按月)
按月份降采样,统计信息。
-
df_dtindex = df.set_index(['order_dt'])
-
# 统计每月订单商品量、每月订单金额
-
month_grouped = df_dtindex.resample('m').sum()[['order_products','order_amount']]
-
# 统计每月消费人数
-
month_grouped['user_num'] = df_dtindex.resample('m')['user_id'].nunique()
-
# 统计每月订单数
-
month_grouped['order_quantity'] = df_dtindex.resample('m')['user_id'].size()
-
month_grouped.head()
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
每月订单商品量、每月订单金额、每月消费人数、每月订单数趋势图。
month_grouped.plot(kind='line',subplots=True,figsize=(10,8))
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
从折线趋势图可以看出:
-
1-3月份订单商品量和订单金额都较高,4月份急速下降后趋于平缓;
-
1-3月份月均消费人数在7800~9600之间,4月份开始月均消费人数开始下降,在2000人次附近波动,反应用户粘性不高,留存率低。
出现以上的原因,可能是该网站1-3月份做大推广;或者明星新CD专辑集中发布,大量粉丝涌入网站购买。
<
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkbbab
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22