如何使用Pandas将CSV中的月度就业数据转换为年度平均值?
解决月度就业数据转年度平均值的方法
首先修正你代码里的问题:df = pd.DataFrame(data)这行完全多余——pd.read_csv已经直接返回DataFrame,且你未定义data变量,直接删掉即可。
下面提供两种常用的实现方式:
方法一:使用resample(时间序列专用方法)
resample是pandas处理时间序列数据的核心工具,步骤如下:
- 将
REF_DATE列转换为datetime类型 - 将日期列设置为DataFrame的索引
- 按年度重采样并计算目标列的平均值
示例代码:
import pandas as pd # 读取CSV数据 df = pd.read_csv('/14100017.csv') # 转换日期列格式为datetime df['REF_DATE'] = pd.to_datetime(df['REF_DATE']) # 将日期设为索引 df = df.set_index('REF_DATE') # 按年度重采样,计算就业数据的年度平均值(替换VALUE为你实际的数值列名) annual_avg = df['VALUE'].resample('Y').mean() # 可选:将索引格式化为纯年份(如2020而非2020-12-31) annual_avg.index = annual_avg.index.year print(annual_avg)
方法二:使用groupby按年份分组
如果不想设置时间索引,可提取年份后直接分组计算:
- 从
REF_DATE中提取年份生成新列 - 按年份分组并计算目标列的平均值
示例代码:
import pandas as pd df = pd.read_csv('/14100017.csv') df['REF_DATE'] = pd.to_datetime(df['REF_DATE']) # 从日期中提取年份 df['YEAR'] = df['REF_DATE'].dt.year # 按年份分组计算平均值(替换VALUE为你实际的数值列名) annual_avg = df.groupby('YEAR')['VALUE'].mean() print(annual_avg)
注意事项
- 替换代码中的
VALUE为你CSV里实际存储就业数据的列名(从截图看是数值类列) - 如果
REF_DATE是非标准日期格式,需在pd.to_datetime中指定format参数,比如pd.to_datetime(df['REF_DATE'], format='%Y-%m')
内容的提问来源于stack exchange,提问作者businesstoe
相关产品推荐
相关产品推荐

