Python,将数据框中的每日数据汇总到每月和每季度 [英] Python, summarize daily data in dataframe to monthly and quarterly
问题描述
我已经将数据加载到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屋!