Pandas数据分析实战 — 用户消费行为分析

本文通过Pandas对CD商品订单数据进行分析,从时间维度和用户维度探讨用户消费行为,包括消费概况、用户分层、生命周期、留存率和复购率等方面。结果显示,大部分用户消费集中在前三个月,消费频率低,用户粘性不高,但少数用户贡献大部分消费额度。此外,用户生命周期、购买周期和消费金额之间存在关联,为业务运营提供了优化方向。
摘要由CSDN通过智能技术生成

前言

CD商品订单数据的分析总结。根据订单数据(用户的消费记录),从时间维度和用户维度,分析该网站用户的消费行为。通过此案例,总结订单数据的一些共性,能通过用户的消费记录挖掘出对业务有用的信息。对其他产品的线上消费数据分析有一定的借鉴价值,能达到举一反三的效果。

一、案例背景

  CDNOW是一家美国在线零售商,主营商品为CD唱片,ToC业务。1998年上市,2000年被贝塔斯曼收购。网上有一份用户订单消费数据集:CDNOW订单数据集


二、案例目的

  这份数据集只包含了四个基本信息字段:用户ID、购买日期、购买数量、购买金额。本案例的目标:通过这个四个字段,在数据集时间窗口内,分析用户消费的基本概况;通过用户分层、周期分析、复购率和回购率分析等,梳理现阶段用户的价值现状,并尝试根据业务经验提一些运营建议。


三、分析框架


四、分析过程

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()

 从前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()

(4)数据初探

# 数据描述性统计分析
df.describe()

描述性统计分析:

  • 用户平均每笔订单购买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()

  每月订单商品量、每月订单金额、每月消费人数、每月订单数趋势图。

month_grouped.plot(kind='line',subplots=True,figsize=(10,8))

从折线趋势图可以看出:

  • 1-3月份订单商品量和订单金额都较高,4月份急速下降后趋于平缓;

  • 1-3月份月均消费人数在7800~9600之间,4月份开始月均消费人数开始下降,在2000人次附近波动,反应用户粘性不高,留存率低。

出现以上的原因,可能是该网站1-3月份做大推广;或者明星新CD专辑集中发布,大量粉丝涌入网站购买。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金戈鐡馬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值