Python Pandas – 提取带有指定时间序列频率的 DateTimeIndex 的日期
在进行时间序列分析时,我们经常需要提取日期中的特定部分,比如年、月、日等,以进行更加细致的分析。Python Pandas 提供了强大的时间序列处理功能,可以方便地实现这一操作。接下来,我们就来介绍如何提取带有指定时间序列频率的 DateTimeIndex 的日期。
准备工作
首先,我们需要导入 Pandas 模块并生成一个示例 DateTimeIndex,方便后续的操作。
import pandas as pd
# 生成一个频率为1小时的 DateTimeIndex
index = pd.date_range('2022-01-01 00:00:00', '2022-01-02 00:00:00', freq='1H')
在上述代码中,我们通过 pd.date_range()
方法生成一个频率为1小时的 DateTimeIndex,起始时间为 2022-01-01 00:00:00
,结束时间为 2022-01-02 00:00:00
。我们可以通过打印 index
,查看生成的 DateTimeIndex。
print(index)
输出结果如下:
DatetimeIndex(['2022-01-01 00:00:00', '2022-01-01 01:00:00',
'2022-01-01 02:00:00', '2022-01-01 03:00:00',
'2022-01-01 04:00:00', '2022-01-01 05:00:00',
'2022-01-01 06:00:00', '2022-01-01 07:00:00',
'2022-01-01 08:00:00', '2022-01-01 09:00:00',
'2022-01-01 10:00:00', '2022-01-01 11:00:00',
'2022-01-01 12:00:00', '2022-01-01 13:00:00',
'2022-01-01 14:00:00', '2022-01-01 15:00:00',
'2022-01-01 16:00:00', '2022-01-01 17:00:00',
'2022-01-01 18:00:00', '2022-01-01 19:00:00',
'2022-01-01 20:00:00', '2022-01-01 21:00:00',
'2022-01-01 22:00:00', '2022-01-01 23:00:00',
'2022-01-02 00:00:00'],
dtype='datetime64[ns]', freq='H')
如上所示,我们成功生成了一个频率为1小时的 DateTimeIndex。
提取日期
接下来,我们就可以开始通过 Pandas 提供的方法,提取 DateTimeIndex 中的日期。
提取年
我们可以通过 year
方法,直接提取 DateTimeIndex 中的年。
# 提取年
print(index.year)
输出结果如下:
Int64Index([2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
2022, 2022, 2022],
dtype='int64')
我们可以看到,成功提取了 DateTimeIndex 中的年份。
提取月
同样地,我们可以通过 month
方法,直接提取 DateTimeIndex 中的月份。
# 提取月
print(index.month)
输出结果如下:
Int64Index([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
dtype='int64')
我们可以看到,成功提取了 DateTimeIndex 中的月份。
提取日
我们可以通过 day
方法,直接提取 DateTimeIndex 中的日。
# 提取日
print(index.day)
输出结果如下:
Int64Index([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 2],
dtype='int64')
我们可以看到,成功提取了 DateTimeIndex 中的日。
提取周几
我们可以通过 weekday
或 dayofweek
方法,直接提取 DateTimeIndex 中的周几。
# 提取周几
print(index.weekday)
print(index.dayofweek)
输出结果如下:
Int64Index([5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 0],
dtype='int64')
Int64Index([5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 0],
dtype='int64')
我们可以看到,weekday
和 dayofweek
方法都可以成功提取 DateTimeIndex 中的周几。
提取小时
我们可以通过 hour
方法,直接提取 DateTimeIndex 中的小时。
# 提取小时
print(index.hour)
输出结果如下:
Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 0],
dtype='int64')
我们可以看到,成功提取了 DateTimeIndex 中的小时。
结论
通过上述介绍,我们学习了如何使用 Pandas 提取带有指定时间序列频率的 DateTimeIndex 中的日期,包括年、月、日、周几和小时等。这些操作为我们进行更加精细的时间序列分析提供了便利。