📊 数据探索与可视化

特征工程 · 提升预测准确率实战课程

📋 数据概览 · 描述性统计

快速掌握数据集全貌,包括样本量、特征类型、分布中心与离散趋势。

统计量年龄 (Age)年收入 (Income)购买次数 (Purchases)满意度 (Score)
样本量1,0001,0001,0001,000
均值38.572,34012.77.2
中位数36.065,2009.07.5
标准差14.228,4508.31.8
最小值1815,00001.0
最大值82210,0005810.0
缺失值21508
  • 连续特征标准化
  • 偏度与峰度检查
  • 类别平衡评估
  • 内存占用优化

🧩 缺失值 · 异常值可视化

缺失值热力图 年龄 收入 购买 满意度 行1 行2
缺失模式 (深色=缺失)
异常值箱线图 IQR 法则 · 离群点
异常值检测 (IQR)

🔍 缺失率 < 5% 采用均值/中位数填充;异常值采用盖帽法或对数变换

📈 分布分析 · 偏度与峰度

年龄分布 (直方图) 年龄组
右偏分布 (年龄)
收入密度 (KDE) 对数正态分布
收入密度 (右偏)
📌 偏度 > 1 考虑 Box-Cox 📌 峰度 > 3 关注极端值 📌 分类特征频次条形图

🧭 数据探索流程架构 EDA Pipeline

数据概览 描述性统计 缺失/异常 分布分析 迭代反馈 · 特征工程前置

🐍 实战代码片段

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 数据概览
df = pd.read_csv('customer_data.csv')
print(df.info())
print(df.describe())

# 缺失值可视化
sns.heatmap(df.isnull(), cbar=False, cmap='Oranges')
plt.title('缺失值热力图')
plt.show()

# 异常值可视化 (箱线图)
sns.boxplot(data=df[['Age', 'Income', 'Purchases']])
plt.title('异常值检测')
plt.show()

# 分布分析
df['Income'].hist(bins=30, color='#e8b384', edgecolor='white')
plt.title('收入分布 (右偏)')
plt.show()

⭐ 使用 pandas-profiling 或 ydata-profiling 一键生成报告