数据预处理全流程(一个数据集贯穿),入门级包学包会

发布时间:2026/6/26 18:07:50
数据预处理全流程(一个数据集贯穿),入门级包学包会 假设原始数据是一张用户表ID年龄薪资城市购买次数1258000北京5230?上海123258000北京5420012000深圳353515000?862810000广州0① 缺失值处理方法怎么做本例结果删除直接去掉该行删掉 ID2缺薪资、ID5缺城市填充均值用其他行的平均值填薪资?→ (80001200010000)/3 10000填充众数用出现最多的值填城市?→北京出现2次最多填充固定值统一填一个数城市?→未知实际最常用数值型填均值类别型填众数。② 重复值处理ID1 和 ID3 完全一样操作结果删除重复留一行删一行保留最后出现留 ID3python df.drop_duplicates() # 默认保留第一条③ 异常值处理ID4 年龄200明显是异常方法怎么做本例结果删除直接删删掉 ID4截断Capping超过上限的全部设为上限年龄 100 的全改成100视为缺失当成缺失值再用均值填年龄200 → 缺失 → 填均值 28业务敏感数据如年龄用截断不要直接删。④ 编码让机器能读懂文字城市是文字模型看不懂必须转数字方法结果适用场景Label Encoding北京0, 上海1, 深圳2, 广州3有大小关系的如等级One-Hot Encoding北京→[1,0,0,0]上海→[0,1,0,0]...无大小关系的如城市One-Hot 后的表年龄薪资北京上海深圳广州购买次数258000100053010000010012.....................⑤ 标准化 / 归一化让量纲一致年龄范围 20~100薪资范围 5000~20000数字差距太大模型会被薪资主导。方法公式结果范围本例年龄25归一化 (Min-Max)(x - min) / (max - min)[0, 1](25-20)/(100-20) 0.0625标准化 (Z-Score)(x - μ) / σ均值0标准差1(25-28)/4 ≈-0.75选哪个有明确上下界如0~100分→ 归一化没有明确边界如薪资→ 标准化树模型随机森林、XGBoost→不需要做⑥ 二值化刚才讲过购买次数 → 是否活跃原始阈值≥5结果5≥51活跃12≥51050不活跃⑦ 特征选择少即是多方法思路删低方差列所有人城市都一样 → 删掉删高相关列薪资和年收入几乎一样 → 留一个业务判断ID 对预测没用 → 删掉完整流程一览原始数据 → ① 缺失值处理填/删 → ② 重复值处理删 → ③ 异常值处理删/截断/填 → ④ 编码文字→数字 → ⑤ 标准化/归一化量纲统一 → ⑥ 二值化/分箱按需 → ⑦ 特征选择降维 → 干净数据 → 喂模型