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

一、前言

嗨大家好,這章節就要帶給大家 Python的核心:Pandas,如果說 Python 之所以可以成為數據處理的王者,這套件功不可沒啊!

這套件所能帶來的方便程度,從數據處理、自動分類、做表格、補缺值等等,基本上只有你想不到,沒有他做不到的,如此強大的套件,肯定得趕快來一探究竟,

這套件功能非常多,所以我會將其分成幾個章節來講,其中原因也很簡單,因為功能繁雜,故每章節如果啥都抓再一起講,這會讓文章太長而且顯得很混亂,話不多說馬上開始!

立即訂閱電子報,掌握最新資訊!

    電子郵件

    有興趣的主題
    量化交易金融知識台灣股市國內期貨海外期貨虛擬貨幣

    有興趣的量化交易軟體/平台
    不清楚MultiChartsTradingViewPythonXQMT4MT5

    還有什麼詢問的?

    【早鳥報名中】元富證券 X 量化通 模擬量化交易競賽

    好富投 1920x400
    好富投 978x258

    點我了解更多資訊


    二、基本使用

    Pandas 由兩個主要內容組成:Series 與 DataFrame。前者可以理解成 Excel 表格中的欄位(從上到下一整串),後者可以理解成一整張表格。

    因為此套件不是 Python 內建,所以要使用前,須先執行安裝 pip install pandas,或點擊 Pycharm 左下方的 Terminal,輸入 pip install pandas ,等待它跑一下就可以快速完成安裝。

    這邊也需要說一下,如果是 mac M1 系列的 user,因為 Pandas 在我寫這篇文章的時候,似乎還沒有完全跟 M1 系統整合好,所以安裝時會特別久,這是正常的,別太緊張哦!

    Py 101209161710
    Py 101209161711

    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的話,我們接著往下看囉!

      電子郵件

      有興趣的主題
      量化交易金融知識台灣股市國內期貨海外期貨虛擬貨幣

      有興趣的量化交易軟體/平台
      不清楚MultiChartsTradingViewPythonXQMT4MT5

      還有什麼詢問的?


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

      加入LINE社群量化交易討論群」無壓力討論與分享!

      加入臉書社團「程式交易 Taiwan」即時獲取實用的資源!

      RoWay
      RoWay

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

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

      文章: 28

      發佈留言

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