我們在撰寫python時,很常是要花費好幾天的時間去撰寫,也需要分成好幾部份去抓取不同資料,或是利用不同公式去整理資料,如果我們撰寫過程中或是以後需要用到相同公式時,我們沒將公式存取起來就需要重新再寫一次,這樣相當的花費時間
所以陳陳今天就來教大家如何將寫好的公式變成自訂的函式,我們就是要用到def
【如何撰寫python函式】
其實要定義函式相當的簡單,公式如下
def 函式名稱(參數):
程式碼
return(要回傳的答案)
1. 宣告 : 我們會利用def來為我們的function定義一個名稱,也能在掛號內設定參數
2. 程式碼內容 : 這裡就是將我們先前一段一段寫好的程式碼全部複製到這裡來
3. return : 這裡的掛號內要輸入我們未來在import函式時所要得到的答案
我們就用實例來說明吧!!
【實例示範】
今天我拿一份台指期某段時間的每筆交易資料來示範
我的目的是要將資料整理一下,以方便未來要使用該資料時能直接import這個函式就好
首先我們在寫程式時一定都是先一段一段的撰寫,那今天陳陳也一段一段的撰寫給大家看
一開始我要先將csv檔資料打開來看一下需要怎修改
1 data = open("TXFL8-I020.csv").readlines()
2 data
所以我們利用open將檔案名為TXFL8-I020.csv開啟來,並利用readlines將資料一行一行讀取出來
現在我們的字串是一大串,我們必須將每一筆資料也就是每一行變成單獨的串列,就是'20181122,084500002000,TXFL8,9766,510,128,510,111,186\n',分別代表日期、時間、期貨名稱、成交價等等,並將裡面的各個代表變成一個字串
3 data0 = [line.strip("\n").split(",") for line in data]
4 data0
我們利用for迴圈將資料一段一段作整理,並利用strip將"\n"刪除,再利用split將有","的部分隔開,就會形成以下的字串
這樣我們未來想抓取某部分的資料就輕易抓取,像是我們只要交易日期,那我們就能用i[0]加上for迴圈來抓取,這我們後面會示範
到這裡我們的資料其實已經大概整理好了,剩下的就是你需要甚麼的功能,像是我們上面提到的,我們能抓我們資料內只有日期的部分
3 date = [i[0] for i in data0]
4 sorted(set(date))
這裡我們利用for迴圈抓取每串列的第0項資料,也就是我們交易日期的部分
但因為式逐筆交易,所以每天會有很多重複的日期,所以我們利用sorted抓取不重複的日期,並利用set做順序的排列
有人會問單獨抓取日期要幹嘛?
單獨抓取日期的話如果未來要畫成圖時就會用的到,但現在可能沒想到,其實函式也能等你需要用到時,並且你覺得未來會不斷重複用到時再來定義也行
接下來就是進入我們最重要也是最後的環節了,那就是定義並儲存函式
我們就將我們上方所整理的資料來定義
其實就很簡單
第一行就式def一個名稱,並將程式碼複製貼上,最後再return我們要的最終答案,這樣就大功告成了
接下來就是將定義的函式儲存起來,好讓我們未來能方便使用
我們首先就是將檔案名稱改成英文名稱,這樣import才能用
陳陳就將名稱定義為getfuture_function
接下來就是按下File → Dowload as → 要存成Python(.py)檔
並將存好的py檔放到我們python工作底稿區,這樣我們就能import了
接下來你能再開啟一個新的jupyter notebook後import我們的py檔,這樣就能使用裡面我們定義好的def了
相關文章
-----------------------------------------------------------------------------------
留言列表