看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
周期数据有专门的 dtype,为周期数据提供丰富的功能,可以从其他时间类型灵活地转换到周期类型。
PeriodIndex 具有自己独有的 dtype。 这是一个类似于时区感知 dtype 的 pandas 扩展 (datetime64[ns, tz]))。
周期 dtype 拥有 freq 属性,并使用频率字符串以诸如 period[D]或period[M]之类的period[freq] 表示。
pi = pd.period_range('2016-01-01', periods=3, freq='M')
pi
# PeriodIndex(['2016-01', '2016-02', '2016-03'], dtype='period[M]', freq='M')
pi.dtype
# period[M]
可以通过asfreq方法转换Period和PeriodIndex的频率。 让我们从2011财年开始,到12月结束:
p = pd.Period('2011', freq='A-DEC')
p
# Period('2011', 'A-DEC')
我们可以将其转换为每月频率。 使用how参数,我们可以指定返回起始月份还是结束月份:
p.asfreq('M', how='start')
# Period('2011-01', 'M')
p.asfreq('M', how='end')
# Period('2011-12', 'M')
为方便起见,提供了速记“s”和“e”来简写:
p.asfreq('M', 's')
# Period('2011-01', 'M')
p.asfreq('M', 'e')
# Period('2011-12', 'M')
转换为“超级周期”(例如,年度频率是每季度一次的超级周期)会自动返回包含输入期间的超级周期:
p = pd.Period('2011-12', freq='M')
p.asfreq('A-NOV')
# Period('2012', 'A-NOV')
请注意,由于我们将年度频率转换为在11月结束的年度频率,因此2011年12月的月度实际上是2012年A-NOV期间。
具有固定频率的周期转换对于处理经济学、商业和其他领域共有的各种季度数据特别有用。 许多组织定义相对于其会计年度开始和结束月份的季度。 因此,2011年第一季度可能会在2010年或2011年之前的几个月内开始。通过锚定频率,Pandas 适用于Q-JAN 至 Q-DEC 的所有季度频率。
Q-DEC 定义常规日历季度:
p = pd.Period('2012Q1', freq='Q-DEC')
p.asfreq('D', 's')
# Period('2012-01-01', 'D')
p.asfreq('D', 'e')
# Period('2012-03-31', 'D')
Q-MAR 定义3月的会计年度结束:
p = pd.Period('2011Q4', freq='Q-MAR')
p.asfreq('D', 's')
# Period('2011-01-01', 'D')
p.asfreq('D', 'e')
# Period('2011-03-31', 'D')
更新时间:2020-06-24 18:09:47 标签:pandas 周期