案例1(RFM)

1,数据概况:
变量(4个):
·USERID:用户ID
·ORDERDATE:订单日期,格式为YYYY-MM-DD,例如2016-01-01。
·ORDERID:订单ID,每个订单的ID唯一,由纯数字组成。
·AMOUNTINFO:订单金额,浮点型数据

2实现
import time # 导入时间库
import numpy as np # 导入numpy库
import pandas as pd # 导入pandas库
import mysql.connector # 导入mysql连接库
dtypes = {‘ORDERDATE’: object, ‘ORDERID’: object, ‘AMOUNTINFO’: np.float32} # 设置每列数据类型
raw_data = pd.read_csv(‘sales.csv’, dtype=dtypes, index_col=‘USERID’) # 读取数据文件
#dtypes定义的字典用于使用pd.read_csv读取数据时对数据框数据类型的自定义,而非系统默认类型

raw_data.describe()
raw_data.head(4)

缺失值
na_cols = raw_data.isnull().any(axis=0) # 查看每一列是否具有缺失值
print (na_cols) # 查看具有缺失值的列
na_lines = raw_data.isnull().any(axis=1) # 查看每一行是否具有缺失值
print (‘Total number of NA lines is: {0}’.format(na_lines.sum())) # 查看具有缺失值的行总记录数
print (raw_data[na_lines]) # 只查看具有缺失值的行信息
#异常值处理
sales_data = raw_data.dropna() # 丢弃带有缺失值的行记录
sales_data = sales_data[sales_data[‘AMOUNTINFO’] > 1] # 丢弃订单金额<=1的记录
日期格式转换
sales_data[‘ORDERDATE’] = pd.to_datetime(sales_data[‘ORDERDATE’], format=’%Y-%m-%d’) # 将字符串转换为日期格式
print (sales_data.dtypes) # 打印输出数据框所有列的数据类型
数据转换
recency_value = sales_data[‘ORDERDATE’].groupby(sales_data.index).max() # 计算原始最近一次订单时间
frequency_value = sales_data[‘ORDERDATE’].groupby(sales_data.index).count() # 计算原始订单频率
monetary_value = sales_data[‘AMOUNTINFO’].groupby(sales_data.index).sum() # 计算原始订单总金额

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值