Pandas 基礎(14) - DatetimeIndex and Resample


這一小節要介紹兩個內容, 一個是 DatetimeIndex 日期索引, 另一個是 Resample, 這是一個函數, 可以通過參數的設置, 來調整數據的查詢條件, 從而得到不同的結果.

首先看下關於 DatetimeIndex 的內容, 照例先引入一個csv 文件作為數據基礎:

import pandas as pd df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/14_ts_datetimeindex/aapl.csv') df.head() 

輸出:

查看一下 Date 列的數據類型:

type(df.Date[0]) 

輸出:

str

從數據結果來看, 目前的 Date 列存儲的是字符串, 這顯然是不適合用來做數據分析的, 需要轉換成時間類型才可以:

import pandas as pd df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/14_ts_datetimeindex/aapl.csv', parse_dates=['Date'], index_col='Date') df.head() 

輸出:

這里在引入數據的同時, 用 parse_dates 參數將 Date 列轉成了 時間類型, 並把 Date 列設置為索引列, 因為我們后面的數據分析都會基於日期.

查看一下索引:

df.index 

輸出:

DatetimeIndex(['2017-07-07', '2017-07-06', '2017-07-05', '2017-07-03', '2017-06-30', '2017-06-29', '2017-06-28', '2017-06-27', '2017-06-26', '2017-06-23', ... '2016-07-22', '2016-07-21', '2016-07-20', '2016-07-19', '2016-07-18', '2016-07-15', '2016-07-14', '2016-07-13', '2016-07-12', '2016-07-11'], dtype='datetime64[ns]', name='Date', length=251, freq=None) 

上面輸出的最后一行有: dtype='datetime64[ns]', 證明 Date 列的數據類型已經從字符串變成了時間. 那么, 下面就嘗試着根據索引來查看一些數據:

查看 2017年1月的所有數據:

df['Jan, 2017'] 

輸出:

查看 2017年1月閉市數據的平均值:

df['Jan, 2017'].Close.mean() 

輸出:

119.57000000000001 

查看具體某一天的數據:

df['2017-01-03'] 

輸出:

查看某幾天的數據:

df['2017-01-07':'2017-01-01'] 

輸出:

以上, 就是關於 DatetimeIndex 要跟大家分享的內容了, 總結一下, 可以看到我們只要把日期列設置為索引列, 並且保證其數據類型是時間, 就可以利用這個索引靈活地操作數據了.

下面我們來看下關於 resample() 函數的使用:

df.Close.resample('M').mean() 

輸出:

Date
2016-07-31 99.473333 2016-08-31 107.665217 2016-09-30 110.857143 2016-10-31 115.707143 2016-11-30 110.154286 2016-12-31 114.335714 2017-01-31 119.570000 2017-02-28 133.713684 2017-03-31 140.617826 2017-04-30 142.886842 2017-05-31 152.227727 2017-06-30 147.831364 2017-07-31 143.625000 Freq: M, Name: Close, dtype: float64 

這里我們可以一步一步來看, 首先我們要獲取所有的閉市數據, 在這個數據基礎上又通過 resample() 函數加以加工, 函數里傳的參數是 M, 就是 month 的縮寫, 也就是我們要以月為單位, 也就是說要每個整月的數據, 那要每個月的什么值, 這個是必須要指定的, 否則計算機不知道是返回每個月的合計,還是最小值, 還是平均值等等, 所以后面用了 mean(), 也就是說要去平均值.

還可以將數據以圖表的形式輸出:

df.Close.resample('W').mean().plot() 

輸出:

以季度為單位輸出柱形圖:

df.Close.resample('Q').mean().plot(kind='bar') 

輸出:

關於 resample 的具體用法, 大家還是可以按照上節課介紹的, 通過快捷鍵 shift+tab 查看, 它的參數有很多種, 除了我們上面介紹的 M, W, Q, 還有 D, B 等等.

以上, 有問題就給我留言吧, 希望共同進步, enjoy~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM