連續三天講了 NumPy 之後,今天來換換口味,談談另外一個重要的 Library: Pandas
Pandas 名稱來自於 "Panel data",是一套用來操作並分析資料的 Python Library,比較特別的是,它可以幫助我們進行類似資料表 (excel) 的操作。
到現在我們看過了 Python, NumPy, 還有即將要介紹的 Pandas,到底什麼時候該用什麼工具好呢?
其實主要還是看使用情境與需求,當然如果只是小量的、簡單的計算,那平時用 Python 當中的 list 以及相關方法來處裡資料就夠了,不需要請出 NumPy 與 Pandas。
這三個工具在使用上有些不同的地方,簡單來說像是
隨著越來越熟悉不同工具的操作,我們將會越了解不同工具的特性,以及其使用場景,並在對的時間點使用
把 Pandas 加入到我們的專案中(通常也會把 NumPy 跟著一起加入)
import numpy as np
import pandas as pd
接下來先介紹 Pandas 主要的三種資料結構:Series, DataFrame, Index
Series 是一個一維的資料結構,建立的方法如下:
x = pd.Series([1,2,3,4,5])
取值的方式也跟 NumPy array 一樣,如果我們要取出第二個元素,可以用
x[1]
就會得到 2
如果我們要取出第二到第四個元素,可以用
x[1:4]
就會得到 2, 3, 4
那這樣看起來跟 NumPy 的一維陣列幾乎就一模一樣啊?當然還是有它不一樣的地方啦,要不然就不用特別介紹了。
在 NumPy 陣列當中,陣列的 index 是會自動產生的,會由 0 開始依序增加。在 Series 中,我們可以自定義 index。譬如這裡我們建立一個陣列 [1,2,3,4,5]
,其 index 分別為'a'
, 'b'
, 'c'
, 'd'
, 'e'
y = pd.Series([1,2,3,4,5], index=['a', 'b', 'c', 'd', 'e'])
當我們要取值的時候,就可以用我們設定的 index 來用,譬如
y['b']
我們將得到 2
這裡要注意的是,如果我們幫 Series 設定 index 的話,原本預設的數字 index 就會不能使用囉,也就是說,同一個 Series 不會有兩套 index 共存。
可以自訂 index 的話,那看起來不就很像是 Python 的 dict:我們可以自訂 key-value pair。沒錯,我們也可以把 dict 放入 Series 當中。譬如這裡有一個 dict x
x = {'dog':'woof', 'cat':'meow'}
然後把它變成 Series
y = pd.Series(x)
如果用 type()
去查看 y 的型別的話,會發現他是 pandas.core.series.Series
而不是 dict
了
如果我們把剛剛的 x 放入 np.array()
會變成什麼樣子呢?
z = np.array(y)
print(z)
會發現 z 只會是 x 這個 dict 裡面所有 value 的集合,print(z) 的結果會是
['woof' 'meow']
Pandas 的 Series 就先介紹到這邊,明天再來介紹更重要的 DataFrame 以及 Index!