pandas中to datetime 時間處理

2021-10-09 20:16:46 字數 3785 閱讀 9219

pandas.to_datetime(arg,errors =『raise』,utc = none,format = none,unit = none )

pandas通常用於處理成組日期,不管這些日期是dataframe的軸索引還是列,to_datetime方法可以解析多種不同的日期表示形式。

(1)獲取指定的時間和日期

例如:df[』'date]資料型別為「object」,通過pd.to_datetime將該列資料轉換為時間型別,即datetime。

pandas時間序列基礎以及時間、日期處理

pandas最基本的時間序列型別就是以時間戳(時間點)(通常以python字串或datetime物件表示)為索引的series:

dates = [『2017-06-20』,『2017-06-21』,

『2017-06-22』,『2017-06-23』,『2017-06-24』,『2017-06-25』,『2017-06-26』,『2017-06-27』]

import numpy as np

ts = pd.series(np.random.randn(8),index = pd.to_datetime(dates))

ts2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts.index

datetimeindex([『2017-06-20』, 『2017-06-21』, 『2017-06-22』, 『2017-06-23』,

『2017-06-24』, 『2017-06-25』, 『2017-06-26』, 『2017-06-27』],

dtype=『datetime64[ns]』, freq=none)

pandas不同索引的時間序列之間的算術運算會自動按日期對齊

ts[::2]#從前往後每隔兩個取資料

2017-06-20 0.788811

2017-06-22 0.009967

2017-06-24 0.981214

2017-06-26 -0.127258

dtype: float64

ts[::-2]#從後往前逆序每隔兩個取資料

2017-06-27 1.919773

2017-06-25 0.314127

2017-06-23 -1.024626

2017-06-21 0.372555

dtype: float64

ts + ts[::2]#自動資料對齊

2017-06-20 1.577621

2017-06-21 nan

2017-06-22 0.019935

2017-06-23 nan

2017-06-24 1.962429

2017-06-25 nan

2017-06-26 -0.254516

2017-06-27 nan

dtype: float64

索引為日期的series和dataframe資料的索引、選取以及子集構造

方法:1).index[number_int]

2)[乙個可以被解析為日期的字串]

3)對於,較長的時間序列,只需傳入『年』或『年月』可返回對應的資料切片

4)通過時間範圍進行切片索引

ts2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts[ts.index[2]]

0.0099673896063391908

ts[『2017-06-21』]#傳入可以被解析成日期的字串

0.37255538918121028

ts[『21/06/2017』]

0.37255538918121028

ts[『20170621』]

0.37255538918121028

ts[『2017-06』]#傳入年或年月

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

2017-06-24 0.981214

2017-06-25 0.314127

2017-06-26 -0.127258

2017-06-27 1.919773

dtype: float64

ts[『2017-06-20』:『2017-06-23』]#時間範圍進行切片

2017-06-20 0.788811

2017-06-21 0.372555

2017-06-22 0.009967

2017-06-23 -1.024626

dtype: float64

帶有重複索引的時間序列

1).index.is_unique檢查索引日期是否是唯一的

2)對非唯一時間戳的資料進行聚合,通過groupby,並傳入level = 0(索引的唯一一層)

dates = pd.datetimeindex([『2017/06/01』,『2017/06/02』,『2017/06/02』,『2017/06/02』,『2017/06/03』])

dates

datetimeindex([『2017-06-01』, 『2017-06-02』, 『2017-06-02』, 『2017-06-02』,

『2017-06-03』],

dtype=『datetime64[ns]』, freq=none)

dup_ts = pd.series(np.arange(5),index = dates)

dup_ts

2017-06-01 0

2017-06-02 1

2017-06-02 2

2017-06-02 3

2017-06-03 4

dtype: int32

dup_ts.index.is_unique

false

dup_ts[『2017-06-02』]

2017-06-02 1

2017-06-02 2

2017-06-02 3

dtype: int32

grouped = dup_ts.groupby(level=0).mean()

grouped

2017-06-01 0

2017-06-02 2

2017-06-03 4

dtype: int32

dup_df = pd.dataframe(np.arange(10).reshape((5,2)),index = dates )

dup_df

pandas中DataFrame mean函式用法

mean 平均數 pandas中的df.mean 函式預設是等價於df.mean 0 即按軸方向求平均,得到每列資料的平均值。相反的df.mean 1 則代表按行方向求平均,得到每行資料的平均值。舉例 我們 首先匯入pandas包 import pandas as pd建立矩陣 首先使用預設方法 會...

Pandas中的分類

一 分類變數的結構 乙個分類變數包括三個部分,元素值 values 分類類別 categories 是否有序 order 從上面可以看出,使用cut函式建立的分類變數預設為有序分類變數 一 獲取分類屬性 a describe方法 該方法描述了乙個分類序列的情況,包括非缺失值個數 元素值類別數 不是分...

Pandas中resample方法詳解

pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 dataframe.resample rule how none axis 0 fill method none closed none label non...