代码之家  ›  专栏  ›  技术社区  ›  M.E.

熊猫月平均值

  •  1
  • M.E.  · 技术社区  · 4 年前

    我有以下时间序列:

            Date        Value
    0       2006-01-03  18
    1       2006-01-04  12
    2       2006-01-05  11
    3       2006-01-06  10
    4       2006-01-09  22
    ...     ...     ...
    3510    2019-12-23  47
    3511    2019-12-24  46
    3512    2019-12-26  35
    3513    2019-12-27  35
    3514    2019-12-30  28
    

    我想计算每个月的平均值。所以每个月的伪代码如下:

    1. 将当月每天的所有值相加

    预期输出类似于:

            Date        Value
    0       2006-01     17.45
    1       2006-02     18.23
    2       2006-04     16.79
    3       2006-05     17.98
    ...     ...     ...
    166     2019-11     37.89
    167     2019-12     36.34
    

    我尝试过,但没有成功:

    data = data.set_index('Date')
    data.resample('M')
    
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-28-435afe449f1f> in <module>
         47 data = pd.DataFrame(dataList, columns=('Date', 'Value'))
         48 data = data.set_index('Date')
    ---> 49 data.resample('M')
    
    2 回复  |  直到 4 年前
        1
  •  1
  •   cs95 abhishek58g    4 年前

    我们可以将datetime列转换为 PeriodIndex GroupBy.mean :

    df.groupby(pd.PeriodIndex(df['Date'], freq="M"))['Value'].mean()
        
    Date
    2006-01    14.6
    2019-12    38.2
    Freq: M, Name: Value, dtype: float64
    

    df.groupby(pd.PeriodIndex(df['Date'], freq="M"))['Value'].mean().reset_index()
    
          Date  Value
    0  2006-01   14.6
    1  2019-12   38.2
    

    set_index resample.mean 以同样的方式。

        2
  •  1
  •   nunohpinheiro    4 年前

    data_month = data.resample('M', on='Date').mean()

    .mean()

    更多关于 documentation