天天看點

python+pandas+時間、日期以及時間序列處理方法

先簡單的了解下日期和時間資料類型及工具 python标準庫包含于日期(date)和時間(time)資料的資料類型,datetime、time以及calendar子產品會被經常用到。datetime以毫秒形式存儲日期和時間,datetime.timedelta表示兩個datetime對象之間的時間差。給datetime對象加上或減去一個或多個timedelta,會産生一個新的對象

隻有這三個參數了!datetime子產品中的資料類型

1)python标準庫函數 日期轉換成字元串:利用str 或strftime 字元串轉換成日期:datetime.strptime

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

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

<code>ts</code>

<code>2017-06-20 0.788811</code>

<code>2017-06-21 0.372555</code>

<code>2017-06-22 0.009967</code>

<code>2017-06-23 -1.024626</code>

<code>2017-06-24 0.981214</code>

<code>2017-06-25 0.314127</code>

<code>2017-06-26 -0.127258</code>

<code>2017-06-27 1.919773</code>

<code>dtype: float64</code>

<code>ts[ts.index[2]]</code>

<code>0.0099673896063391908</code>

<code>ts['2017-06-21']#傳入可以被解析成日期的字元串</code>

<code>0.37255538918121028</code>

<code>ts['21/06/2017']</code>

<code>ts['20170621']</code>

<code>ts['2017-06']#傳入年或年月</code>

<code>ts['2017-06-20':'2017-06-23']#時間範圍進行切片</code>

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

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

<code>dates = pd.datetimeindex(['2017/06/01','2017/06/02','2017/06/02','2017/06/02','2017/06/03'])</code>

<code>dates</code>

<code>datetimeindex(['2017-06-01', '2017-06-02', '2017-06-02', '2017-06-02',</code>

<code>  '2017-06-03'],</code>

<code>  dtype='datetime64[ns]', freq=none)</code>

<code>dup_ts = pd.series(np.arange(5),index = dates)</code>

<code>dup_ts</code>

<code>2017-06-01 0</code>

<code>2017-06-02 1</code>

<code>2017-06-02 2</code>

<code>2017-06-02 3</code>

<code>2017-06-03 4</code>

<code>dtype: int32</code>

<code>dup_ts.index.is_unique</code>

<code>false</code>

<code>dup_ts['2017-06-02']</code>

<code>grouped = dup_ts.groupby(level=0).mean()</code>

<code>grouped</code>

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

<code>dup_df</code>

<code>1)字元串、日期的轉換方法</code>

<code>2)日期和時間的主要python,datetime、timedelta、pandas.to_datetime等</code>

<code>3)以時間為索引的series和dataframe的索引、切片</code>

<code>4)帶有重複時間索引時的索引,.groupby(level=0)應用</code>