Function 方法操作 — 模組化商務程式的整合者

行銷資料科學
13 min readNov 11, 2020

--

昨日的文章分享,我們分析了資料科學家的知識領域及工作內容。Python亦是資料科學家進行分析的重要工具。在學習Python程式語法的過程中,當我們對基本語法都有一定的熟悉程度,為了要提昇分析的效率,Function的使用就變得很重要了。

什麼是 Function?

“ Function ”,可以直接翻譯作「功能」、或者在數學上稱作「函數」,顧名思義就是一個可以達成期望結果的行為或流程。在 Function 的執行中,就像是在函數中輸入一個變數 x ,經由函式的變化,輸出成想要的結果 y
在運用Python進行數據分析時,Function 的使用非常的重要,它可以協助我們化繁為簡,可以更有組織的管理方析的程式。

為何需要使用 Function?

Function 有助於將我們的程式碼分解為比較小的模塊,當編寫的程式越大,就更需要使用 Function 來進行組織性的管理。

撰寫程式的過程中,隨著內容越多越複雜,難免會需要使用同樣的程式碼來進行操作。為了避免重複使用相同的程式碼,我們將這些程式打包放入行李箱內,隨時都可以拿出來使用。

Function 三大特點:

  • 可重複利用
  • 易讀、易偵錯
  • 模組化

Function 函式架構

def Function_Name(Parameter):
" Introduction "
Main Code
return

Function 的主要架構分成以下這幾項:

  1. def (define) 定義函式:
    在建立函式的開頭打上簡短的三個字 def,宣告定義一個函數的開始。
  2. Function_Name 函式名稱:
    函式名稱可以自由命名,但建議將名稱設定與函式中的內容相關,因為在許多程式碼的編寫之後,就會很容易忘記此函式的功能為何。好的命名可以幫助我們管理後續所有的分析規劃及進行。
  3. Parameter 參數:
    將數值或其他變數提供至 Function 中,給予函式進行運算及使用。
  4. Introduction (docstring) 函式說明:
    它所扮演的角色,就如同一個 “使用說明書”,作為解釋這項函式用意的功能,可自行選擇是否要加入,(若是想要將程式進行模組化,本文建議加上此說明)。假如之後忘記了某個函式的使用方式,可以用 help(Function_Name) 來查看原本填入的函式說明。
  5. Main Code 主要程式碼:
    若是想要 Function 執行的程式碼都記錄在這邊,函式內的每行程式碼前方都要加入縮排 (Indentation),才會被偵測到是屬於 同一Function 內。
  6. Return 回傳值:
    可以將 Function 執行的結果回傳出函式之外,以供函式外的程式使用。

如何運行

parameter > main code > output value

如上所示,一個 Function 的運作流程分為三個部分:

  • 輸入參數:提供所需數值資料給函式中。
  • 函式轉換:將已輸入參數套入到工作程序中進行運算。
  • 輸出數值:輸出運算結果。

舉例如下程式碼:

def sum_three(a,b,c):
"""
This function will sum all the numbers in the parameter.
"""
output = a + b + c
print('sum =',output)
return output

光是定義出一個函式是不夠的,那該如何使用呢?如同以下的方法,只要打上 Function_Name(Value)就可以簡單地將函式呼叫出來,如下程式碼。

sum_three(3,6,9)>>> sum = 18
18

預設參數值

定義 Function 時,我們可以在參數上加入預設的值,當函式被呼叫出來時,如果沒有輸入完整的參數值,函式就會自動使用預設的值來代替,如下程式碼。

def sum_three(a=1,b=2,c=3):
"""
This function will sum all the numbers in the parameter.
"""
output = a + b + c
print('sum =',output)
return output
sum_three(3,6)>>> sum = 12
12

另外,在輸入參數值的時候要注意參數要求的型態為何,若要求的是數字卻輸入字符串,那就會出現錯誤訊息。例如 sum_three(1,2,'a'),那麼結果就會顯示出 TypeError 表示錯誤。

變數範圍

在 Function 內部建立的變數不會影響到 Function 外的變數。

這邊跟各位稍微說明一下變數領域的概念,簡單來說:
全域變數 (global variable) 就是建立在 Function 外的變數;
區域變數 (local variable) 就是建立在 Function 內的變數。

「全域變數」無法直接在函式內使用,但是可以使用 global 把全域變數引入函式之中。

x = 10def example():
global x
print(x + 5)
example()>>> 15

「區域變數」亦無法直接在函式外使用,所以需要利用 return 來將區域變數回傳出函式之外。

回傳值

def sum_three(a,b,c):
"""
This function will sum all the numbers in the parameter.
"""
output = a + b + c
print('sum =',output)
return output

由於 return 只能傳出區域變數中的 “值”,所以我們需要另外建立一個新的變數來接收它的值。

x = sum_three(3,6,9)
>>> sum = 18
x
>>> 18

實作練習

看了以上的說明,現在來看看大家的實力吧~

請根據以下的公式:
Fahrenheit = (Celsius * 9/5) + 32
建立一個可以從攝氏溫度轉成華氏溫度的轉換器。

解答請參考文末程式碼連結~(先思考一下,不要急著看答案哦!)

進階:模組程式

在學習完 Function 的基礎操作之後,接下來 就跟大家介紹 Function 在資料分析上最常被使用到的地方 — 模組化程式。

什麼是模組?

模組 (Module) 就是包含了許多 Function 在內,皆使用於類似功能的一個檔案。由於把各個函式以及主程式碼放在同一個檔案之中很容易使我們眼花撩亂,因此將這些函式另外再放入別的檔案當中,並稱作「模組程式」,而剩下的主程式碼則稱作「核心程式」。在「核心程式」中會將「模組程式」導入,並引用其中的函式。

以下我們用範例來跟大家介紹:

範例介紹

以一個計算加減乘除的程式碼為例 (example.py),將各個運算法編寫成個別的 Function 並直接做使用,如圖一

大家可能認為這樣的程式碼並沒有出現什麼問題,但如果延伸到資料處理型的大程式中,就會發現每次在開啟程式碼的時候都要先滑過一連串的函式,才能夠進入到主程式碼當中執行,這會讓您覺得非常的不便。因此,模組程式的使用就很重要囉!

圖一、example.py

此時,我們可以將程式碼分成「模組程式」(calculator.py),將各個函式放入其中,如圖二

圖二、calculator.py

再創立一個「核心程式」的檔案 (main.py),將 calculator 檔案導入 (import) ,這樣就可以使用 calculator.py 之中的函式,如圖三

圖三、main.py

程式經過模組化後,除了在檢閱上增加其易讀性外,執行時也可以輕易地偵錯,一旦出現錯誤,就能夠直接跳到該模組檔案中去尋找並修正錯誤。

Function 及模組化程式是在專案分析時經常會用到的功能,熟練並善用它,不管是在分析案的規劃及執行,或是團隊合作的分析案都能提昇執行的效率!!

以上就是 Function 方法以及模組化程式的介紹~
希望大家對於 Function 的各項特性能有更深入的了解。

如果喜歡我的文章的話請多給我一些掌聲吧!!

Jupiter Notebook 程式碼連結在此

作者:黃鈺淇(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

您可能有興趣:

📢TMR全新線上直播課程

【直播Workshop-線上實戰講堂】
《用AI進行顧客資料分析與銷售判斷》

🔹直播日期:11/07(六)
🔹直播時間:14:00–17:00
🔹課程詳情:https://bit.ly/2RHOwT6

【課程簡介】
📌Python技法結合商業思維,一步步建立數值化思考能力
📌機器學習分析顧客行為,找出最佳獲利模式
📌輿情數據結合STP策略,洞察潛在藍海市場
📌專業講師實案講解,帶您快速落地應用

❗現在購買還有多種好康優惠❗
💥早鳥價 :$550(7折)
💥兩人以上同行:$500(64折)
(原價:$780)

📢趕緊號召親朋好友一起上課~
🏃‍♂前往報名:https://bit.ly/2RHOwT6

— — — — — — — — — — — — — —

👨‍🎓TMR為您量身打造「全方位數據課程」

熱門Python程式語言結合全新商業思維,快來終生學習不間斷!

【TMR】 X 【 好學校】
👨‍💼Python商業全系列數位課程👨‍💼

#行銷人必學實用Python課程

《 Python 0到1 基礎商業數據分析實戰 》
💥 價格 :3188
👉 從0開始:手把手從頭學習,適合完全沒學過的學員
👉 商業應用全台最多:傳授市面上少見的Python實務應用
👉 網路輿情爬蟲演練:網路輿情商務爬蟲技法
👉 競品分析:競爭價值定位圖找出藍海策略
👉 貨架陳列視覺化:解析行銷策略及廣告預算配置方法
🛒 前往購買:https://hahow.in/cr/python0-1

《 顧客分類大師:Python x RFM 會員經營新觀點 》
💥 價格 :2388

🎯 Python X RFM最佳拍檔,輕鬆鎖定潛(錢)在顧客
不需要出門,在家也能學習專業課程,讓你擁有會員經營的新思維!

本課程以五個面向為您的企業,做更深入的健診:
👉 市場面:以最基本的顧客消費資料(頻率、購買次數),將現有顧客區隔分類。
👉 財務面:計算出在每個顧客身上所賺得毛利,在不同客群中的獲利。
👉 行銷面:藉由 RFM 的分析進行行銷預算重新分配。
👉 產品面:觀察在不同客群中,各個產品的銷售狀況。
👉 顧客回購面:分析顧客的購買週期後,進行精準推薦。
🛒 前往購買:https://hahow.in/cr/rfm-model

《 AI 行銷學:用 Python 機器學習創造商業新價值 》
💥 價格 :3888
👉 全台第一門Python機器學習線上課程
👉 教導你快速理解Logistic Regression, XGBoost, Random Forest商務機器學習模型。
👉 建構老闆或主管們看得懂的模型評估指標,讓精準行銷方案更容易被接受且推出
👉 如何利用機器學習找出消費者心中的重要變數及客樣貌與特徵,做到個體及總體的商品推薦?
👉 如何從數以萬計的消費資料中偵測可能的詐欺名單?
🛒 前往購買:https://hahow.in/cr/python-ml

#實用投資分析課程

《 用 Python 打造自己的股票小秘書 》
💥 價格 :4288
👉 打造自動推播機器人,趁著股市最近低迷,找出最適進場點
👉 「到價提醒」功能,大大提升投資便利性
👉 了解Python雲端服務架構,完整的專案流程
👉 孰悉No SQL資料庫操作,未來大數據的基礎
🛒 前往購買:https://hahow.in/cr/stock-secretary

#好學校企業百大課程之一:

台科 EMBA 年年爆滿的一門 Word 課(A系列)
💥 價格 :950
👉 系統性學習Office軟體功能,教您別人不知道的快捷鍵
👉 調整不受控制的行距與精準對齊排版
👉 一鍵轉換Word到Excel
👉 有效率處理企畫書、畢業論文、小組報告、公文等
🛒 前往購買:https://hahow.in/cr/tmr-word1

台科 EMBA 年年爆滿的一門 Word 課(B+C系列)
💥 價格 :1,050
👉 傳授獨家快捷鍵字典
👉 分享好用的大綱模式,讓文章處理更有效率
👉 建立大綱模式、多層次清單、目錄與圖表目錄,掌握文件編輯規則
👉 優化文章的邏輯架構
🛒 前往購買:https://hahow.in/cr/tmr-word2

— — — — — — — — — — — — — — — — -

【TMR】 X 【工研院】
🏭工業4.0大數據智慧應用課程🏭

《Python工業4.0人工智慧:製程資料處理大師》

製程數據資料 X 資料科學,
為您開啟工業人工智慧領域的大門!
👉全球前十大智慧製程案例實戰
👉專業講師手把手帶您入門製程資料處理分析
👉課後完整模組心法讓您通通帶回家

💥價格 : 2,800
🏃趕緊手刀前往購買:https://bit.ly/39koNbn

— — — — — — — — — — — — — — — — -

2020課程地圖

💪 點我看更多

🏆 國內第一本行銷資料科學專書

💪 點我看書本資訊

🏆 國內第一本行銷資料科學 ” 實作 ” 專書

💪 點我看書本資訊

🏆國內第一本「股票小祕書」專書

附上購書網址~ 國外的朋友也可以使用博客來與金石堂的通路轉運到國外哦!

  1. 天瓏書局:http://bit.ly/stock-secretaryBot
  2. 博客來:https://www.books.com.tw/products/0010833772

--

--

行銷資料科學
行銷資料科學

Written by 行銷資料科學

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR

No responses yet