频数分布表:数据分析的基础工具

一、频数分布表的概念

频数分布表(Frequency Distribution Table)是统计学中用于整理原始数据的工具,它将数据集划分为若干互斥的类别(组),并统计每个类别中数据出现的次数。主要包含以下核心概念:

  1. 频数(Frequency)

    某一类别中数据出现的次数,反映数据的分布密度。

  2. 组距(Class Width)

    每个数据区间的宽度,计算公式:
    组距=最大值−最小值组数 \text{组距} = \frac{\text{最大值} - \text{最小值}}{\text{组数}} 组距=组数最大值−最小值

  3. 组限(Class Limits)

    每个区间的边界值,分为下限(最小值)和上限(最大值)。

  4. 组中值(Class Midpoint)

    区间的中心值,计算公式:
    组中值=下限+上限2 \text{组中值} = \frac{\text{下限} + \text{上限}}{2} 组中值=2下限+上限

  5. 累积频数(Cumulative Frequency)

    从最小区间开始,逐组累加的频数总和。


二、频数分布表的构建流程
  1. 数据准备

    收集原始数据并排序。

  2. 确定组数

    根据数据量选择适当组数(常用 Sturges 公式):
    k=1+3.322log⁡10(n)(n 为数据量) k = 1 + 3.322 \log_{10}(n) \quad (\text{\(n\) 为数据量}) k=1+3.322log10(n)(n 为数据量)

  3. 计算组距
    组距=最大值−最小值组数 \text{组距} = \frac{\text{最大值} - \text{最小值}}{\text{组数}} 组距=组数最大值−最小值

    结果通常向上取整。

  4. 定义分组区间

    确保区间连续且互斥(如左闭右开)。

  5. 统计频数

    遍历数据,统计落入每个区间的数量。

  6. 计算累积频数

    从上到下或从下到上累加频数。

三、实例演示:用 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
四、结果分析
  1. 分布特征

    成绩主要集中在 72-79 分区间(频数=8),93分以上仅1人。

  2. 累积分布

    79分以下的学生累计占比 63.33%(累积频数19/30)。

  3. 应用场景

    • 快速识别数据集中趋势和异常值
    • 为直方图提供数据基础
    • 简化大规模数据集的分析

关键提示:组距的选择需平衡细节与概括性。组距过小导致琐碎,过大则掩盖特征。通常需多次调整优化。

通过频数分布表,原始数据被转化为结构化信息,为后续的统计推断和可视化分析奠定基础。

相关推荐
databook1 小时前
数据分析师的“水晶球”:时间序列分析
python·数据挖掘·数据分析
玄同7656 小时前
Python 流程控制:LLM 批量推理与 API 限流处理
服务器·人工智能·python·深度学习·自然语言处理·数据挖掘·知识图谱
计算机程序设计小李同学10 小时前
基于贝叶斯分类算法的垃圾邮件筛选器开发
人工智能·分类·数据挖掘
ClkLog-开源埋点用户分析1 天前
【埋点分析系统】初次选型的实用指南(附开源解决方案)
数据分析·开源·开源软件·用户画像·埋点分析
天呐草莓1 天前
集成学习 (ensemble learning)
人工智能·python·深度学习·算法·机器学习·数据挖掘·集成学习
电商API_180079052471 天前
淘宝商品视频提取API全解析:从授权到落地实战
爬虫·python·信息可视化·数据分析·音视频
没有梦想的咸鱼185-1037-16631 天前
面向自然科学的人工智能建模方法【涵盖机器学习与深度学习的核心方法(如随机森林、XGBoost、CNN、LSTM、Transformer等)】
人工智能·深度学习·随机森林·机器学习·数据分析·卷积神经网络·transformer
十三画者1 天前
【文献分享】PepQueryMHC:基于免疫肽组学数据实现肿瘤抗原的快速全面筛选
数据挖掘·数据分析
DX_水位流量监测1 天前
地埋式积水监测仪:城市防涝的智能感知核心
大数据·网络·人工智能·数据分析·自动化
TM1Club1 天前
Zoey的TM1聊天室|#3 合并报表提速:业财一体如何实现关联方对账自动化
大数据·开发语言·人工智能·经验分享·数据分析·自动化·数据库系统