如何使用pandas数据框架计算时间序列的月变化



由于我是Python的新手,我可能会问你们大多数人一些基本的问题。但是,我有一个df,其中'Date'是索引,另一列返回与Date相关的月份,还有一个Data列。

Mnth    TSData
Date
2012-01-05     1  192.6257
2012-01-12     1  194.2714
2012-01-19     1  192.0086
2012-01-26     1  186.9729
2012-02-02     2  183.7700
2012-02-09     2  178.2343
2012-02-16     2  172.3429
2012-02-23     2  171.7800
2012-03-01     3  169.6300
2012-03-08     3  168.7386
2012-03-15     3  167.1700
2012-03-22     3  165.9543
2012-03-29     3  165.0771
2012-04-05     4  164.6371
2012-04-12     4  164.6500
2012-04-19     4  166.9171
2012-04-26     4  166.4514
2012-05-03     5  166.3657
2012-05-10     5  168.2543
2012-05-17     5  176.8271
2012-05-24     5  179.1971
2012-05-31     5  183.7120
2012-06-07     6  195.1286

我希望计算数据集的每月变化,以便以后在箱线图中使用。因此,从上面的表中,我查找的结果是:

Mnth               Chng
1    -8,9  (183,77 - 192,66)
2  -14,14  (169,63 - 183,77)
3      -5  (164,63 - 169,63)
4    1,73  (166,36 - 164,63)
5   28,77  (195,13 - 166,36)  

等等…

有什么建议吗?

谢谢:)

IIUC,从此开始为df:

Date  Mnth    TSData
0   2012-01-05     1  192.6257
1   2012-01-12     1  194.2714
2   2012-01-19     1  192.0086
3   2012-01-26     1  186.9729
4   2012-02-02     2  183.7700
...
20  2012-05-24     5  179.1971
21  2012-05-31     5  183.7120
22  2012-06-07     6  195.1286

可以使用:

df.groupby('Mnth')['TSData'].first().diff().shift(-1)
# or 
# -df.groupby('Mnth')['TSData'].first().diff(-1)

NB。数据必须按日期排序,以便在计算中使用所需的日期作为每组(df.sort_values(by=['Mnth', 'Date']))的第一项

输出:

Mnth
1    -8.8557
2   -14.1400
3    -4.9929
4     1.7286
5    28.7629
6        NaN
Name: TSData, dtype: float64
  1. 我将验证我们有一个datetime索引:
df.index = pd.to_datetime(df.index)
  1. 那么这只是一个使用resample的问题:
df['TSData'].resample('M').first().diff().shift(freq='-1M')

输出:

Date
2011-12-31        NaN
2012-01-31    -8.8557
2012-02-29   -14.1400
2012-03-31    -4.9929
2012-04-30     1.7286
2012-05-31    28.7629
Name: TSData, dtype: float64

相关内容

  • 没有找到相关文章

最新更新