iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
AI & Data

Machine Learning for Dummies系列 第 16

[Day 16] Hello Pandas (1)

  • 分享至 

  • xImage
  •  

連續三天講了 NumPy 之後,今天來換換口味,談談另外一個重要的 Library: Pandas

Hello Pandas!

Pandas 名稱來自於 "Panel data",是一套用來操作並分析資料的 Python Library,比較特別的是,它可以幫助我們進行類似資料表 (excel) 的操作。

等等,這麼多工具都在處理資料,到底用哪個好?

到現在我們看過了 Python, NumPy, 還有即將要介紹的 Pandas,到底什麼時候該用什麼工具好呢?

其實主要還是看使用情境與需求,當然如果只是小量的、簡單的計算,那平時用 Python 當中的 list 以及相關方法來處裡資料就夠了,不需要請出 NumPy 與 Pandas。

這三個工具在使用上有些不同的地方,簡單來說像是

  1. 一個 Python list 裡面可以放多種不同型態的元素,但一個 NumPy array 裡面只能放相同型態的元素
  2. 但 NumPy array 比起 Python list 有更多數學、統計計算的方法支援,計算速度也更快
  3. NumPy array 比起 Python list 可以做更高維度的操作
  4. Pandas 跟 NumPy 比起來,則又多了一些方法,同時可以使用 index

隨著越來越熟悉不同工具的操作,我們將會越了解不同工具的特性,以及其使用場景,並在對的時間點使用

Pandas 起手式

把 Pandas 加入到我們的專案中(通常也會把 NumPy 跟著一起加入)

import numpy as np
import pandas as pd

接下來先介紹 Pandas 主要的三種資料結構:Series, DataFrame, Index

Series

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 共存。

Imgur

可以自訂 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

Imgur

如果我們把剛剛的 x 放入 np.array() 會變成什麼樣子呢?

z = np.array(y)
print(z)

會發現 z 只會是 x 這個 dict 裡面所有 value 的集合,print(z) 的結果會是

['woof' 'meow']

Pandas 的 Series 就先介紹到這邊,明天再來介紹更重要的 DataFrame 以及 Index!


上一篇
[Day 15] Hello NumPy! (3)
下一篇
[Day 17] Hello Pandas (2)
系列文
Machine Learning for Dummies30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言