第一次跑数据,大多数本科生的反应是这样的:
把数据导进 SPSS 或者 Python,跑均值、相关、回归,看着输出窗口里冒出一堆数字,既兴奋又有点慌——不知道这些数字靠不靠谱。
慌得有道理。
这种“直接开跑”的做法,大概率会得到一份看起来漂亮、实际不可信的结果。问题不在统计方法,而在数据本身。
数据如果没有事先清洗,十有八九是脏的。
什么叫“脏数据”?
脏数据不是错误数据。它包含但不限于:
第一类,录入错误。比如调查问卷里有人把“年龄”一栏填了 250。
第二类,格式不统一。比如“性别”一栏,有人填“男”,有人填“M”,有人填“1”,有人填“male”。同一个意思,四种格式,SPSS 会当成四个不同类别。
第三类,缺失值。有些人有些题没填,这些空白被系统当成0、当成-9,或者当成空白,处理方式不同,结果就完全不同。
第四类,异常值。某份回答看起来都填了,但里面的回答模式很可疑——比如一份问卷有60道李克特量表题,这位受访者全部选了“3”。
第五类,重复值。同一个受访者填了两份,因为系统bug或者他自己手抖。
这五类问题,跑统计之前不处理,跑出来的均值、相关、回归都会被污染。
下面是一份比较稳的清洗流程,适合本科生第一次跑数据时用。
第一步,先看维度。

打开数据表,先看三个最基本的事实。
一是行数。你录了多少条数据?跟预期的样本量一致吗?比如回收了 250 份问卷,数据表里却有 280 行,那就说明有 30 行是重复或垃圾数据。
二是列数。每一列对应一个变量,变量名是否清晰?有没有列名为空、乱码,或者明显写错的列?
三是数据类型。每一列是数值、文本还是日期?有没有“年龄”这种本该是数值的列,被系统识别成了文本?
这三件事用 Excel 或 Pandas 都能在五分钟内看完。看完后,你心里大概就知道这份数据“健康度”在什么水平。
第二步,处理重复和缺失。
把重复值用一个键值合并掉。如果是问卷数据,通常用“被试编号”或“提交时间戳 + IP”来识别重复。两条记录完全一样的,留一条;不完全一样但同一个人填的,看时间戳,留更晚的那一条。
缺失值的处理要分两类。
如果某条记录里缺失项很多(比如 60 道题里有人只填了 10 道),直接整条删掉,不用费力去填补。
如果个别题项缺失,要根据题型分别处理。连续型变量可用均值或中位数填补;类别型变量可用众数填补,或标记为“未回答”作为独立类别。
不要忽略缺失值。SPSS 默认按“成对删除”或“列表删除”处理,这会导致不同分析使用不同样本,结果之间无法比较。
第三步,处理格式与异常值。
格式问题用查找替换批量处理。把“男”、“M”、“male”统一编码为 1,把“女”、“F”、“female”统一编码为 2。这一步要特别注意大小写、半角全角、空格——这些隐藏字符是 SPSS 把同一个值识别成两类的常见原因。
异常值要分两步看。

第一步,看是否在合理范围内。年龄填 250 是不可能的,直接删除。
第二步,看是否在合理范围内但离群。比如年龄都在 18 到 24,有一位 67,这份数据是真实的,但它会拉偏所有均值。是否保留,要根据研究问题决定。如果研究的是大学生群体,这位 67 岁的受访者应被剔除,因为他不属于研究总体。如果研究的是“成人学习者”,他就要保留。
第四步,处理“形式上有数据但实质上无效”的记录。
这一步最难,也最容易被忽略。
最常见的情况是问卷被“敷衍填写”——所有题都选同一个选项,或者填写时间过短(300道题只填了1分钟),或者前后回答自相矛盾(“我从不熬夜”加上“我每晚都打游戏到三点”)。
这些记录在数据表里看起来完整,但内容无效,需要根据具体规则筛掉。
一个比较稳妥的做法是设三道关卡:
第一,剔除响应时间过短的记录(具体阈值因量表长度而异)。
第二,剔除标准差过低的记录(比如50道题方差为0,即所有题选了同一项)。
第三,剔除逻辑互斥的回答(在问卷设计时埋了两道彼此矛盾的题,如果一位受访者都选了“非常同意”,这份数据就剔除)。
走完这三道关卡,数据大约会减少10%到15%。剩下的数据,就可以放心做下一步分析了。
清洗完成后,你才能真正开始跑统计。
这套流程在很多本科论文里被忽略,结果就是:跑出来的数字很漂亮,但写到论文里经不起追问。
下次准备跑数据,别急着导进统计软件。先用半天到一天时间把数据清洗干净。
这半天,会决定你后面那半个学期的研究是否站得住脚。
