• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Pandas数据 — 用户消费行为

武飞扬头像
金戈鐡馬
帮助2

前言

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

一、案例背景

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


二、案例目的

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


三、分析框架

学新通
学新通

四、分析过程

4.1数据加载和初探

(1)导入相关包、设置风格样式

  1.  
    import pandas as pd
  2.  
    import numpy as np
  3.  
    import matplotlib.pyplot as plt
  4.  
    import os
  5.  
    # jupter魔法函数,设置可视化页内显示
  6.  
    %matplotlib inline
  7.  
    # 正常显示中文和负号
  8.  
    plt.rcParams['font.sans-serif'] = ['SimHei']
  9.  
    plt.rcParams['axes.unicode_minus'] = False
  10.  
    # 画图的样式风格设置为:ggplot
  11.  
    plt.style.use('ggplot')

(2)导入数据集

字段信息:

  • user_id:用户ID

  • order_dt:购买日期

  • order_products:购买数量

  • order_amount:购买金额

源数据为txt文件,通过pd.read_csv()。分割符为空白字符串,用正则表达'\s ',匹配任意空白符。

  1.  
    # 导入数据集
  2.  
    fpath = '../datasets/cdnow.txt'
  3.  
    df = pd.read_csv(
  4.  
    fpath,
  5.  
    sep = '\s ', #正则表达'\s ',匹配任意空白符
  6.  
    header=None,
  7.  
    names=['user_id','order_dt','order_products','order_amount']
  8.  
    )
  9.  
    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]

  1.  
    # 'order_dt'字段类型转换
  2.  
    df['order_dt'] = pd.to_datetime(df['order_dt'],format='%Y%m%d')

  按月份分析销售趋势,新增month字段。(tip:datetime64[M]:每月的第一天日期,datetime64[Y]:每年的第一天日期。)

  1.  
    # 新增month字段
  2.  
    df['month'] = df['order_dt'].values.astype('datetime64[M]')
  1.  
    # 查看字段的数据类型
  2.  
    df.dtypes
df.head()
学新通

(4)数据初探

  1.  
    # 数据描述性统计分析
  2.  
    df.describe()
学新通

描述性统计分析:

  • 用户平均每笔订单购买2.4件商品,中位数为2.0,数据呈现正偏态(右偏)特征,最大值99,需要关注极值点(为何该用户同时买了那么多CD);

  • 用户平均订单金额为35.89,中位数为25.98,数据同样呈现正偏态(右偏)特征,大部分订单金额都集中在中小额范围(14.4~43.7),存在极值点。

4.2消费概况分析

4.2.1时间维度分析消费情况(按月)

  按月份降采样,统计信息。

  1.  
    df_dtindex = df.set_index(['order_dt'])
  2.  
    # 统计每月订单商品量、每月订单金额
  3.  
    month_grouped = df_dtindex.resample('m').sum()[['order_products','order_amount']]
  4.  
    # 统计每月消费人数
  5.  
    month_grouped['user_num'] = df_dtindex.resample('m')['user_id'].nunique()
  6.  
    # 统计每月订单数
  7.  
    month_grouped['order_quantity'] = df_dtindex.resample('m')['user_id'].size()
  8.  
    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专辑集中发布,大量粉丝涌入网站购买。

<

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhkbbab
系列文章
更多 icon
同类精品
更多 icon
继续加载