這一小節要介紹兩個內容, 一個是 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 等等.
本作品採用《CC 協議》,轉載必須註明作者和本文連結