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

如何用Python循环计算重复ID对应的数值平均值

解决重复ID的数值平均值计算问题

你的原代码存在几个明显问题:

  • 循环里的ID[i+1]会在最后一条记录时触发索引越界错误,因为最后一个元素没有下一个元素
  • 嵌套循环逻辑完全没处理数值的累加和计数,只是在找重复位置,根本没法计算平均值
  • 嵌套循环时间复杂度是O(n²),60万条数据跑起来会慢到离谱

直接给你两种高效的解决方案:

方案一:纯Python字典统计(无需第三方库)

用字典存储每个ID的数值总和和出现次数,只需要遍历一次数据,时间复杂度O(n),处理60万条数据毫无压力:

# 假设ID和Value是两个对应列表,比如:
# ID = ['a','a','b','b','b','c']
# Value = [1,3,3,4,5,1]

id_stats = {}

# 遍历所有记录,累加总和与计数
for id_, val in zip(ID, Value):
    if id_ in id_stats:
        id_stats[id_][0] += val
        id_stats[id_][1] += 1
    else:
        # 首次遇到该ID,初始化总和为当前值,计数为1
        id_stats[id_] = [val, 1]

# 计算并输出每个ID的平均值
for id_, (total, count) in id_stats.items():
    average = total / count
    print(f"Average {id_} = {average}")

方案二:用Pandas处理(大数据首选)

Pandas专门针对这类分组统计做了极致优化,代码更简洁,处理60万条数据的速度比手动循环快几个量级:

import pandas as pd

# 把数据放进DataFrame,也可以直接从CSV/Excel读取:df = pd.read_csv('你的数据文件.csv')
df = pd.DataFrame({
    'ID': ['a','a','b','b','b','c'],
    'Value': [1,3,3,4,5,1]
})

# 按ID分组,直接计算平均值
average_result = df.groupby('ID')['Value'].mean()

# 输出结果
for id_, avg in average_result.items():
    print(f"Average {id_} = {avg}")

两种方案都能得到你要的结果:
Average a = 2,Average b = 4,Average c = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:18:34