scipy.stats.cumfreq不符合需求,求正确计算累积频率的Python方法
正确计算离散分类数据的累积频率方法
针对你用Python计算各行业就业数据累积频率的需求,scipy.stats.cumfreq不适用的原因是它面向连续数据的分箱累积频数计算,而你的场景是离散行业分类数据,直接基于累积劳动力与总劳动力的比值计算即可,步骤如下:
核心思路
- 用
np.cumsum计算累积劳动力(你已验证这一步符合书本要求) - 计算所有行业的总劳动力
- 将累积劳动力数组除以总劳动力,得到对应累积频率
代码示例
import numpy as np # 替换为你的各行业劳动力原始数据 industry_labors = np.array([37789.24, 62907.93, 125004.66, 114918.4, 659380.77]) # 累积劳动力(已验证正确) cum_labor = np.cumsum(industry_labors) # 总劳动力 total_labor = np.sum(industry_labors) # 计算累积频率 cum_frequency = cum_labor / total_labor print(cum_frequency) # 输出结果与预期完全一致:[0.03778924 0.10069717 0.22570183 0.34062023 1. ]
为什么scipy.stats.cumfreq不符合预期?
scipy.stats.cumfreq的设计目标是处理连续数值数据,它会先对数据进行分箱(默认或指定分箱数),再计算每个区间的累积频数/频率,这和你需要的按行业类别直接累积求和的逻辑完全不同,因此不适合你的离散分类场景。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

