本文主要是介绍如何用Python对客户的消费记录进行RFM分析。
具体的思路如下:导入数据——数据概览——数据处理——RFM分析——简单的可视化操作
一、数据的导入本文的分析主要用到pandas模块,因此首先在Python中导入pandas模块,取别名为pd。
用pd.read_csv读取数据文件,由于文件路径上有中文,所以要令engine='python',解码方式用utf8,具体程序如下:
import pandas as pd
data = pd.read_csv(
r'C:\Users\86135\Desktop\消费用户的RFM价值分析及可视化\sales.csv',
engine='python' , encoding='utf8'
)
二、数据概览
由于我是使用Spyder来进行数据分析的,在Spyder工作界面右上角有一个变量浏览窗口,这里我们只需要双击我们要查看的变量就行,具体结果如下:Spyder变量浏览界面
通过变量浏览窗口的“Size”字段可以得到相应变量的大小信息,看得出来,该数据集86135行,4个字段构成。
接下来双击该变量以查看该数据集的具体情况:Spyder变量的具体展示窗口
通过上图我们看到了数据集包含几个英文字段,为了方便识别,这里将他们进行重命名:
data.columns = ['用户ID','订单时间','订单ID','交易金额']
三、数据处理
本文对数据进行的处理包括:删除重复值、缺失值处理、标准化处理、异常值处理
1、删除重复值
首先我们看一下数据集是否有重复值
data[data.duplicated()]
得出的结果为Empty DataFrame,即该数据集没有重复项
2、缺失值处理
首先还是要看一下缺失值的情况,以确定用什么方式进行处理
data.isnull().sum()
得到结果如下:
用户ID 0
订单时间 2
订单ID 0
交易金额 8
由于缺失值数量(最多就10项)对比于总的数据量(86135项)来说太少了,所以这里对其直接进行删除:
data=data.dropna()
# 删除缺失项之后,索引会有缺失,可能会影响后续操作,所以对索引进行重新的处理
data.index=range(data.shape[0])
3、标准化处理
主要是对“订单时间”字段进行处理,将该字段的数据变成Python中的时间类型:
data['订单时间'] = pd.to_datetime(data['订单时间'] , format='%Y/%m/%d')
4、异常值处理
首先是看一下时间有没有存在异常值:
data['订单时间'].min()
得到结果:Timestamp(&