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

如何统计DataFrame中0至各指定上限区间内的数据点数量?

解决方案

因为你需要统计的是每个以上限为终点、0为固定起点的区间内的累计数据量,而pd.cut是将数据分配到互斥的区间中,每个数据点仅归属一个区间,所以确实不适合这个场景。直接针对每个目标上限统计col2 <= 上限的数量是更直接的方案:

步骤与代码实现

  1. 导入依赖库并创建原始DataFrame:
import pandas as pd
import numpy as np

data = [['A', 0.20], ['B',0.25], ['C',0.11], ['D',0.30], ['E',0.29]]
df = pd.DataFrame(data, columns=['col1', 'col2'])
  1. 生成所有目标上限值(从0.30到0.01,步长0.01),同时处理浮点数精度问题:
# 生成倒序的上限序列,并用round修正浮点数精度
upper_bounds = np.round(np.arange(0.01, 0.31, 0.01)[::-1], 2)
  1. 统计每个区间[0, upper]内的数据点数量,整理为结果DataFrame:
# 遍历每个上限,计算符合条件的行数
counts = [df['col2'].le(upper).sum() for upper in upper_bounds]

# 构建结果表
result_df = pd.DataFrame({
    '区间': [f'0-{upper}' for upper in upper_bounds],
    '数据点数量': counts
})

# 查看结果
print(result_df.head())

运行后,前几行结果如下:

区间  数据点数量
0  0-0.3       5
1  0-0.29      4
2  0-0.28      3
3  0-0.27      3
4  0-0.26      3

补充说明

  • 用df['col2'].le(upper).sum()替代len(df[df['col2'] <= upper]),是更高效的pandas风格写法。
  • 浮点数精度修正:直接使用np.arange可能会出现类似0.29999999999999993的异常值,np.round(..., 2)可以确保上限值显示为正确的两位小数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:20:34