Pandas的时序分析
转载请注明出处 😃!
手动反爬:Pandas时序分析(pd.Period 和 pd.PeriodIndex 的使用)
https://blog.csdn.net/lyun911/article/details/112716293
注:以下使用 Jupyter Notebook 演示
5 pd.Period 和 pd.PeriodIndex 的使用
常用的Period方法
- 时期表示的是时间区间,比如 年/季/月/日/时/分 等
- 通过加减整数可以实现对Period的移动
- PeriodIndex 类的构造函数允许直接使用一组字符串表示一段时期
- 许多季度型数据会涉及“财年末”的概念,通常是一年12个月中某月的最后一个工作日或日历日
5.1 pd.Period(‘0000-00-00 00:00:00’, freq = ‘Y/Q/M/W/D/H’)
5.1.1 freq = ‘Y’
pd.Period(, freq = 'Y') Year年度
import pandas as pd
y = pd.Period('2019') # 输出的 'A-DEC' 中A表示全年,DEC表示12月
y.start_time
y.end_time
y.is_leap_year

5.1.2 freq = ‘Q’
pd.Period(, freq = 'Q') Quarter季度
q1 = pd.Period('2017q1', freq = 'q-dec')# freq = 'q-dec'最后一个季度是12月份
q1
q1.start_time
q1.end_time
q1.asfreq('M')# 把季度转换成月份,默认 how = 'end'
q1.asfreq('M', how = 'start')
q1.asfreq('M', how = 'end')

5.1.3 freq = ‘M’
pd.Period(, freq = 'M') Month月度
m = pd.Period('2019-05')
m.start_time
m.end_time
m + 1 # 按月进行加减

5.1.4 freq = ‘W’
pd.Period(, freq = 'W') Week周度
w = pd.Period('2017-07-06', freq = 'W')
w # 输出这一周的日期:Period('2017-07-03/2017-07-09', 'W-SUN')
w - 1

5.1.5 freq = ‘D’
pd.Period(, freq = 'D') Day日度
d = pd.Period('2019-07-10', freq = 'D')
d.start_time
d + 10

5.1.6 freq = ‘H’
pd.Period(, freq = 'H') Hour时度
h = pd.Period('2019-07-10 23:00:00', freq = 'H')
h.end_time
h + 5

5.2 pd.period_range() 的用法
r = pd.period_range('2011', '2017', freq = 'q')# 用法和 .date_range 类似,产生一系列数组
r[0]
r[0].start_time
r[0].end_time
r1 = pd.period_range('2011', '2017', freq = '3m')# 也可以按照每3个月跳跃
r1
import numpy as np
ps = pd.Series(
np.random.randn(len(r1)),
r1# 以 r1作为 index
)
ps.head()
ps['2016']# 分区索引,直接把所有2016年的数据拿出来
ps['2015-05': '2016-02']# 分区索引,把一个期间的数据拿出来

5.3 使用 沃尔玛的营收数据 演示(设置季度起止)
df = pd.read_csv("wmt.csv")
df.set_index("Line Item", inplace = True)
df = df.T# 转置
# freq = 'q-jan' 把1月作为最后一个月:
df.index = pd.PeriodIndex(df.index, freq = 'q-jan')
df.index[0].start_time # 这就是上面 【freq = 'q-jan' 把1月作为最后一个月】 的效果:2月作为第一个季度的开始
df.index[0].end_time # 这就是上面 【freq = 'q-jan' 把1月作为最后一个月】 的效果:4月作为第一个季度的结束
df['Start Date'] = df.index.map(lambda x: x.start_time)
df['End Date'] = df.index.map(lambda x: x.end_time)
df # 可以看出第一个季度是从2016-2到2016-4
# 以12月作为最后一个季度的最后一个月:
df.index = pd.PeriodIndex(df.index, freq = 'q-dec')
df['Start Date'] = df.index.map(lambda x: x.start_time)
df['End Date'] = df.index.map(lambda x: x.end_time)
df # 可以看出第二个季度是从2016-4到2016-6

本文详细介绍了如何使用Pandas进行时序分析,包括pd.Period的创建与不同频率(如年、季、月等)的使用,以及pd.period_range()函数的运用,并结合沃尔玛的营收数据展示了设置季度起止的应用案例。
&spm=1001.2101.3001.5002&articleId=112716293&d=1&t=3&u=6ae57c90814244dea0b4d86d12bfee1c)
493

被折叠的 条评论
为什么被折叠?



