close

我們在撰寫python時,很常是要花費好幾天的時間去撰寫,也需要分成好幾部份去抓取不同資料,或是利用不同公式去整理資料,如果我們撰寫過程中或是以後需要用到相同公式時,我們沒將公式存取起來就需要重新再寫一次,這樣相當的花費時間

所以陳陳今天就來教大家如何將寫好的公式變成自訂的函式,我們就是要用到def

 

【如何撰寫python函式】

其實要定義函式相當的簡單,公式如下

def 函式名稱(參數):

       程式碼

         return(要回傳的答案)

1. 宣告 : 我們會利用def來為我們的function定義一個名稱,也能在掛號內設定參數

2. 程式碼內容 : 這裡就是將我們先前一段一段寫好的程式碼全部複製到這裡來

3. return : 這裡的掛號內要輸入我們未來在import函式時所要得到的答案

我們就用實例來說明吧!!

 

【實例示範】

今天我拿一份台指期某段時間的每筆交易資料來示範

我的目的是要將資料整理一下,以方便未來要使用該資料時能直接import這個函式就好

首先我們在寫程式時一定都是先一段一段的撰寫,那今天陳陳也一段一段的撰寫給大家看

一開始我要先將csv檔資料打開來看一下需要怎修改

   data = open("TXFL8-I020.csv").readlines()
   data

所以我們利用open將檔案名為TXFL8-I020.csv開啟來,並利用readlines將資料一行一行讀取出來

image

現在我們的字串是一大串,我們必須將每一筆資料也就是每一行變成單獨的串列,就是'20181122,084500002000,TXFL8,9766,510,128,510,111,186\n',分別代表日期、時間、期貨名稱、成交價等等,並將裡面的各個代表變成一個字串

   data0 = [line.strip("\n").split(",") for line in data]
   data0

我們利用for迴圈將資料一段一段作整理,並利用strip將"\n"刪除,再利用split將有","的部分隔開,就會形成以下的字串

這樣我們未來想抓取某部分的資料就輕易抓取,像是我們只要交易日期,那我們就能用i[0]加上for迴圈來抓取,這我們後面會示範

image

到這裡我們的資料其實已經大概整理好了,剩下的就是你需要甚麼的功能,像是我們上面提到的,我們能抓我們資料內只有日期的部分

   date = [i[0] for i in data0]
   sorted(set(date))

這裡我們利用for迴圈抓取每串列的第0項資料,也就是我們交易日期的部分

但因為式逐筆交易,所以每天會有很多重複的日期,所以我們利用sorted抓取不重複的日期,並利用set做順序的排列

有人會問單獨抓取日期要幹嘛?

單獨抓取日期的話如果未來要畫成圖時就會用的到,但現在可能沒想到,其實函式也能等你需要用到時,並且你覺得未來會不斷重複用到時再來定義也行

image

接下來就是進入我們最重要也是最後的環節了,那就是定義並儲存函式

我們就將我們上方所整理的資料來定義

其實就很簡單

第一行就式def一個名稱,並將程式碼複製貼上,最後再return我們要的最終答案,這樣就大功告成了

image

接下來就是將定義的函式儲存起來,好讓我們未來能方便使用

我們首先就是將檔案名稱改成英文名稱,這樣import才能用

陳陳就將名稱定義為getfuture_function

接下來就是按下File → Dowload as → 要存成Python(.py)檔

並將存好的py檔放到我們python工作底稿區,這樣我們就能import了

image

接下來你能再開啟一個新的jupyter notebook後import我們的py檔,這樣就能使用裡面我們定義好的def了

image

 

image

 

相關文章

-----------------------------------------------------------------------------------

 

 

 

 

arrow
arrow
    創作者介紹
    創作者 陳陳 的頭像
    陳陳

    陳陳的嘉理

    陳陳 發表在 痞客邦 留言(0) 人氣()