数据分析案例——用户消费行为分析

数据分析之——用户消费行为分析

内容摘要

  • 项目背景
  • 项目目的
  • 分析思路
  • python数据分析实现
  • PowerBI可视化看板设置

一、项目背景

  • 这是一份用户消费行为的分析报告;
    数据来源于网上,是用户在一家单车网站上的消费记录,其时间跨度为1997年1月至1998年4月。
  • 数据格式:txt文档,具体信息见图
    在这里插入图片描述
  • 第一列——user_id:用户ID
    第二列——order_dt:购买日期
    第三列——order_prodects:购买产品数
    第四列——order_amount:购买金额

二、项目目的

通过数据分析:
1、了解本网站的基本营业情况;
2、对用户行为进行分析,掌握用户的分布情况,便于之后的策略制定;

三、分析思路

1、基础数据整理清洗
2、针对月份进行用户消费趋势的分析——便于掌握公司的营收发展趋势
3、针对用户个体消费进行分析
4、针对用户消费行为进行分析
5、针对用户购买周期进行分析
6、针对用户复购回购进行分析

四、python数据分析实现

  • 一、基础数据整理清洗
    数据清洗的目的在于对数据进行审查和校验,其主要操作有:
    (1)解析原始数据列名,理解其意义并做通俗化替换;
    (2)查看数据源每一条信息的数据类型是否正确;
    (3)查看数据有无缺失值情况;
    (4)查看数据有无异常值情况;
    (5)数据一致化处理(多用于针对时间数据)

    • 首先导入数据,解析原始数据信息,做通俗化替换。
#导入必要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#导入数据并设置列名
#解析原始数据列名,理解其意义并做通俗化替换
columns=['user_id','order_dt','order_products','order_amount']
df=pd.read_table(r':\bicycle_master.txt',sep='\s+',names=columns)
#查看数据
df.head(2)

在这里插入图片描述

  • 查看数据源每一列信息的数据类型是否正确,尤其需要注意可能会计算的数据和时间格式。
#查数据源每一条信息的数据类型是否正确
df.info()
#发现其中order_dt 购买日期应该为时间格式类型,并非整型数据,需要进行数据处理

在这里插入图片描述

-数据源中时间数据的类型为整型,需要修改成datetime格式,并且为接下来时间序列分析做准备需要将年和月提取出来。

#pd.to_datetime函数进行转换
df['order_dt']=pd.to_datetime(df['order_dt'],format='%Y%m%d')
#同时考虑到后续对数据分分析,将其按照年、月将时间提取出来
#生成年、月
df['Year']=df['order_dt'].astype('datetime64[Y]')
df['Month']=df['order_dt'].astype('datetime64[M]')
#查看数据
df.head(2)

在这里插入图片描述

#查看数据描述
df.describe()

在这里插入图片描述

  • 发现大部分订单只消费了少量商品,75%用户的产品购买量仅3个;
    用户的消费金额比较稳定,平均消费35元,中位数在25元,存在一定极值的干扰。

  • 基础数据整理结束

  • 二、针对月份进行用户消费趋势的分析

    如果以天为尺度进行分析,具有较大的波动性和随机性,并且数据量较大;以月为尺度进行分析,能够避免一定的随机性,并且还可以看出一定的分布趋势,故选择以月为尺度进行数据分析。
    以月为尺度进行分析,较为重要的是消费金额,消费频率,购买产品量和消费人数
    消费人数的变化可以看出该平台对用户粘性的变化程度;消费水平一方面与消费人数有关,另一方面可能与当月的产品及活动有关。

    • 每月的消费总金额
    • 每月的消费次数
    • 每月的产品购买量
    • 每月的消费人数
#需要对Month进行一个groupby,并对购买金额和购买产品数量进行求和,对购买次数(用户id)进行计数
grouped=df.groupby(df['Month']).agg({
   "order_amount":'sum','user_id':'count','order_products':'sum'})
grouped.head()

在这里插入图片描述

#统计每月的消费人数,即统计用户id唯一值的个数
order_month_person=grouped_month.user_id.nunique()
order_m_p=order_month_person.to_frame()
order_m_p.head()

在这里插入图片描述

  • 对用户人数统计可以看出,4月后出现明显的下跌趋势,将数据进行保存,用于后期powerbi绘图

  • 三、针对用户个体消费进行分析

    • 用户消费金额,消费个数描述性统计
    • 用户消费金额和消费次数的散点图
    • 用户消费金额的分布图
    • 用户消费次数的分布图
    • 用户累计消费金额占比
#新建一个按照用户分类的数据
user_info=df.groupby('user_id')
#用户消费金额,消费个数描述性统计
user_info.sum().describe()

(1)用户消费金额,消费个数描述性统计
在这里插入图片描述

  • 用户平均购买为7,但是中位值只有3,说明购买量大的用户占少数
  • 用户平均消费106元,中位值有43,判断同上,有极值干扰
    (2)用户消费金额和产品个数的散点图
#用户消费金额和消费次数的散点图
user_info.sum().plot.scatter(x='order_amount',y='order_products')

在这里插入图片描述

#绘制消费金额和消费个数的散点图
user_cost_number=df.groupby('user_id').agg({
   'order_amount':'sum','order_products'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值