前言
前面的基礎課程教會了大家 python 這個語言的特性,也帶各位認識了 python 的 package numpy
,在未來中會有更多好用的 package 我們將介紹給大家。注意我這邊使用的是 “介紹”,因為相較於基礎課程,python package 的學習,我們更講究的是方法尋找的能力。
課堂上我們會教導你這個套件主要的功能,如 numpy
主要處理矩陣、pandas
則像是 python 版的 excel,一些關於套件的概要介紹,不會涵蓋所有的 function,因為說實在的,如我也不會將全部的 function 記下來,只會記住最重要的核心,而其他有些功能背下來只會佔腦袋空間。
所以我們在課堂上教大家的是,知道套件主要的功能為何,基本的 function 有哪些,其他的就交給網路來告知我們吧。寫程式時,google 會協助我們找到解法,Stackoverflow 是我們的好朋友。
延伸閱讀-1:勇敢做唯一的自己:台大教授郭瑞祥的人生管理學 中的
人生管理第 3 課 走出去吧!勇敢投資自己,迎向未來
內文如下:
「上課的學習,就像是告訴你什麼是雞蛋、什麼麵粉;而下課後的作業,則是要勾起你的好奇心,讓你試試看,若把雞蛋、麵粉混和,是會變成蛋糕或義大利麵?在結果出來之前,沒人知道你會玩出什麼花樣,這不正是樂趣的所在?」
Search
How to search
- 明確化你的目標
- 正確的在 google 下對關鍵字
- 一個一個點開網站找解法,並套用。但不要直接 copy-paste,同樣情況的任務不會出現兩次,所以要去思考解法的來由
- 最後我會將我的問題及解法用
markdown
語法簡單的記錄起來(範例在下面會提到)
延伸閱讀-2:SlideShare- Markdown可以做什麼
Where to search
- Stackoverflow
最主要找尋的地方,類似 programmer版的知識+ - Github issue
通常 python package 的原始碼(source code) 都會放在 github 上,若有問題,有些人也會在這個平台發問。
例如:https://github.com/numpy/numpy/issues - CSDN: 大陸的程式部落格
Example
下面的範例是我之前想要用 sqlalchemy
將資料載入到 pandas.Dataframe
的格式中,但我不想先轉成 dict
再轉成 pandas.Dataframe
,所以想查找看看有沒有辦法優化。
- Why
Want to read data from sql database directily without any transform or boring work
簡易描述我的目標
2. How
- Starts from this page
- Document from pandas: pandas.read_sql
1. 因為我不知道在
pandas
的語法有沒有,所以我先查有沒有更快速的方法將sqlalchemy
的資料轉換進pandas.Dataframe
,我下的關鍵字是sqlalchemy pandas dataframe
就是這麼簡單的就找到我要的。2. 通常在 stackoverflow 只會獲得一個 function 名字,所以有時我會直接去找對應這個 function 的官方文件,以求更貼近我要的功能
3. 如上點所述, Stackoverflow 只有寫
df = pd.read_sql(query.statement, query.session.bind)
相對的在 pandas 的官方文件中則補上了相關的參數資訊pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
3. Sample code on sqlalchemy
- Add ‘statement’ after sqlalchemy query
- session.bind is your sql_link
pd.read_sql(
session.query(Complaint).filter(Complaint.id == 2).statement,
session.bind
)
簡單的記錄我對於 function 的了解
4. Other
- read_sql_table
Read SQL database table into a DataFrame. - read_sql_query
Read SQL query into a DataFrame.
在查找官方文件時,發現的 function,面對這些,我只會稍微留意,不會特別去記住。現在的知識不是用背的,而是當你要用的時候,懂的去哪裡找到。
5. Reference website
Conclusion
這篇主要是分享我寫程式時如何解決我未知的地方,寫程式永遠會有不懂的地方,而網路則是我們的老師,懂得如何去詢問他,將得到的東西及解法記錄下來 (coding note),內化成自己的東西。