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

如何用Pandas按测量温度与差值区间分组统计数据次数?

Pandas 区间组合频次统计实现方案

问题描述

现有如下Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
    'date&time': ['2022-01-28', '2022-01-29', '2022-01-30', '2022-01-31'],
    'measur_temp': [27, 27, 30, 33],
    'cal_temp': [20, 23, 33, 32],
    'diff': [7, 4, 3, 1]
})

需要将measur_temp划分为10-20、21-30、31-40、41-50区间,同时将diff划分为diff<5、5<=diff<10、10<=diff<15、15<=diff<=20区间,统计数据落入对应区间组合的次数,最终输出符合指定格式的表格。

实现步骤

1. 定义区间边界与标签

明确两个字段的区间规则:

  • measur_temp:边界[10,21,31,41,51],对应标签['10-20','21-30','31-40','41-50']
  • diff:边界[-float('inf'),5,10,15,20],对应标签['diff<5','5<=diff<10','10<=diff<15','15<=diff<=20']

2. 对原数据分箱处理

使用pd.cut()将字段映射到对应区间标签:

# 处理measur_temp区间
temp_bins = [10,21,31,41,51]
temp_labels = ['10-20','21-30','31-40','41-50']
df['measur_Temp_range'] = pd.cut(df['measur_temp'], bins=temp_bins, labels=temp_labels, include_lowest=True)

# 处理diff区间
diff_bins = [-float('inf'),5,10,15,20]
diff_labels = ['diff<5','5<=diff<10','10<=diff<15','15<=diff<=20']
df['diff_range'] = pd.cut(df['diff'], bins=diff_bins, labels=diff_labels, include_lowest=True)

3. 交叉表统计频次

用pd.crosstab()生成区间组合的频次统计,同时确保所有指定温度区间都显示:

# 生成交叉表
cross_table = pd.crosstab(df['measur_Temp_range'], df['diff_range'])

# 重置索引并补全缺失的温度区间
cross_table = cross_table.reindex(temp_labels).reset_index()

# 填充无数据的区间为0.0
cross_table = cross_table.fillna(0.0)

4. 查看最终结果

执行代码后,cross_table即为所需表格:

print(cross_table)

输出结果:

measur_Temp_range  diff<5  5<=diff<10  10<=diff<15  15<=diff<=20
0          10-20       0.0         0.0          0.0           0.0
1          21-30       1.0         1.0          0.0           0.0
2          31-40       2.0         0.0          0.0           0.0
3          41-50       0.0         0.0          0.0           0.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:17:24