pandas 之時間排序

2021-10-03 21:54:07 字數 3948 閱讀 6923

在 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,表示 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中提供了許多用來處理時間格式文字的方法,包括按不同方法生成乙個時間序列,修改時間的格式,重取樣等等。in 7 import pandas as pd 按起始和終止日期以及步長生成時間序列 in 8 pd.date range start 20171212 end 20180101 fre...

pandas學習之時序資料

時序資料處理太難了,很多知識點沒有搞明白。先把自己理解清楚的內容記錄下。1 首先需要知道,時間變數在python系統中是以時間戳型別儲存的,由日期和時間共同組成,即timestamp,精確到ns。2 date range 是一種生成連續間隔時間的一種方法,其重要的引數為 start,end,freq...

Python之時間處理

一.關於時間幾種常用的處理方法 time包和datetime包 1 引入time包,import time 1.獲取從1970年到現在的秒數,至於為什麼從1970年開始這裡就不過多闡述了 我不會告訴你其實我也不知道 timeline time.time print timeline 輸出結果 153...