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

求助:使用Python Numpy计算currency.csv中汇率的多维度统计指标

用Numpy处理汇率CSV的计算指南

Hey there! 作为Python新手,用numpy处理CSV数据确实需要一步步来,我会帮你拆解每个任务,代码里加详细注释,你跟着走就行~

首先咱们先明确前提:假设你的currency.csv结构是第一列是日期(格式如"2019-01-05"),后续每列是对应货币的汇率,第一行是表头(比如货币名称USD、EUR、GBP等)。如果你的CSV结构略有不同,后面可以根据实际情况调整代码。

第一步:导入库并加载数据

首先咱们需要导入numpy,然后加载CSV文件。numpy的genfromtxt方法很适合处理带表头的CSV:

import numpy as np

# 加载CSV文件,skip_header=1跳过表头,delimiter是分隔符(一般CSV是逗号)
# 我们把日期列单独拿出来,汇率数据存在另一个数组里
data = np.genfromtxt('currency.csv', delimiter=',', dtype=None, encoding='utf-8', skip_header=1)
dates = data[:, 0]  # 第一列是日期
exchange_rates = data[:, 1:].astype(float)  # 从第二列开始是汇率,转成浮点型

# 读取表头(货币名称)
with open('currency.csv', 'r', encoding='utf-8') as f:
    headers = f.readline().strip().split(',')[1:]  # 跳过日期列的表头

任务1:每种货币过去5年的平均汇率

这个很简单,直接对每种货币的所有汇率求均值:

# axis=0表示按列计算(每列对应一种货币)
avg_5years = np.mean(exchange_rates, axis=0)

# 打印结果
for currency, avg in zip(headers, avg_5years):
    print(f"{currency}过去5年的平均汇率:{avg:.4f}")

任务2:每种货币每年的平均汇率

这里需要先把日期转换成年份,然后按年份分组计算均值。咱们可以先从日期字符串里提取年份:

# 从日期字符串提取年份,比如"2019-01-05"提取出2019
years = np.array([int(date.split('-')[0]) for date in dates])
unique_years = np.unique(years)  # 获取所有不重复的年份

# 遍历每个年份,计算该年份每种货币的平均汇率
for year in unique_years:
    # 找到该年份对应的所有行的索引
    year_mask = (years == year)
    # 计算该年份的平均汇率
    yearly_avg = np.mean(exchange_rates[year_mask], axis=0)
    print(f"\n{year}年各货币平均汇率:")
    for currency, avg in zip(headers, yearly_avg):
        print(f"{currency}: {avg:.4f}")

任务3:每种货币过去5年汇率的最低值与最高值

用numpy的min和max方法,同样按列计算:

# 计算最低值
min_rates = np.min(exchange_rates, axis=0)
# 计算最高值
max_rates = np.max(exchange_rates, axis=0)

# 打印结果
for currency, min_rate, max_rate in zip(headers, min_rates, max_rates):
    print(f"{currency}过去5年汇率范围:{min_rate:.4f} ~ {max_rate:.4f}")

任务4:每种货币过去5年汇率的标准差

标准差用std方法,默认是总体标准差(如果要样本标准差可以加ddof=1):

# 计算总体标准差(ddof=0),如果需要样本标准差改成ddof=1
std_5years = np.std(exchange_rates, axis=0, ddof=0)

for currency, std in zip(headers, std_5years):
    print(f"{currency}过去5年汇率的标准差:{std:.4f}")

任务5:每种货币每年汇率的标准差

和任务2类似,按年份分组后计算标准差:

for year in unique_years:
    year_mask = (years == year)
    yearly_std = np.std(exchange_rates[year_mask], axis=0, ddof=0)
    print(f"\n{year}年各货币汇率标准差:")
    for currency, std in zip(headers, yearly_std):
        print(f"{currency}: {std:.4f}")

小提示

如果你的CSV里有缺失值(比如某些日期的汇率为空),可以在加载数据的时候用filling_values参数填充,比如genfromtxt里加filling_values=np.nan,然后计算的时候用np.nanmean、np.nanmin等方法跳过缺失值,比如np.nanmean(exchange_rates, axis=0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:59:25