雖然很早就接觸過pandas模組,卻因為深度依賴numpy的原因,從沒有認真對待它。今天無意中發現,pandas最初是作為金融資料分析工具而開發出來,有些概念借鑑了r語言。我距離金融圈非常遙遠,難怪以前一直找不到使用它的必要性。現在我知道,pandas為時間序列分析提供了很好的支援,這一點也許可以給我的工作提供方便。
模組學習的第一步,自然是安裝。必須要感謝pip,自從py2.7.9內建pip之後,世界變得如此美好!
pip install pandas
匯入,測試一下模組是否可用。
import pandas as pd
網上檢索了一下(還是沒有認真去讀pandas的document),pandas大致有以下幾個核心的資料結構:
(1) series
series可以理解為一維陣列,陣列元素可以是不同的型別,甚至是物件——類似python的list物件。不過,series可以自行定義索引,從這個角度看,又類似python的dict物件。
a = pd.series()
b = pd.series([2,5,8])
c = pd.series([3,'x',b])
d = pd.series()
series的方法令人眼花繚亂,簡單嘗試了一下add,原以為是插入新的元素,結果卻是對每乙個元素做add,這和numpy.array的廣播函式是完全一樣的。
>>> b = pd.series([2,5,8])
>>> b
0 2
1 5
2 8
dtype: int64
>>> b = b.add(8)
>>> b
0 10
1 13
2 16
dtype: int64
>>> b = b.mod(3)
>>> b
0 1
1 1
2 1
dtype: int64阿斯頓
series有index, values, name, index.name等屬性,例如:
>>> b = pd.series([2,5,8])
>>> b.values
array([2, 5, 8], dtype=int64)
>>> b.index
rangeindex(start=0, stop=3, step=1)
(2) dataframe
dataframe的概念來自於r語言,可視作為series的容器(container)。dataframe是**型資料,既有行索引又有列索引,每列資料可以為不同型別資料(數值、字串、布林型值)。
>>> import numpy as np
>>> import pandas as pd
>>> pd.dataframe()
a b c d
0 1 2 3 4
1 2 3 4 5
>>> pd.dataframe(np.array([[1,2,3,4],[3,4,5,6]]),index=['one','two'])
0 1 2 3
one 1 2 3 4
two 3 4 5 6
>>> pd.dataframe([pd.series([11,12,13,14]),pd.series([21,22,23,24])])
0 1 2 3
0 11 12 13 14
1 21 22 23 24
dataframe物件同樣有一堆方法來實現分割、查詢、替換、轉換等功能。在我學習這些細節的時候,深深加劇了我對於r語言的恐懼。為了不給各位看官留下心理陰影,這裡就不詳細描述了。如有興趣深入研究,請參考《pandas資料結構》。
前言中提到,
pandas為時間序列分析提供了很好的支援,那麼,我們如何構建乙個時間序列的資料結構呢?
>>> index = pd.date_range('1/10/2018', periods=5)
>>> pd.dataframe(np.random.randn(5, 3), index=index, columns=list('abc'))
a b c
2018-01-10 -1.631258 -0.568379 0.319282
2018-01-11 -0.708094 1.107151 1.364287
2018-01-12 0.649978 -0.494478 1.076287
2018-01-13 0.079650 -1.634735 0.794655
2018-01-14 0.330134 0.890559 0.735603
pandas學習筆記
import numpy as np import pandas as pd obj2 pd.series 4,7,5,3 index d b a c obj2 out 99 d 4 b 7 a 5 c 3 dtype int64 a b pd.series a bout 102 a 1 b 2 c...
pandas學習筆記
1 建立物件,瀏覽資料 建立物件,瀏覽資料 import pandas as pd import numpy as np import matplotlib.pyplot as plt 建立series s pd.series 1,2,4,6,np.nan,9,10 index list abcde...
pandas學習筆記
1.series 類似numpy中的一維陣列,表示為索引 從0開始 和值。建立 import pandas as pd,numpy as np s1 pd.series np.arange 10 s2 pd.series 12 2,5 s3 pd.series 含有的屬性 s1.values s1....