Python,将数据框中的每日数据汇总到每月和每季度 [英] Python, summarize daily data in dataframe to monthly and quarterly

查看:1625
本文介绍了Python,将数据框中的每日数据汇总到每月和每季度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经将数据加载到Pandas数据框中.

I have already loaded my data into Pandas dataframe.

示例:

Date        Price
2012/12/02  141.25
2012/12/05  132.64
2012/12/06  132.11
2012/12/21  141.64                                                     
2012/12/25  143.19  
2012/12/31  139.66  
2013/01/05  145.11  
2013/01/06  145.99  
2013/01/07  145.97
2013/01/11  145.11  
2013/01/12  145.99  
2013/01/24  145.97
2013/02/23  145.11  
2013/03/24  145.99  
2013/03/28  145.97
2013/04/28  145.97
2013/05/24  145.97
2013/06/23  145.11  
2013/07/24  145.99  
2013/08/28  145.97
2013/09/28  145.97

只有两列,一列是数据,一列是价格.

Just two columns, one is data and one is price.

现在如何对从2013年开始到每月和每季度df的数据进行分组或重新采样?

Now how to group or resample the data starts from 2013 to monthly and quarterly df?

每月:

Date        Price
2013/01/01  Monthly total
2013/02/01  Monthly total
2013/03/01  Monthly total
2013/04/01  Monthly total
2013/05/01  Monthly total
2013/06/01  Monthly total
2013/07/01  Monthly total
2013/08/01  Monthly total  
2013/09/01  Monthly total

每季度:

Date        Price
2013/01/01  Quarterly total
2013/04/01  Quarterly total
2013/07/01  Quarterly total

请注意,每月和每季度数据必须从每月的第一天开始,但是在原始数据框中,每月的第一天数据丢失,因此每个月中有效每日数据的数量可能会有所不同.另外,原始数据框包含2012年至2013年的数据,我只需要2013年年初的月度和季度数据即可.

Please note that the monthly and quarterly data need to start from first day of month but in the original dataframe the first day of month data is missing, quantity of valid daily data in each month could vary. Also the original dataframe has data from 2012 to 2013, I only need monthly and quarterly data from beginning of 2013.

我尝试了

result1 = df.groupby([lambda x: x.year, lambda x: x.month], axis=1).sum()

但不起作用.

谢谢!

推荐答案

首先将日期"列转换为日期时间索引:

First convert your Date column into a datetime index:

df.Date = pd.to_datetime(df.Date)
df.set_index('Date', inplace=True)

然后使用resample.偏移别名的列表位于 pandas文档中.对于月初重新采样,请使用MS,并使用QS表示季度:

Then use resample. The list of offset aliases is in the pandas documentation. For begin of month resample, use MS, and QS for the quarters:

df.resample('QS').sum()
Out[46]: 
              Price
Date               
2012-10-01   830.49
2013-01-01  1311.21
2013-04-01   437.05
2013-07-01   437.93

df.resample('MS').sum()
Out[47]: 
             Price
Date              
2012-12-01  830.49
2013-01-01  874.14
2013-02-01  145.11
2013-03-01  291.96
2013-04-01  145.97
2013-05-01  145.97
2013-06-01  145.11
2013-07-01  145.99
2013-08-01  145.97
2013-09-01  145.97

这篇关于Python,将数据框中的每日数据汇总到每月和每季度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆