pandas模組學習筆記

2021-08-14 23:13:33 字數 2530 閱讀 8464

雖然很早就接觸過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....