Python 的 50+ 練習:資料科學學習手冊

更新於 2021/12/23閱讀時間約 6 分鐘

Yet another Python course

在設計「Python 的 50+ 練習:資料科學學習手冊」過程中,我時不時會做一些反省檢視,多半都是問自己同一個問題「各個線上課程平台,包含將要上架的 Hahow 好學校,已經有相當數量的 Python 課程,再開一個是不是在重複造輪呢?」
我想不是的,否則應該只會有一本 Python 書或者一個 Python 課程,很有可能是作者荷蘭電腦科學家 Guido van Rossum 或者 Python.org 所撰寫、所開設的,而不是像現在市面上玲瑯滿目的書籍與課程;每一個作者或者講師都在試圖用過來人的角度重新詮釋他們學習過程的體悟,遇到投緣的讀者或學生,就能產生好的學習效果。某個程度來看跟事業的選擇也類似,有時候不一定是考慮藍海或者紅海市場,也不一定是考慮競爭或者門檻,否則早些年的 Yahoo! 拍賣、露天拍賣與 PCHome 應該仍是我們雙十一、雙十二等各種購物促銷活動的首選平台,而非此刻的 Momo 購物與蝦皮購物。
早些幾年的時候會傾向要求自己去找出我的課程「比」別人的課程好的賣點是什麼,最近幾年則是更溫和了點,現在的想法是:Hahow 好學校上頭有讚譽有加的 Python 課程都很棒,我所設計的「Python 的 50+ 練習:資料科學學習手冊」希望能和這些好老師的好內容看齊,造福好學生。大概不是因為年紀大了變得鄉愿,應該是體悟到透過「比較、壓倒」倚賴外在來源所獲得的優越,難以跟內在藴育養成對自我價值的評估抗衡。

課程亮點

2020 年春季我開始以兼任講師的身份在台大共同教育中心、工管系與師大企管系開設長度是一個學期、共計三學分的選修課程,為了能適當地幫學生評分,我開始設計作業、考試以及批改測試,授課過程重新體悟國、高中時間上數學課,老師耳提面命地提醒「上課聽懂不代表就會了,要大量解題才能融會貫通」的精神。
學習程式設計與資料科學應用光是上課聽觀念講解以及進行範例操作還不夠,必須要再加上親自思考並且寫作練習題才能夠有良好的學習效果,因此從「SQL 的 50 道練習」開始,就設計了以 Exercise Based Learning 以練習作為基底的 LPAA 教學模型,把每個章節都設計成一個 Learn-Practice-Apply-Assess 的循環,期望在線上課程單向的教學中融入從做中學(Learning by doing)的機制。
資料分析師在工作時容易被詬病「無法寫作可重複使用的程式碼」,這除了跟多數的資料分析師為跨領域背景、撰寫程式時沒有寫作函數、類別的習慣有關,所以課程的所有練習題都規定要以函數或者類別完成,這個要求雖然無形提高了初學者的進入門檻,但在設計時提供了函數命名、參數命名以及結構模板,再搭配練習題詳解教學影片,學生除了能夠學到資料科學應用,在程式設計部分也能打下扎實的基本功。
一開始的課程命名是 Python 的 50 道練習,希望能夠和上一堂廣受好評的 SQL 的 50 道練習呼應,未來可以慢慢地積累其他 XXXX 的 50 道練習,成為我自己開設資料分析、程式語言課程的一個品牌系列,不過由於課程規劃了四大部分、二十個章節:
  1. Python 程式設計的基礎觀念:包含資料類別、資料結構類別、流程控制以及函數。
  2. Python 程式設計的進階觀念:包含類別、模組、Comprehensions、Generators、迭代器函數、函數型函數與環境管理。
  3. Python 資料科學的基礎:包含 NumPy、Pandas、Matplotlib 以及 Scikit-Learn 四個重要的資料科學模組。
  4. 資料科學的應用場景:包含資料載入、資料框操作、文字資料的操作、日期時間資料的操作、探索性資料分析與監督式學習。
覺得很難用五十題左右的練習題就能規劃完成,但是又不想要破壞 XXXX 的 50 道練習的品牌系列命名,靈機一動(萬分感謝給我超棒點子的老婆大大),調整成了 50+ 練習,只希望也有大佛之於大佛普拉斯萬分之一的微妙,事實上一個章節再怎麼精簡設計十道練習,也是將近兩百題的總數。

課程緣起

以程式處理、分析資料並且挖掘洞見的人才一直是職場上炙手可熱的經典款,他們從事將資料(Data)提煉為資訊(Information)的資料科學相關工作,包含取得資料、操作資料、探索資料、訓練模型來預測資料、溝通分享以及正式部署等場景,由於這些過程多半伴隨著重複性、自動化與規模化的要求,使用程式來實現就成為了現代資料科學的定義,因此從實務角度入門資料科學,必定要學習程式語言及如何透過該語言實踐各個資料科學應用場景。
根據資料科學家社群 Kaggle 在 2021 年針對網站會員所發出的問卷, Python 在資料科學家日常頻繁使用語言中排名第一、在資料科學家最推薦新手第一個去學習的語言中排名第一,學習 Python 程式設計與資料科學應用的重要性不言可喻。

行動呼籲

我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!如果您是符合下列描述的初學者:
  • 日常生活(包含工作、興趣、學習或研究)需要處理以及分析數據。
  • 對於數據分析、資料科學有興趣,未來想從事相關工作(資料分析師、資料工程師、資料科學家)。
  • 喜歡透過動手做練習題學習知識與技能。
邀請您加入我的 Hahow 好學校課程「Python 的 50+ 練習:資料科學學習手冊」,募資已經達標,預計於 2022–03–15 正式開課!

延伸閱讀

avatar-img
25會員
9內容數
這個出版專題會收錄原創的「約維安聯盟:在 Jupyter 星球上學習程式設計與資料分析」系列文章,從基礎寫到應用,在過程中與讀者一起慢慢變強,克服程式設計與資料分析的學習焦慮。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
郭耀仁的沙龍 的其他內容
若是以「世紀帝國二」來比喻約維安文明的演進,初級約維安的文明階段就像黑暗時代,中級約維安的文明階段就像封建時代,在這個文明階段,中級約維安需要學習基礎的程式設計能力,包含 SQL、Python 與 R。
Git 是一種版本控制軟體,它的運作模式跟 Google 文件、Dropbox 文件相似,能夠允許多位使用者同時編輯、檢視或回溯文件,並且詳實地記錄了修改的歷史紀錄。我們可以將 Git 比喻為一種更為嚴謹的協作文件。
透過 Markdown 能夠撰寫易於閱讀、撰寫的純文字,並進一步透過像是 pandoc 這樣的轉換工具,選擇性地輸出多樣化的格式(如 HTML、Word 或者 PDF。)
在探究與認識約維安文明的過程中,我們常會因為其技能集合複雜的組成:程式設計、資料分析甚至還有商業問題,而容易迷失焦點,究竟該文明的本質是什麼?在學習路途上該以什麼為重?
命令列不像圖形使用者介面如此的簡單直觀,對於初級約維安而言是一個難度不低的門檻,但可別因為這樣就略過了它,在未來的封建時代、城堡時代以及帝王時代,將會於安裝模組套件、專案環境管理以及使用雲端服務時大幅使用。
我們將約維安文明的發展分為四個階段:黑暗時代、封建時代、城堡時代與帝王時代,一位對於程式設計與資料分析完全陌生的初級約維安,會從地圖滿佈迷霧的黑暗時代開始探索,逐步發展到封建時代、城堡時代以至於帝王時代,過程中,若有經驗豐富的約維安指引,將能預期文明升級會更有效率。
若是以「世紀帝國二」來比喻約維安文明的演進,初級約維安的文明階段就像黑暗時代,中級約維安的文明階段就像封建時代,在這個文明階段,中級約維安需要學習基礎的程式設計能力,包含 SQL、Python 與 R。
Git 是一種版本控制軟體,它的運作模式跟 Google 文件、Dropbox 文件相似,能夠允許多位使用者同時編輯、檢視或回溯文件,並且詳實地記錄了修改的歷史紀錄。我們可以將 Git 比喻為一種更為嚴謹的協作文件。
透過 Markdown 能夠撰寫易於閱讀、撰寫的純文字,並進一步透過像是 pandoc 這樣的轉換工具,選擇性地輸出多樣化的格式(如 HTML、Word 或者 PDF。)
在探究與認識約維安文明的過程中,我們常會因為其技能集合複雜的組成:程式設計、資料分析甚至還有商業問題,而容易迷失焦點,究竟該文明的本質是什麼?在學習路途上該以什麼為重?
命令列不像圖形使用者介面如此的簡單直觀,對於初級約維安而言是一個難度不低的門檻,但可別因為這樣就略過了它,在未來的封建時代、城堡時代以及帝王時代,將會於安裝模組套件、專案環境管理以及使用雲端服務時大幅使用。
我們將約維安文明的發展分為四個階段:黑暗時代、封建時代、城堡時代與帝王時代,一位對於程式設計與資料分析完全陌生的初級約維安,會從地圖滿佈迷霧的黑暗時代開始探索,逐步發展到封建時代、城堡時代以至於帝王時代,過程中,若有經驗豐富的約維安指引,將能預期文明升級會更有效率。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
更快、更短、更即時是串流傳輸必要的元素, 而我們常常在使用Python請求API時都是等待式回應, 也就是一個請求過去之後, 待對方處理完畢後再行回應, 但假設需要下載的檔案、內容非常大時, 是不是使用者只能傻傻的等待整個傳輸結束後才能顯示? 這樣的使用者體驗也實在太糟糕了, 對於使用者來說除了完全
Thumbnail
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
Thumbnail
前段時間我們有介紹「【Python 軍火庫🧨 - websockets】雙向溝通的渠道」, 這種方式可以達到基本的連線沒問題,但隨著資安意識的抬頭, 我們的websocket連線也會需要在通道之上進行加密, 那麼我們將根據使用情境來教您如何選用適當的連線。 Server端 我們的Serve
Thumbnail
看到標題的朋友可能會覺得奇怪, 我們常常看到的不就是time.sleep嗎? 怎麼又多出了asyncio.sleep呢? 這兩者究竟差異在哪邊呢? 我們都知道sleep就是睡眠的意思, 那麼在程式的運作上就是等待, 等待一段時間之後繼續完成任務, time.sleep的部份很好理解, 就是在該段程
Thumbnail
序列化(serialization)是將資料結構或對象轉換為一個格式,可以被儲存到文件或記憶體中,或者可以透過網路傳輸到另一個系統環境。這使得資料可以在不同的系統之間進行交換,並在需要時重新建構回原始的資料結構。本文將介紹兩個好用的Python套件-JSON與Pickle,並比較兩者的不同。
Thumbnail
  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
一、什麼是變數?   變數是指用來代表某一種資料型態的符號,以非數字的符號來表達,可以是英文字母也可以是一個英文單字,不過python有一些英文字母不能被當作變數,我們稱作保留字,例如:False、None、True、and、is、not、or、......,之後會在介紹。
所有東西在電腦底層皆是位元(0或1),位元以定位記法來表示資料(如ASCII編碼中 01000001表示A),資料透過CPU內建的處理程序組成機械語言,機械語言能完成數學運算。但機械語言的表示0和1的組成,難以直接編寫程式,因此又設計出了一套用字母、符號、數字來對應機械語言的語法──組合語言,為了更
Thumbnail
幾週前開始線上學習 Python,一路完成了十九關的關卡,也就是十九堂基礎課程。整體來說前面一到十四關都不算難度高,但越到後面其實更需要耗費許多專注心力與邏輯思考,無奈自己時而處理其他日常工作,變成全神貫注學習的完整時間幾乎被打碎。所以到後半段,已經不太能花時間坐在電腦前想清楚一整段的代碼要怎麼布建
Thumbnail
一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
更快、更短、更即時是串流傳輸必要的元素, 而我們常常在使用Python請求API時都是等待式回應, 也就是一個請求過去之後, 待對方處理完畢後再行回應, 但假設需要下載的檔案、內容非常大時, 是不是使用者只能傻傻的等待整個傳輸結束後才能顯示? 這樣的使用者體驗也實在太糟糕了, 對於使用者來說除了完全
Thumbnail
我們在「【🎓 Python的深度問答集】torchaudio 對部分段落進行音訊解碼」有分享到如何對一包包的封包進行音訊解碼, 但隨著音檔越大, 最終解碼的速度會越來越慢, 而這並非串流的本意, 串流應該就像水管一樣, 收到多少資料就運算多少量, 並不會隨著累積的容量越大而導致效能下降。 但實際
Thumbnail
前段時間我們有介紹「【Python 軍火庫🧨 - websockets】雙向溝通的渠道」, 這種方式可以達到基本的連線沒問題,但隨著資安意識的抬頭, 我們的websocket連線也會需要在通道之上進行加密, 那麼我們將根據使用情境來教您如何選用適當的連線。 Server端 我們的Serve
Thumbnail
看到標題的朋友可能會覺得奇怪, 我們常常看到的不就是time.sleep嗎? 怎麼又多出了asyncio.sleep呢? 這兩者究竟差異在哪邊呢? 我們都知道sleep就是睡眠的意思, 那麼在程式的運作上就是等待, 等待一段時間之後繼續完成任務, time.sleep的部份很好理解, 就是在該段程
Thumbnail
序列化(serialization)是將資料結構或對象轉換為一個格式,可以被儲存到文件或記憶體中,或者可以透過網路傳輸到另一個系統環境。這使得資料可以在不同的系統之間進行交換,並在需要時重新建構回原始的資料結構。本文將介紹兩個好用的Python套件-JSON與Pickle,並比較兩者的不同。
Thumbnail
  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
一、什麼是變數?   變數是指用來代表某一種資料型態的符號,以非數字的符號來表達,可以是英文字母也可以是一個英文單字,不過python有一些英文字母不能被當作變數,我們稱作保留字,例如:False、None、True、and、is、not、or、......,之後會在介紹。
所有東西在電腦底層皆是位元(0或1),位元以定位記法來表示資料(如ASCII編碼中 01000001表示A),資料透過CPU內建的處理程序組成機械語言,機械語言能完成數學運算。但機械語言的表示0和1的組成,難以直接編寫程式,因此又設計出了一套用字母、符號、數字來對應機械語言的語法──組合語言,為了更
Thumbnail
幾週前開始線上學習 Python,一路完成了十九關的關卡,也就是十九堂基礎課程。整體來說前面一到十四關都不算難度高,但越到後面其實更需要耗費許多專注心力與邏輯思考,無奈自己時而處理其他日常工作,變成全神貫注學習的完整時間幾乎被打碎。所以到後半段,已經不太能花時間坐在電腦前想清楚一整段的代碼要怎麼布建
Thumbnail
一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma