数据分析的循环
- 提问:提出一个清楚的问题(“晚上玩手机的学生睡得更少吗?”)。
- 收集数据:问卷、测量、传感器、实验或现成的数据集。
- 清洗数据。
- 整理 / 转换:排序、分组、做表格、换单位。
- 分析:概括数据、找规律、做比较。
- 画图并下结论:做一张图,回答问题,并说明你有多大把握。
答案常常会带来新的问题,于是循环又重新开始。工具有很多种,从纸和计算器,到电子表格,再到 Python 这样的编程语言。
收集和清洗数据
定量数据是数字(身高152厘米)。定性数据是文字或类别(最喜欢的运动)。第一手数据是你自己收集的;第二手数据是别人收集的。
样本就是你真正询问的那群人。样本越大、选得越随机,结果越公平;只问自己的朋友,就会带来偏差。
清洗清单
- 删除重复的记录(同一条记录出现了两次)。
- 改正或删除不可能的值(一天睡25小时)。
- 决定怎样处理缺失值(空白)。
- 统一单位和写法(厘米和米;“India”和“india”)。
保证数据安全
个人数据需要获得许可,要安全保存,分享之前可以去掉姓名(匿名化)。
分析数据:平均数、离散程度、异常值
平均数 = 所有数之和 ÷ 数的个数。中位数 = 排序后正中间的数(个数是偶数时,取中间两个数的平均数)。众数 = 出现次数最多的数。极差 = 最大值 − 最小值,它表示数据分散的程度。
异常值是与其他数相差很远的数。它可能是错误,也可能是真实的罕见情况。平均数会被异常值拉动,中位数不会,所以对收入这样偏向一边的数据,用中位数更合适。
探索性数据分析是指在检验某个想法之前,先从多个角度(表格、图表、概括数字)观察数据。按班级或城市等分组,或者把几份数据合在一起,可能会发现新的规律。
画图、下结论和评价
按用途选图表:条形图用来比较各组,折线图表示随时间的变化,散点图表示两个数值变量,饼图表示整体的各部分,直方图表示数值是怎样分布的。
在散点图里,点一起上升表示正相关;一个上升而另一个下降表示负相关。相关不等于因果:冰淇淋销量和溺水事故在夏天都会增加,是因为天气热,而不是因为它们互相影响。
评价你的结论
样本够大、够公平吗?错误清洗干净了吗?同样的数据换一种分析方法,会得到不同的答案吗?要诚实地说出结论的局限。对于大数据(几百万行,比如城市空气污染传感器的数据),计算机做同样的步骤更快,但同样需要细心。
重点公式和概念
- 平均数 = 所有数之和 ÷ 数的个数
- 中位数 = 排序后数据正中间的数(个数为偶数时:取中间两个数的平均数)
- 众数 = 出现次数最多的数
- 极差 = 最大值 − 最小值
- 相关 ≠ 因果
例题讲解
1. 清洗这组睡眠数据:7, 8, 8(同一名学生出现两次), 25, 空白, 6。
删掉重复的8、不可能的25和空白。清洗后的数据:7, 8, 6。
2. 求 6, 7, 7, 8, 8, 8, 9, 10 的平均数和中位数。
和 = 63,个数 = 8,平均数 = 63 ÷ 8 = 7.875 ≈ 7.9。中间两个数是8和8,所以中位数 = 8。
3. 在上面的数据里加入异常值24。平均数和中位数会怎样变化?
新的和 = 87,个数 = 9,平均数 = 87 ÷ 9 ≈ 9.67(大幅上升)。排序后第5个数是8,所以中位数 = 8(没有变化)。中位数不受异常值影响。
常见错误
- 跳过清洗。一个不可能的值就能毁掉平均数。
- 求中位数之前忘记先排序。
- 只因为两件事相关,就说其中一件导致了另一件。
- 用饼图表示加起来不是一个整体的数据,或者用折线图表示类别。