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

如何用scipy.stats.binned_statistic实现深度区间温度均值统计?

解决按深度区间计算温度均值的问题

你当前的代码存在两个关键问题:

  1. 参数顺序颠倒:scipy.stats.binned_statistic的第一个参数是用于分组的变量(你需要的是深度/压力),第二个参数是要计算统计量的变量(温度),你刚好写反了。
  2. bins参数设置错误:传入bins=1636会把数据拆成1636个等宽区间,完全不符合你要的0-10、10-20这类以10为间隔的分组逻辑。

正确实现步骤

假设你的CSV数据中,深度列名为pressure,温度列名为temperature,按以下方式修改代码即可实现需求:

  1. 自定义深度区间:根据数据中深度的最大值,生成以10为步长的区间边界,确保覆盖所有深度数据。
  2. 调用统计函数:传入正确的参数顺序,指定统计量为均值。
  3. 整理结果格式:计算每个区间的中点(如0-10的中点为5),将结果整理为你需要的表格样式。

完整代码示例

import pandas as pd
from scipy.stats import binned_statistic

# 读取CSV数据(假设你已完成此步骤)
data = pd.read_csv('your_data.csv')

# 1. 生成以10为间隔的深度区间
max_depth = data['pressure'].max()
bins = range(0, int(max_depth) + 11, 10)  # 生成0,10,20,...,覆盖最大深度的区间边界

# 2. 计算每个深度区间的温度均值
binned_stats = binned_statistic(
    data['pressure'],       # 分组依据:深度
    data['temperature'],    # 计算均值的变量:温度
    statistic='mean',
    bins=bins
)

# 3. 整理为目标表格格式
bin_midpoints = [(bins[i] + bins[i+1])/2 for i in range(len(bins)-1)]
result_df = pd.DataFrame({
    'depth': bin_midpoints,
    'temperature': binned_stats.statistic
})

# 输出结果
print(result_df.to_markdown(index=False))

补充说明

  • 如果你的深度列不是pressure,替换为实际列名即可。
  • 生成的区间会自动覆盖所有深度数据,确保每个数据点都能分到对应区间。
  • 最终输出的result_df完全匹配你期望的表格格式,depth列是区间中点,temperature列是对应区间的温度均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:10:08