前言
这是一个跨国数据集,其中包含在 2010 年 1 月 12 日到 2011 年 9 月 12 日之间发生的英国某电商在线零售的交易数据。
数据量很庞大,在分析思路上可以使用机器学习K-Means 等算法,根据客户在市场上的购买行为来细分客户。
数据来源
https://www.kaggle.com/yasserh/customer-segmentation-dataset
https://archive.ics.uci.edu/ml/datasets/online+retail
数据说明
该数据集共540545行,8列,具体字段信息为:
Syntax | Description |
---|---|
InvoiceNo | 发票号码,一个唯一分配给每笔交易的 6 位整数。如果此代码以字母“c”开头,则表示取消 |
StockCode | 股票代码 |
Description | 描述,产品(项目)名称 |
Quantity | 数量 |
InvoiceDate | 发票日期 |
UnitPrice | 单价,以英镑为单位的每单位产品价格 |
CustomerID | 客户ID |
Country | 国家 |
问题描述
- 数据的预处理,数据清洗,对数据集探索性分析
- 对基于客户的相似性进行细分,建立RFM人群画像,K-Means 聚类模型
- 调参并比较各种分类算法的评估指标
导入第三方库
import pandas as pd
import numpy as np
from pyecharts.charts import *
import pyecharts.options as opts
import warnings
warnings.filterwarnings('ignore')
数据预处理
## 数据读取
df = pd.read_excel('D:/**/Online Retail.xlsx')
## 缺失值处理
df.dropna(subset=['CustomerID'],inplace=True)
## 时间处理
df['InvoiceDate'] = df['InvoiceDate'].map(lambda x: str(x))
## 国家名称统一化
df.replace({
'EIRE':'Ireland','USA':'United States','RSA':'South Africa','Czech Republic':'Czech','Channel Islands':'United Kingdom'},
inplace=True)
## 计算每单的价格
df['Amount'] = df['Quantity']*df['UnitPrice']
预处理后的数据预览
df.head