pandas 之时间排序

Posted 诗雨时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 之时间排序相关的知识,希望对你有一定的参考价值。

                                                                  时间排序

 

在 pandas 中,有一个非常常用的函数 date_range,尤其是在处理时间序列数据时,这个函数的作用就是产生一个 DatetimeIndex,就是时间序列数据的索引。

 

pandas.date_range(start=Noneend=Noneperiods=Nonefreq=Nonetz=Nonenormalize=Falsename=Noneclosed=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

 

以上是关于pandas 之时间排序的主要内容,如果未能解决你的问题,请参考以下文章

下采样到季度级别并在 Pandas 中获取季度结束日期值

Python/Pandas:查找将假期考虑在内的日期时间的自定义业务季度结束

pandas 将 datetimeindex 格式转换为季度

pandas基于日期信息(time or date)生成季度信息(quarter)实战:pandas基于日期信息列生成季度信息列dt.quarter生成季度信息dt.to_period生成季度信息

Pandas 按季度转换为每日,同时牢记不同的代码

pandas group 日期到季度和总销售额列