一、前言
嗨大家好,這章節就要帶給大家 Python的核心:Pandas,如果說 Python 之所以可以成為數據處理的王者,這套件功不可沒啊!
這套件所能帶來的方便程度,從數據處理、自動分類、做表格、補缺值等等,基本上只有你想不到,沒有他做不到的,如此強大的套件,肯定得趕快來一探究竟,
這套件功能非常多,所以我會將其分成幾個章節來講,其中原因也很簡單,因為功能繁雜,故每章節如果啥都抓再一起講,這會讓文章太長而且顯得很混亂,話不多說馬上開始!
二、基本使用
Pandas 由兩個主要內容組成:Series 與 DataFrame。前者可以理解成 Excel 表格中的欄位(從上到下一整串),後者可以理解成一整張表格。
因為此套件不是 Python 內建,所以要使用前,須先執行安裝 pip install pandas,或點擊 Pycharm 左下方的 Terminal,輸入 pip install pandas ,等待它跑一下就可以快速完成安裝。
這邊也需要說一下,如果是 mac M1 系列的 user,因為 Pandas 在我寫這篇文章的時候,似乎還沒有完全跟 M1 系統整合好,所以安裝時會特別久,這是正常的,別太緊張哦!
1. Serise:
可以把 Serise 想成一欄 EXCEL 的欄位,只有每個資料的順序,以及該位置的值,欄位就只有一欄,這樣比較好理解
import pandas as pd
# series系列
series_1 = pd.Series([4, 6, 1, 3]) # 將一個 list 裝進 pandas 內
print(series_1)
結果:(還會告訴你那些值是屬於哪種型別)
0 4
1 6
2 1
3 3
dtype: int64
serise 的操作有以下幾種方式:
import pandas as pd
weight = pd.Series([64, 48, 82, 104], index=['jack', 'jimmy', 'john', 'joe'])
print(weight)
print(weight[0])
print(weight[1:3])
print(weight['joe'])
是不是看起來很間單,很像是 list的操作方式卻又可以用 dict的方式操作 對吧?就是那麼神奇,pandas 會自動根據你的呼叫方式,去判斷現在應該做哪些動作。
所以如果你不是非常確定資料丟進去會長成怎樣的話,別擔心,直接丟進去就對了,他會幫你想辦法的!
那直接看結果,這邊比較簡單,所以程式對照一下就可以理解囉:
# print(weight)
jack 64
jimmy 48
john 82
joe 104
dtype: int64
#針對四個數值給予對應名稱,與字典的概念類似,而並非只是使用數據。以上的資料仍有順序存在。
# print(weight[0])
64
# 輸入指令選擇序位0時,則會回傳位在序位0的數值,雖然index函式中有改每一筆資料的名稱,但回傳資料仍只會輸出值。
# print(weight[1:3])
jimmy 48
john 82
dtype: int64
# 這裡的語法邏輯跟list相同做切片,但當內容不只一項時,會顯示index與value的結果。
# print(weight['joe'])
104
# 同時具備有序對的鍵值資料庫(key-value)用法,除了呼叫位置外,也能對應key的位置輸出value!
2. Dataframe:
這邊開始就是重頭戲囉!因為多數時候,我們的資料都很難只是一個欄位就可以處理。
例如會員資料,可能就會帶上名稱、帳號、餘額等等屬於該會員的多數資料,所以當會員人數很多時,就會是表格形式呈現囉
所以當一個欄位完成後,多個欄位就成了雙維度資料(DataFrame),假設以下是一份字典資料,其中每個key都對應一筆清單形式的值:
import pandas as pd
dic = {
"date": ['2020/10/15', '2020/10/16', '2020/10/17', '2020/10/18', '2020/10/19', '2020/10/20', '2020/10/21'],
"open": [200, 300, 400, 500, 600, 700, 800],
"close": [150, 250, 350, 450, 550, 650, 750],
}
df = pd.DataFrame(dic)
# 指定index
df = pd.DataFrame(dic, index=df['date'])
# print出最前面五筆資料
print(df.head(5))
# print出最後面五筆資料
print(df.tail(5))
將相關資料做成表格後,最重要的就是 index 要改成我們可以 call 的資料,因為 index在處理上比較少使用 0,1,2… 來處理
更多的是直接設定 index = 某個欄位(以範例而言是date的欄位),然後後續像是字典般的直接 call 來用就可以囉:
三、小結
這章節快速帶到基本上的主要兩種類別與其基本的使用方式,相關細節還有很多,pandas更像是包山包海的工具包,但要熟練的話需要有一些範例多加練習才有辦法,
第一章節這邊先讓各位試試水溫,如果還OK的話,我們接著往下看囉!