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

如何使用Python的NumPy按年份对数据进行求和聚合

用NumPy按年份聚合求和的办法

先看原始数据:

2012 $20,000
2012 $20,000
2013 $10,000
2014 $10,000
2014 $10,000

要实现按年份聚合求和得到[40000, 10000, 20000],分两步操作:

第一步:预处理数据

原始数据是字符串格式,得先拆成年份和金额字段,再把金额里的$和逗号去掉转成整数,最后转换成NumPy能处理的数组格式。

第二步:按年份分组求和

用NumPy的unique函数提取不重复的年份,再针对每个年份筛选对应金额并求和即可。

具体代码实现(两种方式可选)

方式一:用bincount高效求和(适合大数据量)

import numpy as np

# 模拟原始数据,实际可从文件读取
raw_data = [
    "2012 $20,000",
    "2012 $20,000",
    "2013 $10,000",
    "2014 $10,000",
    "2014 $10,000"
]

# 拆分并清洗数据
years = []
amounts = []
for line in raw_data:
    year, amt = line.split()
    years.append(int(year))
    # 去掉$和逗号,转成整数
    clean_amt = int(amt.replace("$", "").replace(",", ""))
    amounts.append(clean_amt)

# 转成NumPy数组
years_np = np.array(years)
amounts_np = np.array(amounts)

# 获取唯一年份及对应的分组索引
unique_years, group_indices = np.unique(years_np, return_inverse=True)

# 按分组求和
summed = np.bincount(group_indices, weights=amounts_np)

print(summed)  # 输出:[40000 10000 20000]

方式二:遍历唯一年份求和(逻辑更直观)

import numpy as np

# 同样的预处理步骤
raw_data = [
    "2012 $20,000",
    "2012 $20,000",
    "2013 $10,000",
    "2014 $10,000",
    "2014 $10,000"
]

years = []
amounts = []
for line in raw_data:
    year, amt = line.split()
    years.append(int(year))
    clean_amt = int(amt.replace("$", "").replace(",", ""))
    amounts.append(clean_amt)

years_np = np.array(years)
amounts_np = np.array(amounts)

# 提取不重复的年份
unique_years = np.unique(years_np)
summed = []

# 遍历每个年份,筛选对应金额求和
for year in unique_years:
    total = amounts_np[years_np == year].sum()
    summed.append(total)

summed = np.array(summed)
print(summed)  # 输出:[40000 10000 20000]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:45:29