时间排序
在 pandas 中,有一个非常常用的函数 date_range,尤其是在处理时间序列数据时,这个函数的作用就是产生一个
DatetimeIndex,就是时间序列数据的索引。
pandas.date_range(start=None, end=None, periods=None, freq=None, tz=None,
normalize=False, name=None, closed=None, **kwargs) →
pandas.core.indexes.datetimes.DatetimeIndex
返回一个固定频率的DatetimeIndex。
参数:
start:str 或 datetime-like,可选,默认值是None,表示日期的起点。
end:str 或 datetime-like,可选,默认值是None,表示日期的终点。
periods:
int,可选,默认值是None,表示你要从和这个函数产生多少个日期索引值(要生成的周期数);如果是None的话,那么 start 和 end 必须不能为
None。
freq:str 或 DateOffset,默认 “D”,表示以自然日为单位,这个参数用来指定计时单位,比如 “5H”表示每隔5个小时计算一次。
名称说明
B业务日频率
C自定义业务日频率
D日历天频率
W每周一次的频率
M月结束频率
SM月结频次(15次、月末)
BM
业务月末频率
CBM
自定义业务月底频率
MS月开始频率
SMS开始频率(1号、15号)
BMS
业务月开始频率
CBMS
自定义业务月开始频率
Q季度结束频率
BQ
业务季度结束频率
QS
季度开始频
BQS
季度开始频率
A, Y年底频率
BA, BY
业务年度结束频率
AS, YS
年开始频
BAS, BYS
业务年度开始频率
BH
营业时间频率
H每小时的频率
T, min
每分钟的频率
S每秒频率
L, ms毫秒
U, us微秒
N纳秒
tz:str 或 tzinfo,可选,返回本地化的DatetimeIndex的时区名称,例如' Asia/Hong_Kong
'。默认情况下,生成的DatetimeIndex是与时区无关的。
normalize:bool,默认 False。如果为 True 的话,那么在产生时间索引值之前会先把 start 和 end 都转化为当日的午夜 0 点。
name:str,默认 None。给返回的时间索引指定一个名字。
closed:{None, ‘left’, ‘right’},可选。默认值为 None,表示
start 和 end 这个区间端点是否包含在区间内,可以有三个值,“left” 表示左闭右开区间,“right” 表示左开右闭区间,None 表示两边都是闭区间。
**kwargs:兼容性,对结果没影响。
import pandas as pd, numpy as np # 创建时间序列(默认 freq="D") time_index =
pd.date_range(start="2020-03-01", end="2020-03-15") print(time_index) # 运行结果:
DatetimeIndex(['2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04',
'2020-03-05', '2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09',
'2020-03-10', '2020-03-11', '2020-03-12', '2020-03-13', '2020-03-14',
'2020-03-15'], dtype='datetime64[ns]', freq='D') # 创建 10 个时间序列 time_index02 =
pd.date_range(start="2020-03-01", periods=10) print(time_index02) # 运行结果:
DatetimeIndex(['2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04',
'2020-03-05', '2020-03-06', '2020-03-07', '2020-03-08', '2020-03-09',
'2020-03-10'], dtype='datetime64[ns]', freq='D') # 创建一个时间序列,步长 3 天 time_index03
= pd.date_range(start="2020-03-01", periods=10, freq="3D") print(time_index03)
# 运行结果: DatetimeIndex(['2020-03-01', '2020-03-04', '2020-03-07', '2020-03-10',
'2020-03-13', '2020-03-16', '2020-03-19', '2020-03-22', '2020-03-25',
'2020-03-28'], dtype='datetime64[ns]', freq='3D') # 创建一个时间序列,以分钟为步长
time_index04 = pd.date_range(start="2020-03-01", periods=10, freq="S")
print(time_index04) # 运行结果: DatetimeIndex(['2020-03-01 00:00:00', '2020-03-01
00:00:01', '2020-03-01 00:00:02', '2020-03-01 00:00:03', '2020-03-01 00:00:04',
'2020-03-01 00:00:05', '2020-03-01 00:00:06', '2020-03-01 00:00:07',
'2020-03-01 00:00:08', '2020-03-01 00:00:09'], dtype='datetime64[ns]',
freq='S') data = np.random.randint(3000, 3010, 10) print(data) # 运行结果: [3001
3005 3001 3009 3002 3008 3002 3000 3001 3003] time_index05 = pd.Series(data,
time_index04) print(time_index05) # 运行结果: 2020-03-01 00:00:00 3001 2020-03-01
00:00:01 3005 2020-03-01 00:00:02 3001 2020-03-01 00:00:03 3009 2020-03-01
00:00:04 3002 2020-03-01 00:00:05 3008 2020-03-01 00:00:06 3002 2020-03-01
00:00:07 3000 2020-03-01 00:00:08 3001 2020-03-01 00:00:09 3003 Freq: S, dtype:
int32