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

Python如何绘制仅展示累积频率≤40%数据的条件累积频率直方图

Python实现筛选累积频率≤40%数据绘制直方图

核心逻辑

要过滤掉尾部无价值的大数值,必须先对原始数据做升序排序,再逐行计算累积值占总数值和的比例,最后筛选出累积比例不超过40%的子集用于绘图,避免未排序状态下累积占比计算错乱导致的筛选错误。

完整实现代码

import pandas as pd
import matplotlib.pyplot as plt

# 替换为你自己的原始数据集即可
raw_data = pd.Series([1738, 2200, 1338, 1222, 939, 898])

# 升序排序,保证小值在前、大值在后,尾部为待丢弃的大值
sorted_data = raw_data.sort_values(ascending=True).reset_index(drop=True)

# 计算逐行累积频率
cumulative_percent = 100 * sorted_data.cumsum() / sorted_data.sum()

# 筛选累积频率≤40%的子集
filtered_data = sorted_data[cumulative_percent <= 40]

# 绘制直方图
plt.hist(filtered_data, bins='auto', edgecolor='black')
plt.xlabel('数值')
plt.ylabel('频数')
plt.title('累积占比≤40%数据分布直方图')
plt.show()

注意事项

  • 你之前的计算逻辑没有对原始数据排序,得到的累积占比不随数值大小递进,截断后会错误混入大值、漏掉小值,无法达到过滤尾部大值提升可读性的目的。
  • 如果需要对截断边界做平滑处理,可以根据需求调整阈值,或者对刚超过40%的边界值做插值保留,常规分析场景直接布尔筛选即可满足需求。
  • 用你给出的子样本测试,排序后数据为[898, 939, 1222, 1338, 1738, 2200],最终筛选得到的子集为前3个小值,对应的累积占比约为37%,符合截断要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:57:29