附录目标:
- 快速回顾全书核心知识点
- 遇到问题时快速定位解决方案
- 业务场景 → 分析方法 → 工具函数 一站式查询
- 可打印、可收藏、可贴在工位
一、核心函数卡片
1.1 数据读取与概览
| 函数 | 做什么 | 什么时候用 | 输出什么 |
|---|
pd.read_csv() | 读取CSV文件 | 拿到CSV格式数据的第一件事 | DataFrame |
pd.read_excel() | 读取Excel文件 | 业务报表、多Sheet数据 | DataFrame |
df.head() | 显示前N行 | 刚读完数据,确认加载正确 | 表格 |
df.info() | 全身体检报告 | 必做:了解行数、列数、类型、缺失 | 文本报告 |
df.describe() | 数值列统计摘要 | 了解数值分布、找异常值 | 统计表 |
1.2 数据清洗
| 函数 | 做什么 | 什么时候用 | 关键参数 |
|---|
df.isnull().sum() | 统计每列缺失数量 | 发现缺失值 | — |
df.dropna() | 删除缺失值 | 缺失极少(❤️%) | subset,how |
df.fillna() | 填充缺失值 | 缺失较多,需要保留数据 | value,method |
df.duplicated() | 检测重复行 | 怀疑有重复数据 | subset,keep |
df.drop_duplicates() | 删除重复行 | 确认需要去重 | subset,keep |
df.astype() | 转换数据类型 | 类型不对时 | {'col': 'int'} |
pd.to_datetime() | 转成日期格式 | 日期存成了文本或数字 | format |
1.3 探索性分析
| 函数 | 做什么 | 什么时候用 | 输出什么 |
|---|
df['col'].unique() | 列出所有不同取值 | 检查分类变量有哪些值 | 列表 |
df['col'].value_counts() | 统计每个值的频次 | 看分布、找脏数据 | 频次表 |
df.groupby() | 分组聚合 | 对比不同组的表现 | GroupBy对象 |
df.pivot_table() | 透视表 | 多维度交叉分析 | 透视表 |
df.corr() | 计算相关系数 | 找变量之间的关系 | 相关系数矩阵 |
1.4 可视化
| 函数 | 做什么 | 什么时候用 | 适用场景 |
|---|
plt.plot() | 折线图 | 看趋势、时间序列 | 销售额变化 |
plt.bar()/sns.barplot() | 柱状图 | 对比类别大小 | 品牌销量对比 |
plt.hist()/sns.histplot() | 直方图 | 看单变量分布 | 价格分布 |
sns.boxplot() | 箱线图 | 对比多组分布、找异常 | 不同城市价格对比 |
sns.scatterplot() | 散点图 | 看两个变量关系 | 里程vs价格 |
sns.heatmap() | 热力图 | 看相关性矩阵 | 特征相关性 |
sns.pairplot() | 散点图矩阵 | 快速扫描多变量关系 | 探索性分析 |
1.5 建模
| 函数/类 | 做什么 | 什么时候用 | 关键参数 |
|---|
train_test_split() | 划分训练/测试集 | 建模前必做 | test_size,random_state |
LinearRegression() | 线性回归 | 基线模型、需解释性 | — |
DecisionTreeRegressor() | 决策树回归 | 可解释、非线性 | max_depth |
RandomForestRegressor() | 随机森林回归 | 追求精度 | n_estimators |
LogisticRegression() | 逻辑回归 | 二分类基线 | class_weight |
RandomForestClassifier() | 随机森林分类 | 分类精度优先 | n_estimators |
KMeans() | K-Means聚类 | 用户分群、发现分组 | n_clusters |
mean_squared_error() | 计算MSE | 评估回归模型 | — |
accuracy_score() | 计算准确率 | 评估分类模型(平衡数据) | — |
classification_report() | 完整分类报告 | 评估分类模型 | 输出P/R/F1 |
1.6 时间序列
| 函数/方法 | 做什么 | 什么时候用 | 关键参数 |
|---|
pd.to_datetime() | 转日期格式 | 日期是文本/数字时 | format |
df.set_index('date') | 设日期为索引 | 时间序列分析前 | — |
df.resample('M').mean() | 重采样 | 改变时间粒度 | 频率(‘D’,‘W’,‘M’) |
df.shift(1) | 滞后 | 创建滞后特征 | periods |
SimpleExpSmoothing() | 简单指数平滑 | 平稳数据预测 | alpha |
Holt() | Holt趋势模型 | 有趋势无季节 | trend |
ExponentialSmoothing() | Holt-Winters | 有趋势有季节 | seasonal |
二、业务场景 → 分析方法对照表
2.1 用户增长与运营
| 业务问题 | 分析方法 | 核心指标 | 可视化 | 何时用 |
|---|
| 用户增长是快还是慢? | 趋势分析 | 日活/月活增长率 | 折线图 | 定期监控 |
| 哪个渠道用户质量最好? | 分组对比 | 各渠道留存率、LTV | 柱状图 | 渠道评估 |
| 用户在哪一步流失最多? | 漏斗分析 | 各环节转化率 | 漏斗图 | 优化转化路径 |
| 应该分成哪几类用户运营? | 聚类(RFM) | R、F、M三个维度 | 散点图/雷达图 | 精细化运营 |
| 哪些用户快要流失了? | 分类(流失预警) | 召回率、精确率 | 混淆矩阵 | 提前干预 |
2.2 销售与商品
| 业务问题 | 分析方法 | 核心指标 | 可视化 | 何时用 |
|---|
| 整体销售趋势如何? | 趋势分析 | 销售额、销量 | 折线图 | 月度/季度复盘 |
| 哪个商品卖得最好? | 排序+占比 | 销售额Top N、集中度 | 条形图/饼图 | 商品运营 |
| 哪些因素影响价格? | 相关性分析 | 相关系数 | 热力图 | 定价策略 |
| 商品定价合理吗? | 回归(价格预测) | MAE、R² | 散点图(实际vs预测) | 动态定价 |
| 哪些商品常一起买? | 关联规则 | 支持度、置信度 | 网络图 | 捆绑销售 |
2.3 风控与异常
| 业务问题 | 分析方法 | 核心指标 | 可视化 | 何时用 |
|---|
| 哪些交易可能是欺诈? | 异常检测 | 召回率、精确率 | 箱线图/散点图 | 实时风控 |
| 用户的信用风险多高? | 分类(评分卡) | AUC、KS值 | ROC曲线 | 信贷审批 |
| 数据里有没有异常值? | 描述性统计/IQR | 最大值、最小值 | 箱线图 | 数据清洗 |
| 哪些订单是刷单? | 聚类(异常检测) | 轮廓系数 | 散点图 | 反作弊 |
2.4 财务与预算
| 业务问题 | 分析方法 | 核心指标 | 可视化 | 何时用 |
|---|
| 下个月/季度能赚多少? | 时间序列预测 | MAPE、RMSE | 预测vs实际折线图 | 预算规划 |
| 成本主要花在哪里? | 构成分析 | 各成本项占比 | 饼图/堆叠柱状图 | 成本控制 |
| 和去年同期比怎么样? | 同比/环比分析 | 同比增长率 | 双柱对比图 | 业绩复盘 |
2.5 产品与体验
| 业务问题 | 分析方法 | 核心指标 | 可视化 | 何时用 |
|---|
| 新功能效果好吗? | A/B测试 | p值、效应量 | 箱线图对比 | 功能上线后 |
| 用户最喜欢哪个功能? | 频次分析 | 使用次数、使用时长 | 条形图 | 产品迭代 |
| 用户满意度怎么样? | 描述性统计 | 平均分、NPS | 直方图 | 服务质量监控 |
三、常见问题 → 解决方案对照表
3.1 数据清洗类
| 问题 | 现象 | 解决方案 | 对应函数/方法 |
|---|
| 中文乱码 | 显示ä½ å¥½ | 换编码 | encoding='gbk'或'utf-8' |
| 手机号前导0丢失 | 13800138000变成1.38e10 | 读成字符串 | dtype={'phone': str} |
| 日期格式不对 | 20240115无法做日期运算 | 转日期格式 | pd.to_datetime(format='%Y%m%d') |
| 数字里混了逗号 | "10,000"无法转数字 | 先去逗号 | str.replace(',', '') |
| 数字里混了单位 | "25岁"无法转数字 | 提取数字 | str.extract('(\d+)') |
缺失值用-表示 | info()显示object类型 | 替换为NaN | df.replace('-', np.nan) |
| 缺失值太多 | 某列缺失>50% | 删除该列 | df.drop(columns=['col']) |
| 存在完全重复行 | 多行一模一样 | 去重 | df.drop_duplicates() |
| 存在异常值 | age列出现200 | 删除或用中位数替换 | 业务判断 + IQR/Z-score |
| Excel有合并单元格 | 读出来很多NaN | 向下填充 | df.fillna(method='ffill') |
| Excel前几行不是数据 | 前3行是标题/Logo | 跳过行 | skiprows=3 |
3.2 分析类
| 问题 | 现象 | 解决方案 | 注意事项 |
|---|
| 均值不能代表典型值 | 均值>中位数很多 | 用中位数 | 右偏分布 |
| 不知道用均值还是中位数 | 数据有极端值 | 用中位数 | 或两者都汇报 |
| 两组数据差异是否显著 | 看起来有差别 | t检验/卡方检验 | 需要统计检验 |
| 变量之间有关系吗 | 想探索关系 | 散点图 + 相关系数 | 先画图再看数 |
| 多个变量相关性 | 想看整体关系 | 热力图 | 数值型变量 |
| 数据分布不对称 | 直方图一边长尾 | log变换 | 建模前处理 |
| 不知道数据有几个峰 | 直方图可能有多个峰 | 检查是否存在子群体 | 分组分析 |
| 只有整体数据,没有细分的类别 | 想比较不同组 | 用业务规则构造分组 | 时间组/数值分箱 |
3.3 建模类
| 问题 | 现象 | 解决方案 | 调整方向 |
|---|
| 训练集好,测试集差 | 过拟合 | 降低模型复杂度 | 减小max_depth,增加正则化 |
| 训练集差,测试集也差 | 欠拟合 | 增加模型复杂度 | 增大max_depth,增加特征 |
| 类别不平衡 | 正类只占1% | 过采样/欠采样 | SMOTE、class_weight |
| 不同特征量纲差异大 | 年龄vs收入 | 标准化/归一化 | StandardScaler |
| 分类变量不知道怎么处理 | 品牌、城市等 | 编码 | 独热编码/标签编码 |
| 特征太多 | >100列 | 特征选择 | 方差阈值/特征重要性 |
| 树模型效果不好 | 调参没用 | 尝试集成/其他算法 | 随机森林 → XGBoost |
| 不知道选哪个模型 | 多个候选 | 交叉验证 | 选验证集分数最高的 |
| 预测价格总是偏低 | 模型有偏 | 检查是否用了log变换 | 预测结果需要变换回来 |
| 模型不稳定 | 每次训练结果不同 | 固定随机种子 | random_state=42 |
3.4 时间序列类
| 问题 | 现象 | 解决方案 | 说明 |
|---|
| 随机划分导致泄露 | 用未来预测过去 | 按时间顺序划分 | 前80%训练,后20%测试 |
| 不知道怎么选预测方法 | 数据无趋势无季节 | 移动平均/指数平滑 | 最简单开始 |
| 数据有趋势 | 整体向上或向下 | Holt趋势模型 | 或做差分 |
| 数据有季节性 | 每年/每月固定周期 | Holt-Winters | 或SARIMA |
| 季节性强度不确定 | 不知道加法还是乘法 | 看波动幅度 | 波动随趋势放大用乘法 |
| 预测结果滞后 | 预测总是比实际慢半拍 | 调整参数/换模型 | 增大alpha |
| 需要预测的步数多 | 预测未来12个月 | 递归预测 vs 直接预测 | 多步预测误差会累积 |
3.5 可视化类
| 问题 | 现象 | 解决方案 | 替代方案 |
|---|
| 类别太多 | >10个,柱子挤在一起 | 水平条形图 | 排序后只显示Top N |
| 饼图扇区太多 | 超过5个 | 换成条形图 | 合并“其他”类别 |
| Y轴截断 | 差异被夸大 | Y轴从0开始 | 如需截断,明确标注 |
| 颜色难以区分 | 红绿色盲无法分辨 | 用蓝+橙 | 加形状区分 |
| 3D图表 | 遮挡、扭曲 | 用2D | 绝对不用3D |
| 双Y轴引起误解 | 两个量纲放在一起 | 分开画图 | 或用标准化后对比 |
| 数据点太多重叠 | >10000点 | 随机抽样/六边形分箱 | 密度图 |
四、速查表使用指南
4.1 遇到问题时
1. 先看“常见问题 → 解决方案对照表” 2. 定位问题类型(数据清洗/分析/建模/时间序列/可视化) 3. 找到对应解决方案 4. 按方案操作或向AI描述需求
4.2 不知道用什么方法时
1. 先看“业务场景 → 分析方法对照表” 2. 找到你的业务问题(用户增长/销售/风控/财务/产品) 3. 查看推荐的分析方法、核心指标、可视化 4. 再查“核心函数卡片”了解具体工具
4.3 向AI描述需求时
| 你想做什么 | 参考这句话 |
|---|
| 数据清洗 | “读取CSV时中文乱码,换GBK编码” |
| 缺失值 | “用中位数填充年龄列的缺失值” |
| 分组对比 | “按品牌分组,计算每个品牌的平均价格” |
| 可视化 | “画一个箱线图,对比不同变速箱类型的价格分布” |
| 建模 | “用随机森林训练价格预测模型,输出特征重要性” |
| 聚类 | “对用户做K-Means聚类,K=4,然后分析每组特征” |
| 时间序列 | “用Holt-Winters预测未来6个月的销售额” |
五、打印版(可裁剪)
┌─────────────────────────────────────────────────────────┐ │ 【数据清洗速查】 │ │ 乱码 → 换编码(utf-8/gbk) │ │ 丢0 → 读成字符串 │ │ 日期不对 → to_datetime │ │ 缺失值 → dropna(少) / fillna(多) │ │ 重复 → drop_duplicates │ │ 异常 → IQR / Z-score │ └─────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ 【可视化速查】 │ │ 趋势 → 折线图 │ │ 对比 → 柱状图 │ │ 占比 → 饼图(≤5类) / 条形图(>5类) │ │ 分布 → 直方图/箱线图 │ │ 关系 → 散点图 │ │ 相关 → 热力图 │ └─────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ 【建模速查】 │ │ 回归(预测数字) → 线性回归(基线) / 随机森林(精度) │ │ 分类(预测类别) → 逻辑回归(基线) / 随机森林(精度) │ │ 聚类(发现分组) → K-Means │ │ 过拟合 → 降低复杂度 / 增加数据 │ │ 欠拟合 → 增加复杂度 / 增加特征 │ └─────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────┐ │ 【评估指标速查】 │ │ 回归:MAE(平均误差) / RMSE(大误差惩罚) / R²(解释力) │ │ 分类:准确率(平衡) / 召回率(抓坏人) / 精确率(不误伤) │ │ F1(P/R调和) / AUC(排序能力) │ │ 时序:MAE / RMSE / MAPE(相对误差) │ └─────────────────────────────────────────────────────────┘
下一节预告:A2 如何向AI描述需求(提示词模板库)—— 学会用自然语言让AI帮你完成数据分析任务。