国际超市电商销售数据分析实战:从数据清洗到业务决策的完整流程
在电商行业,数据是驱动业务增长的核心引擎。本文将以国际超市电商销售数据为研究对象,完整拆解从数据准备 → 深度分析 → 策略输出的实战流程,涵盖数据清洗、多维度洞察、RFM 客户分群等关键环节。文章既适合数据分析初学者参考,也能为电商运营人员提供实用的决策支持思路。
一、项目背景与数据说明
1.1 项目目标
本次分析围绕三个核心业务问题展开:
- 识别高价值客户与流失风险客户,优化客户运营策略;
- 定位高利润产品与问题品类,辅助产品结构调整;
- 明确核心市场与亏损区域,指导资源分配与市场投入。
1.2 数据概况
数据来源:国际超市电商销售数据集(Superstore.xlsx)
数据规模:共 51,290 条订单记录,26 个字段
核心字段:
- 订单信息:订单 ID、订单日期、运输方式
- 客户信息:客户 ID、姓名、细分类型
- 产品信息:类别、子类别、售价
- 财务信息:销售额、利润、折扣
- 地域信息:城市、国家、市场
二、核心分析流程:六步实现从数据到决策
2.1 第一步:数据导入与环境搭建
数据分析的第一步是让数据“可用”。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False
# 加载数据
df = pd.read_excel('Superstore.xlsx')
# 列名映射为中文,降低理解成本
col_map = {
'Row ID': '序列ID', 'Order ID': '订单ID', 'Ship Mode': '运输方式',
'Customer ID': '客户ID', 'Segment': '客户细分类型', 'Category': '产品类别',
'Sales': '售价', 'Quantity': '数量', 'Discount': '折扣', 'Profit': '利润',
'Market': '市场', 'Order Date': '订单日期'
}
df.rename(columns=col_map, inplace=True)
2.2 第二步:数据清洗与预处理
数据质量直接决定分析结果的可靠性,常见的步骤包括缺失值处理、异常值检查、逻辑统一。
1. 数据结构探查
print(df.info())
print(df[['售价', '数量', '折扣', '利润']].describe())
关键发现:
- 邮政编码缺失严重,且对业务分析价值不大 → 删除
- 售价最小值为 0,经核实为赠品记录 → 保留
- 折扣范围 0-0.85,符合业务逻辑
2. 缺失值与重复值处理
df.drop('邮政编码', axis=1, inplace=True)
print(f"重复数据条数:{df[df.duplicated()].shape[0]}")
3. 业务逻辑统一与衍生指标
# 折扣逻辑:0 替换为 1.0(无折扣)
df['折扣'] = df['折扣'].replace(0., 1.0)
# 衍生指标:销售额(含运费)
df['销售额'] = df['售价'] * df['数量'] * df['折扣'] + df['运费']
通过这一步,数据已具备进一步分析的基础。
2.3 第三步:探索性数据分析(EDA)
EDA 的目标是快速定位重点。
print(df['客户细分类型'].value_counts(normalize=True).round(3) * 100)
print(df['产品类别'].value_counts(normalize=True).round(3) * 100)
print(df['市场'].value_counts(normalize=True).round(3) * 100)
结论:
- 客户:个人消费者占比 51.7%,是核心客群
- 产品:办公用品占比 61.0%,需求最旺盛
- 市场:APAC、LATAM、EU 为三大核心市场
EDA 帮助我们确定了后续分析的重点方向:客户价值、产品盈利、市场差异。
2.4 第四步:多维度深度分析
从客户、产品、市场、时间四个维度展开,核心逻辑是“规模 - 利润 - 趋势”。
客户维度:谁是核心客户?
通过分组计算客户数量、销售额、利润占比,可以发现:
- 三类客户(个人 / 企业 / 家庭工作室)的贡献比例接近,消费能力无显著差异;
- 子类别偏好集中在办公用品,尤其是“Binders”“Storage”。
同时,消费行为箱线图揭示:
- 消费频次中位数为 40-60 次
- 存在高价值大客户(消费额超 10 万元)
- 存在沉睡客户(1 年未消费)
这为后续的 RFM 分群打下基础。
产品维度:哪些产品赚钱?
产品大类分析发现:
- 技术产品利润率最高,是核心盈利品类;
- 家具销量高但利润率低,部分子类(如桌子)甚至亏损。
tables_df = df[df['子类别'] == 'Tables']
print(tables_df.groupby('产品名称')['利润'].sum().sort_values().head(10))
负利润的“桌子”类产品需重新定价或替换供应商。
市场维度:哪些区域值得投入?
分市场分析:
- 核心盈利市场:APAC、EU(利润率 > 9%)
- 潜力市场:Canada、LATAM,虽然规模小但利润率高
- 问题市场:EMEA、Africa,利润率为负
时间维度:何时是销售高峰?
年度趋势:利润逐年增长,2021 年达峰值;
月度规律:Q4 为销售高峰(年末促销驱动),7 月低谷。
2.5 第五步:RFM 客户分群
RFM 模型是电商精细化运营的常用工具。
current_date = df['订单日期'].max()
rfm_df = df.groupby('客户ID').agg({
'订单日期': lambda x: (current_date - x.max()).days,
'订单ID': 'nunique',
'销售额': 'sum'
}).rename(columns={'订单日期': 'R', '订单ID': 'F', '销售额': 'M'})
# 打分
rfm_df['R_Score'] = pd.cut(rfm_df['R'], bins=[0,60,180,360,720,np.inf], labels=[5,4,3,2,1])
rfm_df['F_Score'] = pd.cut(rfm_df['F'], bins=[0,10,50,100,200,np.inf], labels=[1,2,3,4,5])
rfm_df['M_Score'] = pd.cut(rfm_df['M'], bins=[0,1000,5000,10000,20000,np.inf], labels=[1,2,3,4,5])
rfm_df[['R_Score','F_Score','M_Score']] = rfm_df[['R_Score','F_Score','M_Score']].astype(int)
分群结果:
- 高价值客户 ≈ 15%,是核心收入来源
- 流失风险客户 ≈ 12%,需要召回
- 频次与消费额相关性高(r≈0.7),说明高频客户往往也是高价值客户
2.6 第六步:业务策略输出
数据分析的最终目标是支撑业务决策。结合以上洞察,形成以下五类可落地策略:
客户策略:
- 高价值客户:专属客服 + 会员权益
- 流失客户:个性化召回优惠
- 新客户:低价产品引导复购
产品策略:
- 加大投入:技术产品、办公用品
- 整改:亏损家具产品
- 交叉销售:办公用品搭配推荐
市场策略:
- 核心:APAC、EU 增加推广
- 潜力:复制 Canada、LATAM 模式
- 问题:缩减 EMEA、Africa 投入
库存策略:
- Q4 提前备货
- 7 月减少家具库存
促销策略:
- 年末满减 + 赠品
- 淡季客户唤醒
三、项目总结与复盘
3.1 核心收获
- 建立了标准化分析框架:数据导入 → 清洗 → EDA → 多维度分析 → RFM → 策略输出
- 所有分析均围绕业务问题展开,避免“为分析而分析”
- 输出的策略可直接指导电商运营
3.2 改进方向
- 增加客户生命周期价值(CLV)模型,更精准衡量客户长期贡献
- 结合评论数据,定位问题产品的真实用户痛点
- 对比竞品数据,优化市场策略
四、结语
通过本次实战,我们完成了一个从原始数据 → 深度洞察 → 业务落地的完整闭环。这类流程不仅适用于电商行业,也可以迁移到金融、教育、零售等其他场景。希望本文能为你提供一个可复制的分析思路,在数据驱动的道路上更进一步。