天天看點

PYTHON資料分析庫-Pandas時間處理

python資料分析庫-pandas時間處理

在 pandas 中關于時間序列的常見對象有 6 種,分别是 timestamp(時間戳)、datetimeindex(時間戳索引)、period(時間段)、periodindex(時間段索引)、以時間為元素的 series 和以及以時間索 引的 dataframe。

<code>timestamp</code> 時間戳表示時間軸上的某一點,以下不同代碼都可以生成相同時間戳。

PYTHON資料分析庫-Pandas時間處理

傳入一個三元組

PYTHON資料分析庫-Pandas時間處理

傳入一個時間格式的字元串

PYTHON資料分析庫-Pandas時間處理

傳入一個時間對象

PYTHON資料分析庫-Pandas時間處理

period 時間段表示時間軸上的某一區間,以下代碼都可以生成相同時間段。

PYTHON資料分析庫-Pandas時間處理

時間段可以通過加減法來進行變化

PYTHON資料分析庫-Pandas時間處理

period() 函數後面通常有兩個參數,第二個 freq 參數決定時間段的分割長度。

pandas 中常用 to_datetime() 函數可以建立以時間為元素的 series。

PYTHON資料分析庫-Pandas時間處理

要生成帶有時間戳的索引,可以使用 datetimeindex() 構造函數,并傳入清單或 series 對象:

PYTHON資料分析庫-Pandas時間處理

實際運用中我們經常需要大量的的時間戳的索引。可以使用 date_range() 和 bdate_range() 來批量建立相同時間間隔的時間戳索引。

建立以 2018 年 9 月 30 日為開始的 250 條時間索引,相鄰索引間隔時間長度為一天。

PYTHON資料分析庫-Pandas時間處理

建立以 2018 年 10 月 1 日為開始的 111 條時間索引,相鄰索引間隔時間長度為一個工作日。

PYTHON資料分析庫-Pandas時間處理

在 date_range() 和 bdate_range() 中可以巧妙使用 start,end, periods,freq 等參數的各種 組合輕松批量建立時間索引。

在 2017 年 10 月 1 日到 2018 年 10 月 1 日間,每隔一周建立一條索引。

PYTHON資料分析庫-Pandas時間處理

對于頻率的參數可參照附錄中的表1

同時,時間段和時間戳都可以作為索引

下面是時間戳作為索引的例子

PYTHON資料分析庫-Pandas時間處理

下面是時間段作為索引的例子

PYTHON資料分析庫-Pandas時間處理

時間段也可以作為索引建立dataframe 對象。在 2017 年第一季度和 2018 年第四季度之間每隔一個季度建立一條索引。

PYTHON資料分析庫-Pandas時間處理

就以前面的dataframe為例

PYTHON資料分析庫-Pandas時間處理
PYTHON資料分析庫-Pandas時間處理
PYTHON資料分析庫-Pandas時間處理

使用 truncate() 切下 2017 年 11 月 26 日與 2018 年 4 月 29 日間的記錄。

PYTHON資料分析庫-Pandas時間處理

除了元素可以被移動,索引本身也能被移動,需要加上 freq 參數。将索引列向上移動一條:

如圖所示,索引被整體移動了

PYTHON資料分析庫-Pandas時間處理

重采樣可以通俗得了解為改變時間索引的個數,通過增大或減小相鄰索引的時間間隔以達到減小或 增加索引數量的效果,在 pandas 中使用 resample() 函數。

重采樣生成的類似groupby

PYTHON資料分析庫-Pandas時間處理

上采樣:減小時間間隔頻率,增加記錄的數量。

原來間隔為日的索引列,間隔被縮小成 12 小時,增加采樣點的值為空值。

PYTHON資料分析庫-Pandas時間處理

fill() 函數可以将新增的索引值以相鄰的前一條索引值進行填充。

PYTHON資料分析庫-Pandas時間處理

也可使用插值方法

PYTHON資料分析庫-Pandas時間處理
PYTHON資料分析庫-Pandas時間處理

用agg方法可以同時使用多種求職類型

PYTHON資料分析庫-Pandas時間處理

還有類似這種方法可供使用

首先要導入 pandas.tseries.offsets 子產品,pandas 所有常用時間類都在該子產品中。

PYTHON資料分析庫-Pandas時間處理

使用 dateoffset() 實作時間戳位移。

PYTHON資料分析庫-Pandas時間處理

也可以用時間戳加減常用時間類以實作時間戳位移。向前移動 10 個工作日

向後移動一個月末。

個性化定制日期。雖然月曆規定年末是 12 月,加入參數後相當于人為規定 2 月是年末。 向後移動到上兩個年末。

向前移動到上一個周四。

可以使用 rollforward() 将指定時間向前或向後移動到一個制定常用時間類的時間戳上。将時間 移動到下一個月末:

PYTHON資料分析庫-Pandas時間處理