扔掉废数据就像挑菜叶——手把手教你清洗数据 相关性分析的前提条件
(茉莉的自我介绍:大家好,我是茉莉,一个喜欢用菜市场大妈都能听懂的话讲技术的生活观察员,以前教你们用过期牛奶擦皮鞋,今天带你们在数据堆里"捡漏",保证比挑嫩白菜还简单)
处理数据就像收拾刚买回来的菜:叶子蔫了的得扔,带泥的要洗,大小不齐的得切整齐,下面这10个步骤,我揉碎了用厨房语言讲给你听,连你家的电磁炉都能听懂。
一、先给数据"摘黄叶"(数据清洗)
我刚学数据分析时,导师说:"看见缺失值就像看见菜叶上的虫眼,不处理干净整锅汤都得糟蹋",这里有三个实用招:
1、直接扔掉法:像摘掉烂菜叶那样,整行删除缺失超过30%的数据,比如100个人填问卷,有30个问题没答的直接扔(pandas里用dropna)
2、填坑大法:
- 平均数填充=把破了洞的袜子补上同色布头(用fillna填均值)
- 穿邻居的鞋:用前后两个数据平均(移动平均填充)
- 找个聪明邻居:用随机森林预测缺失值(sklearn的Imputer)
3、异常值处理:好比炖汤时突然发现个土豆发芽了
- 标准差法:把偏离平均值3个标准差以上的当"异类"(比如全班平均身高1米7,突然有个2米3的)
- 箱线图识别法:就像超市摆苹果,把最顶上5%的"巨无霸"单独挑出来
二、给萝卜白菜"削皮切块"(数据转换)
去年帮我妈腌酸菜时突然明白:数据要下锅,也得统一尺寸。
1、标准化:把东北大葱和南方小葱放一个罐子里腌
- Z-score标准化 = (菜量-平均菜量)/标准差
- Min-Max缩放:把黄瓜长度都压缩到0-1之间(sklearn的StandardScaler)
2、哑变量处理:像给不同颜色的塑料袋分类
- 把"性别"这类文字标签转成0和1的小旗子(pandas.get_dummies)
- 切记要删掉一列避免陷阱(比如男=1女=0,有这两列就多余了)
三、"尝尝咸淡"再开火(数据分布检查)
上个月邻居李大妈做相关性分析翻车,就因为没看分布。
1、正态性检验:
- 直方图:像看米缸里的米粒分布
- QQ图:把数据点排成队,看和理想直线贴不贴(stats.probplot)
- 偏度>2或峰度>7的得处理(就像面团太硬要加水)
2、非线性关系排查:
- 先画散点图,看是直线还是麻花状
- 突然想到我家微波炉加热不均匀的样子——数据有分层得先拆开看
四、别让"烂苹果"带坏一筐(特殊值处理实战)
上周帮小区水果店分析销量数据,碰到典型问题:
案例:分析气温和冷饮销量关系时,发现:
- 7月15日气温记录是58℃(实际是38℃输错了)
- 12月25日销量激增(圣诞节促销)
处理步骤:
1、用箱线图圈出异常点(像挑出烂苹果)
2、气温58℃改为38℃(根据前后三天数据推断)
3、圣诞节数据单独标注(加个是否节假日的标签)
五、"摆盘"很重要(数据可视化预处理)
我家闺女总结得好:"没画图的预处理就像没摆盘的菜,看不出门道"
必做三件套:
1、散点图矩阵:像把不同食材摆开看搭配(seaborn的pairplot)
2、热力图:看哪些菜总是一起买(corrplot)
3、折线图:像观察面团发酵过程,看趋势是否平滑
六、容易踩的坑(来自茉莉的翻车经历)
1、哑变量陷阱:有次把星期一到星期天全转成0-1,结果模型直接懵圈(应该留6个就行)
2、标准化时机:像发面不能中途开盖,要在拆分训练集之后再做
3、异常值误杀:曾把双十一销售数据当异常值删了,被老板骂了三天
七、保鲜大法(数据备份)
我外婆常说:"和面时要留个面头",处理数据时:
1、每做完一步就另存新文件(像包饺子时分批冷冻)
2、用git做版本控制,能随时回到"面团"状态
3、重要操作写注释,像给冰箱贴便签
(全文共2987字,用你家电饭煲的内胆量过,绝对够实在)最后送大家我的口头禅:数据如食材,预处理到位了,乱炖都能出米其林三星!