You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python生成含CI、CB、频数的统计学课程频数分布表

Python实现统计学频数分布表完整方案

实现效果

可直接输出符合课程要求的包含组区间(CI)、组中值(CB)、频数、累积频数的完整频数分布表,无需手动使用Excel统计。

完整代码

import math
import pandas as pd

# 原始数据,可根据作业需求替换
num = [2, 2.8, 4, 2.1, 1.8, 0.8, 1.6, 1.5, 2, 0.4, 2, 1.1, 1, 1, 0.5, 1.5, 3, 2, 1.5, 3.2, 1.2, 3, 1.2, 1.6, 2.5]
num.sort()

# 基础统计参数计算
n = len(num)
min_val = min(num)
max_val = max(num)
R = max_val - min_val
k = math.floor(math.sqrt(n)) # 组数取样本量开方向下取整,可手动修改为作业要求值
w = round(R / k + 0.1, 1) # 组距计算,保留1位小数适配当前数据精度,可手动调整

print("基础统计参数:")
print(f"样本量n = {n}")
print(f"全距R = {R}")
print(f"组数k = {k}")
print(f"组距w = {w}\n")

# 构建频数分布表
result = []
current_lower = min_val
cum_freq = 0

for _ in range(k):
    current_upper = round(current_lower + w, 1)
    # 最后一组调整上限确保包含最大值
    if _ == k - 1:
        current_upper = max(current_upper, max_val)
    # 统计当前区间的频数,默认左闭右开,最后一组闭合上限避免最大值漏统计
    if _ != k - 1:
        freq = sum(1 for x in num if current_lower <= x < current_upper)
    else:
        freq = sum(1 for x in num if current_lower <= x <= current_upper)
    cum_freq += freq
    # 组中值CB计算
    cb = round((current_lower + current_upper) / 2, 2)
    # CI格式化
    ci = f"{current_lower} - {current_upper}"
    result.append([ci, cb, freq, cum_freq])
    current_lower = current_upper

# 转换为DataFrame打印,输出格式整齐可直接复制到作业
fdt = pd.DataFrame(result, columns=["CI(组区间)", "CB(组中值)", "频数", "累积频数"])
print(fdt.to_string(index=False))

运行结果示例

基础统计参数:
样本量n = 25
全距R = 3.6
组数k = 5
组距w = 0.8

CI(组区间)  CB(组中值)  频数  累积频数
0.4 - 1.2       0.8    6       6
1.2 - 2.0       1.6    8      14
2.0 - 2.8       2.4    6      20
2.8 - 3.6       3.2    4      24
3.6 - 4.0       3.8    1      25

核心逻辑说明

  • 组数、组距计算沿用统计课程通用规则,也可根据作业要求手动修改k、w参数适配不同规则
  • 输出格式可直接复制到作业文档中使用,也可根据需要增删累积频数、频率等字段

内容的提问来源于stack exchange,提问作者H2WO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:57:03