數據處理的王者 Pandas-Python 套件使用(二)

一、前言

嗨大家好,這章節就要帶給大家 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的話,我們接著往下看囉!

延伸閱讀:


量化通粉絲社群,一起討論程式交易!

加入LINE匿名群組量化通QuantPass」無壓力討論與分享!

追蹤量化通的粉絲專頁量化通QuantPass」即時獲取實用的資源!

python_course_all_1920X400
RoWay
RoWay

多年投資經驗的兩岸三地操盤手,曾任海外資產管理公司交易平台的產品經理、與各外商投資公司合作開發各式交易策略與系統。

擅長用Python執行資料蒐集、整理、分析與交易;也善於用Multicharts、MetaTrader等系統建構並回測期貨、期權、區塊鏈策略進而完成投資組合管理。

文章: 26

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *