一、频数分布表的概念
频数分布表(Frequency Distribution Table)是统计学中用于整理原始数据的工具,它将数据集划分为若干互斥的类别(组),并统计每个类别中数据出现的次数。主要包含以下核心概念:
-
频数(Frequency)
某一类别中数据出现的次数,反映数据的分布密度。
-
组距(Class Width)
每个数据区间的宽度,计算公式:
组距=最大值−最小值组数 \text{组距} = \frac{\text{最大值} - \text{最小值}}{\text{组数}} 组距=组数最大值−最小值 -
组限(Class Limits)
每个区间的边界值,分为下限(最小值)和上限(最大值)。
-
组中值(Class Midpoint)
区间的中心值,计算公式:
组中值=下限+上限2 \text{组中值} = \frac{\text{下限} + \text{上限}}{2} 组中值=2下限+上限 -
累积频数(Cumulative Frequency)
从最小区间开始,逐组累加的频数总和。
二、频数分布表的构建流程
-
数据准备
收集原始数据并排序。
-
确定组数
根据数据量选择适当组数(常用 Sturges 公式):
k=1+3.322log10(n)(n 为数据量) k = 1 + 3.322 \log_{10}(n) \quad (\text{\(n\) 为数据量}) k=1+3.322log10(n)(n 为数据量) -
计算组距
组距=最大值−最小值组数 \text{组距} = \frac{\text{最大值} - \text{最小值}}{\text{组数}} 组距=组数最大值−最小值结果通常向上取整。
-
定义分组区间
确保区间连续且互斥(如左闭右开)。
-
统计频数
遍历数据,统计落入每个区间的数量。
-
计算累积频数
从上到下或从下到上累加频数。
三、实例演示:用 Python 构建频数分布表
数据集
某班级30名学生的数学成绩:
[62, 75, 58, 89, 73, 92, 65, 68, 72, 85, 78, 81, 64, 70, 76, 88, 90, 63, 77, 69, 82, 95, 71, 84, 79, 60, 74, 67, 80, 86]
Python 构建步骤
python
import numpy as np
import pandas as pd
# 1. 准备数据
data = np.array([62, 75, 58, 89, 73, 92, 65, 68, 72, 85,
78, 81, 64, 70, 76, 88, 90, 63, 77, 69,
82, 95, 71, 84, 79, 60, 74, 67, 80, 86])
# 2. 计算基本参数
min_val = np.min(data) # 最小值 = 58
max_val = np.max(data) # 最大值 = 95
n = len(data) # 数据量 = 30
# 3. 确定组数(Sturges公式)
k = int(1 + 3.322 * np.log10(n)) # 组数 ≈ 6
# 4. 计算组距(向上取整)
class_width = int(np.ceil((max_val - min_val) / k)) # 组距 = (95-58)/6 ≈ 6.16 → 取7
# 5. 定义分组区间(左闭右开)
bins = [58 + i * class_width for i in range(k + 1)] # [58, 65, 72, 79, 86, 93, 100]
# 6. 统计频数
freq, intervals = np.histogram(data, bins=bins)
# 7. 创建频数分布表
df = pd.DataFrame({
"分组区间": [f"[{intervals[i]}, {intervals[i+1]})" for i in range(k)],
"频数": freq,
"频率(%)": np.round(freq / n * 100, 2),
"累积频数": np.cumsum(freq)
})
print("频数分布表:")
print(df)
输出结果:
分组区间 频数 频率(%) 累积频数
0 [58, 65) 4 13.33 4
1 [65, 72) 7 23.33 11
2 [72, 79) 8 26.67 19
3 [79, 86) 6 20.00 25
4 [86, 93) 4 13.33 29
5 [93, 100) 1 3.33 30
四、结果分析
-
分布特征
成绩主要集中在 72-79 分区间(频数=8),93分以上仅1人。
-
累积分布
79分以下的学生累计占比 63.33%(累积频数19/30)。
-
应用场景
- 快速识别数据集中趋势和异常值
- 为直方图提供数据基础
- 简化大规模数据集的分析
关键提示:组距的选择需平衡细节与概括性。组距过小导致琐碎,过大则掩盖特征。通常需多次调整优化。
通过频数分布表,原始数据被转化为结构化信息,为后续的统计推断和可视化分析奠定基础。