在数据分析中,我们常常会用到均值(Mean
)、中央値(Median
)和众数(Mode
)这三个基本的统计量。这些统计量能够帮助我们更好地理解数据集的分布情况,发现数据中的趋势以及进行数据清洗和处理。
均值(Mean)
均值是最常见的集中趋势指标,通常被称为“平均数
”。它是所有数据点加总之后除以数据点的个数。计算公式如下:
直白一点就是:
均值 = (数据值1 + 数据值2 +… + 数据值n) / n
值得注意的是:
均值对异常值(即极端值)非常敏感。如果数据集中存在非常大的或非常小的值(如噪声数据),均值可能无法准确反映数据的真实分布。
中央値(Median)
中央値是指将数据从小到大排列后,处于中间位置的数据值。如果数据集中的数据点个数是奇数,中央値就是中间那个数;如果数据集的个数是偶数,中央値是中间两个数的平均值。
- 如果数据点个数是奇数,取中间的值。
- 如果数据点个数是偶数,取中间两个值的平均值。
优点:中央値对异常值不敏感。如果数据集包含一些极端值,中央値能更好地反映数据的中心位置。
局限:相比于均值,中央値缺少直观性,且对数据的具体数值关系不敏感。
众数(Mode)
众数是数据集中出现频率最高的数值。如果一个数据集中有多个值的频率相同且是最大频率,那么该数据集有多个众数(称为多众数)。
- 统计每个数据点出现的频率,找到出现频率最高的值。
- 如果有多个频率相同的数值,都可以被视为多众数。
优点:众数适用于名义尺度的数据(例如类别数据),可以反映出数据中最常见的类别。
局限:有些数据集可能没有众数,或者众数不唯一。
Python代码举例
下面我们用Python代码来演示如何计算均值、中央値和众数。
数据准备
假设我们有一个包含学生成绩的简单数据集,如下:
1 | import numpy as np |
计算均值(Mean)
我们可以使用Python的NumPy
库来计算均值, NumPy
是一个用于科学计算的基础库,提供了大量的数学函数
和矩阵运算
。
1 | mean_value = np.mean(data) |
输出:
1 | 均值 (Mean): 87.33333333333333 |
计算中央値(Median)
Python中的NumPy
也提供了计算中央値的功能:
1 | median_value = np.median(data) |
输出:
1 | 中央値 (Median): 85.0 |
计算众数(Mode)
计算众数可以使用SciPy
库中的stats.mode函数, SciPy
库是一个基于Python的科学计算包,包含了许多数学
、统计
、优化
、线性代数
等函数。
1 | mode_value = stats.mode(data) |
输出:
1 | 众数 (Mode): 85, 出现次数: 4 |
在这个例子中,众数是85,它在数据集中出现了4次。
综合代码示例
结合以上代码,我们可以写一个综合示例,计算一个数据集的均值、中央値和众数:
1 | import numpy as np |
输出:
1 | 均值 (Mean): 87.33333333333333 |
总结
在数据分析中,均值、中央値和众数是最常用的三种集中趋势的统计量。它们各自有不同的特点和适用场景:
均值:适用于数据分布较为均匀的情况,但对异常值敏感。
中央値:适用于数据有极端值或异常值的情况,能较好地反映数据的中心位置。
众数:适用于分类数据或描述数据中最常见的值。
通过Python的NumPy
和SciPy
库,我们可以轻松地计算这些统计量,为数据分析提供有力的支持。在实际应用中,根据数据的性质选择合适的统计量非常重要。