群熊猫时间序列按月划分

时间:2017-10-23 18:36:10

标签: python pandas time-series

我有以下工作示例,我计算此时间序列的每个月的正态分布。我正在寻找的是一个汇总分布,它返回12个值,因此对于每年计算的月数。换句话说,1月的子集包括2011年1月,2012年,2013年,2014年的数据,从中计算分布。

from scipy.stats import norm
import pandas as pd
import numpy as np


def some_function(data):
    mu, std = norm.fit(data)
    a = mu * 3
    b = std * 5
    return a, b


rng = pd.date_range('1/1/2011', periods=4*365, freq='D')
ts = pd.Series(np.random.randn(len(rng)), index=rng)
ts.groupby(pd.TimeGrouper('M')).apply(some_function).apply(pd.Series).rename(columns={0: 'mu', 1: 'std'})

干杯

1 个答案:

答案 0 :(得分:2)

您可以在日期时间索引中使用year属性:

In [11]: ts.groupby(ts.index.year).apply(some_function).apply(pd.Series).rename(columns={0: 'mu', 1: 'std'})
Out[11]:
            mu       std
2011  0.110566  4.827900
2012 -0.094430  4.950958
2013 -0.097986  4.965611
2014 -0.078819  4.709263