【问题标题】:How to find the mean values based on the quarters of a year如何根据一年的季度求平均值
【发布时间】:2019-07-02 06:38:29
【问题描述】:

我想根据一年中的季度计算平均值。详细地说,我有一个包含两列的数据框,分别名为“year”和“earning”。 “年”列包含季度值,例如 (1998-Q1... 1998-Q4)。我想找到季度的平均值。目前,我有一个可行的解决方案,但如果有更多年,这将不切实际。有没有更好的解决方案?

data = {
    'year': ['1998-Q1', '1998-Q2', '1998-Q3', '1998-Q4', '1999-Q1', '1999- 
    Q2', '1999-Q3', '1999-Q4'],
'earning': [2800, 2544, 2511, 3104, 2793, 2570,  2600, 3287]
}

df = pd.DataFrame(data)

print(df)

# What if there are more years? For example 2000, 2001, 2002 .... 2018.
df_1998 = df.iloc[:4].mean()
df_1999 = df.iloc[4:].mean()

print(df_1998)
print(df_1999)

【问题讨论】:

  • 你可以使用df.groupby(df.year.str[:4])['earning'].mean()

标签: python pandas dataframe mean


【解决方案1】:

我的方法是将year 列转换为PeriodIndex,然后使用pd.Grouper 返回每​​年的平均值。

df['year'] = pd.to_datetime(df['year']).dt.to_period('Q')
df.set_index('year', drop=True, inplace=True)
df.groupby(pd.Grouper(freq='A')).mean()  # freq='A' specifies yearly frequency where year-end is calendar year-end

在一个数据框内输出每年的平均收入:

        earning
year    
1998    2739.75
1999    2812.50

【讨论】:

    猜你喜欢
    • 2015-12-22
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多