如何在Pandas DataFrame中筛选2020年数据并计算GBP、USD两列的均值
问题原因
你的代码存在两个问题:
- 没有提前筛选出2020年的数据集,直接分组统计会返回所有日期对应的均值
- 按
Date列直接分组的统计粒度是单日,没办法直接得到全年的聚合结果
可行解决方案(适配新手)
import pandas as pd # 读取原始数据 df = pd.read_csv ('C:/Users/user/AppData/Local/Programs/Python/Python39/Scripts/usd_vs_gbp_euro_2011_2021.csv') # 把Date列转为pandas识别的日期格式,为后续按年筛选做准备 df['Date'] = pd.to_datetime(df['Date']) # 筛选出所有2020年的数据行 df_2020 = df[df['Date'].dt.year == 2020] # 直接计算2020年GBP、USD两列的平均值 avg_gbp = df_2020['GBP'].mean() avg_usd = df_2020['USD'].mean() print(f"2020年GBP列平均值:{avg_gbp}") print(f"2020年USD列平均值:{avg_usd}") # 如果你需要计算2020年英镑兑美元的平均汇率,补充以下代码即可 avg_gbp_to_usd = avg_gbp / avg_usd print(f"2020年英镑兑美元平均汇率:{avg_gbp_to_usd}")
扩展写法(可一次统计所有年份的均值)
如果你后续需要查询其他年份的均值,可以用按年分组的写法一次性生成所有年份的统计结果:
df['Date'] = pd.to_datetime(df['Date']) # 按年分组,同时统计GBP、USD两列的年均值 yearly_avg = df.groupby(df['Date'].dt.year)[['GBP', 'USD']].mean() # 直接取2020年的结果 print(yearly_avg.loc[2020])
内容的提问来源于stack exchange,提问作者Angelism
相关产品推荐
相关产品推荐

