kaggle电商用户价值分析

目录

数据来源:

特征说明:

数据处理

结果展示

数据可视化

数据可视化代码:

rfm模型预测

rfm 模型介绍

特征提取:

生成的rfm客户类型图:

k-means聚类

数据来源:

该数据集为在线零售商在2010年12月1日至2011年12月9日间发生的所有网络交易订单信息。
该公司主要销售礼品为主,并且多数客户为批发商。
数据集介绍及来源:
https://www.kaggle.com/carrie1/ecommerce-data

特征说明:

InvoiceNo:订单编号,由六位数字组成,退货订单编号开头有字幕’C’
StockCode:产品编号,由五位数字组成
Description:产品描述
Quantity:产品数量,负数表示退货
InvoiceDate:订单日期与时间
UnitPrice :单价(英镑)
CustomerID:客户编号,由5位数字组成
Country:国家

数据处理

利用pandas库检查缺失值和异常值,删除InvoiceNo列异常值数据(运行后可知该列异常值是A开头+六位数字)并将UnitPrice列的异常值数据进行线性插值填补后存入data2.csv表中。

import pandas as pd

# 读取CSV文件
dataframe = pd.read_csv('data.csv')

# 检查缺失值
missing_values = dataframe.isnull().sum()
print("缺失值数量:\n", missing_values)

# 检查InvoiceNo列异常值
# 定义条件1:订单编号由六位数字组成
condition1 = dataframe['InvoiceNo'].str.isnumeric() & (dataframe['InvoiceNo'].str.len() == 6)

# 定义条件2:退货订单编号以字母'C'开头(即C+六位数字)
condition2 = dataframe['InvoiceNo'].str.match(r'^C\d{6}$')

# 通过逻辑与操作符 (&) 组合两个条件
valid_invoice_conditions = condition1 | condition2

# 通过布尔索引选择满足条件的行,得到清洗后的DataFrame
cleaned_dataframe = dataframe[valid_invoice_conditions]

# 计算'InvoiceNo'列异常值数量
invoice_no_outliers_count = len(dataframe[~valid_invoice_conditions])
print("InvoiceNo列异常值数量:", invoice_no_outliers_count)
# 打印InvoiceNo列异常值
invoice_no_outliers = dataframe[~valid_invoice_conditions]['InvoiceNo']
print("InvoiceNo列异常值:\n", invoice_no_outliers)

# 利用标准差方法检测UnitPrice列的异常值
unit_price_mean = cleaned_dataframe['UnitPrice'].mean()
unit_price_std = cleaned_dataframe['UnitPrice'].std()
upper_bound = unit_price_mean + 3 * unit_price_std
lower_bound = unit_price_mean - 3 * unit_price_std

# 获取UnitPrice列的异常值
unit_price_outliers = (cleaned_dataframe['UnitPrice'] > upper_bound) | (cleaned_dataframe['UnitPrice'] < lower_bound)

# 使用线性插值填充异常值

cleaned_dataframe.loc[:, 'UnitPrice'] = cleaned_dataframe['UnitPrice'].interpolate(method='linear')

# 计算'UnitPrice'列异常值数量
unit_price_outliers_count = len(cleaned_dataframe[unit_price_outliers])
print("UnitPrice列异常值数量:", unit_price_outliers_count)

# 打印UnitPrice列异常值
unit_price_outliers = cleaned_dataframe[unit_price_outliers]['UnitPrice']
print("UnitPrice列异常值:\n", unit_price_outliers)

# 保存清洗后的数据到新表data2.csv
cleaned_dataframe.to_csv('data2.csv', index=False)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值