数据分析中的均值、中央値与众数
Published in:2020-08-14 | Category: Data Analysis
Words: 1.2k | Reading time: 4min

在数据分析中,我们常常会用到均值Mean)、中央値Median)和众数Mode)这三个基本的统计量。这些统计量能够帮助我们更好地理解数据集的分布情况,发现数据中的趋势以及进行数据清洗和处理。

均值(Mean)

均值是最常见的集中趋势指标,通常被称为“平均数”。它是所有数据点加总之后除以数据点的个数。计算公式如下:

直白一点就是:

均值 = (数据值1 + 数据值2 +… + 数据值n) / n

值得注意的是:

均值对异常值(即极端值)非常敏感。如果数据集中存在非常大的或非常小的值(如噪声数据),均值可能无法准确反映数据的真实分布。

中央値(Median)

中央値是指将数据从小到大排列后,处于中间位置的数据值。如果数据集中的数据点个数是奇数,中央値就是中间那个数;如果数据集的个数是偶数,中央値是中间两个数的平均值。

  • 如果数据点个数是奇数,取中间的值。
  • 如果数据点个数是偶数,取中间两个值的平均值。

优点:中央値对异常值不敏感。如果数据集包含一些极端值,中央値能更好地反映数据的中心位置。
局限:相比于均值,中央値缺少直观性,且对数据的具体数值关系不敏感。

众数(Mode)

众数是数据集中出现频率最高的数值。如果一个数据集中有多个值的频率相同且是最大频率,那么该数据集有多个众数(称为多众数)。

  • 统计每个数据点出现的频率,找到出现频率最高的值。
  • 如果有多个频率相同的数值,都可以被视为多众数。

优点:众数适用于名义尺度的数据(例如类别数据),可以反映出数据中最常见的类别。
局限:有些数据集可能没有众数,或者众数不唯一。

Python代码举例

下面我们用Python代码来演示如何计算均值、中央値和众数。

数据准备

假设我们有一个包含学生成绩的简单数据集,如下:

1
2
3
4
5
6
import numpy as np
import pandas as pd
from scipy import stats

# 数据集:一组学生的成绩
data = [80, 85, 90, 92, 85, 88, 75, 78, 92, 95, 100, 85, 92, 88, 85]

计算均值(Mean)

我们可以使用Python的NumPy库来计算均值, NumPy是一个用于科学计算的基础库,提供了大量的数学函数矩阵运算

1
2
mean_value = np.mean(data)
print(f"均值 (Mean): {mean_value}")

输出:

1
均值 (Mean): 87.33333333333333

计算中央値(Median)

Python中的NumPy也提供了计算中央値的功能:

1
2
median_value = np.median(data)
print(f"中央値 (Median): {median_value}")

输出:

1
中央値 (Median): 85.0

计算众数(Mode)

计算众数可以使用SciPy库中的stats.mode函数, SciPy库是一个基于Python的科学计算包,包含了许多数学统计优化线性代数等函数。

1
2
mode_value = stats.mode(data)
print(f"众数 (Mode): {mode_value.mode[0]}, 出现次数: {mode_value.count[0]}")

输出:

1
众数 (Mode): 85, 出现次数: 4

在这个例子中,众数是85,它在数据集中出现了4次。

综合代码示例

结合以上代码,我们可以写一个综合示例,计算一个数据集的均值、中央値和众数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np
import pandas as pd
from scipy import stats

# 数据集:一组学生的成绩
data = [80, 85, 90, 92, 85, 88, 75, 78, 92, 95, 100, 85, 92, 88, 85]

# 计算均值
mean_value = np.mean(data)

# 计算中央値
median_value = np.median(data)

# 计算众数
mode_value = stats.mode(data)

# 输出结果
print(f"均值 (Mean): {mean_value}")
print(f"中央値 (Median): {median_value}")
print(f"众数 (Mode): {mode_value.mode[0]}, 出现次数: {mode_value.count[0]}")

输出:

1
2
3
均值 (Mean): 87.33333333333333
中央値 (Median): 85.0
众数 (Mode): 85, 出现次数: 4

总结

在数据分析中,均值、中央値和众数是最常用的三种集中趋势的统计量。它们各自有不同的特点和适用场景:

均值:适用于数据分布较为均匀的情况,但对异常值敏感。
中央値:适用于数据有极端值或异常值的情况,能较好地反映数据的中心位置。
众数:适用于分类数据或描述数据中最常见的值。

通过Python的NumPySciPy库,我们可以轻松地计算这些统计量,为数据分析提供有力的支持。在实际应用中,根据数据的性质选择合适的统计量非常重要。

Prev:
聊聊人工智能、机器学习与深度学习
Next:
详解数据分析中的方差,标准差和异常值的使用