Python 数据分析入门:理解集中趋势与离散程度
在做数据分析时,我们常遇到这样的问题:一组数据的'平均水平'到底是多少?为什么两组数据均值差不多,但实际情况完全不同?如何判断数据是否稳定?
这些问题,本质上都离不开两个统计学基础概念:集中趋势和离散程度。本文用一个简单的案例——班级成绩分析,带你从 0 到 1 学会这些统计指标,并用 Pandas 完成实战。
一、先看一个问题:平均分差不多,班级情况就一样吗?
假设现在有两个班级的数学成绩:
A 班成绩 = [85, 82, 88, 84, 86, 83, 87, 85, 84, 86]
B 班成绩 = [100, 60, 90, 70, 95, 65, 85, 85, 85, 85]
很多人拿到数据后,第一反应就是先看平均分。但问题是:平均分差不多,就说明两个班水平一样吗?哪个班更稳定?
答案显然不是。A 班成绩比较集中,整体比较稳定;B 班虽然也有高分,但高低差距很大。
这说明:分析数据时,不能只看平均值,还要看数据的分散程度。
二、什么是集中趋势?
集中趋势,就是描述一组数据'中心位置'的指标。你可以简单理解为:这组数据大多数值,整体上靠近哪里?
常见的集中趋势指标有:均值(Mean)、中位数(Median)、众数(Mode)、中列数(Midrange)。
1. 均值(Mean)
均值就是我们平时说的'平均数'。
计算公式: 所有数据之和 / 数据个数
Pandas 写法: df['A 班'].mean()
特点: 最常用,最直观,但对异常值敏感。如果一组数据里存在特别大或特别小的值,均值很容易被拉偏。
2. 中位数(Median)
中位数就是把数据排序后,位于中间位置的值。
Pandas 写法: df['A 班'].median()
特点: 不容易被极端值拉偏。在有异常值时,通常比均值更可靠。如果你分析的数据可能存在异常值,比如成绩异常、消费异常等,中位数往往比均值更能反映真实水平。
3. 众数(Mode)
众数就是一组数据中出现次数最多的值。
Pandas 写法: df['A 班'].mode()
特点: 适合看'最常见的水平',可能有多个众数。如果每个值都只出现一次,就可能没有众数。
4. 中列数(Midrange)
中列数是最大值和最小值的平均值。
计算公式: (最大值 + 最小值) / 2
特点: 计算简单,但受极端值影响较大,一般了解即可,实际分析中不如均值和中位数常用。
三、什么是离散程度?
如果说集中趋势解决的是'这组数据大概在什么水平?',那么离散程度解决的就是'这组数据差距大不大?稳定不稳定?'
常见指标有:极差(Range)、四分位数(Quartiles)、四分位数极差(IQR)、方差(Variance)、标准差(Standard Deviation)。
1. 极差(Range)
极差是最大值减去最小值。
计算公式: max - min
Pandas 写法: df['A 班'].max() - df['A 班'].min()
特点: 计算最简单,但只看最值,容易受极端值影响。如果一组数据里有异常值,极差可能会被放大。

