【数据分析师_04_Python数据分析基础】005_Pandas时序分析(pd.Period 和 pd.PeriodIndex 的使用)

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

金融供应链数据挖掘实战

Python 解析 FactSet Revere,手把手构建供应链月度面板数据


转载请注明出处 😃!
手动反爬: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

在这里插入图片描述

金融供应链数据挖掘实战

Python 解析 FactSet Revere,手把手构建供应链月度面板数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值