進階程式設計 (Advance Computer Programming)
上課時間 :
成績(資工系)週五 5,6,7 (1:10 pm~ 4:00 pm), 上課地點 : I533
AU x University AWSome DAY (2021/5/4, Tueday, 9am-12am) 需要事先報名)
TA:Oktomy(chayadions@gmail.com)(I533, ext: 1785)
教科書:
Python最強入門邁向頂尖高手之路:王者歸來(第二版)全彩版
作者:洪錦魁 ,出版商 深智數位股份有限公司, 出版日期 2020-09-17, ISBN 9789865501532
20201204Python頂尖高手之路第2版讀者資源.zip (範例程式碼)
參考書:
Python網路爬蟲與資料視覺化應用實務 作者:陳允傑 旗標 書號:FT748, ISBN:9789863125624 (2018)
Code Example
旗標 林志成先生 0912-563-725
CHAPTER 4 使用 CSS 選擇器爬取資料
(1) Tools/CSS選擇器互動測試工具/SelectorTester.html
(2) Selector Gadget (for Chrome)
https://www.flag.com.tw/books/school
4-4 Google Chrome 開發人員工具
專任教授
按 F12 或 Ctrl + Shitf + i
References:
如何獲取資料:擷取網頁內容(上)(from: 郭耀仁 Yao-Jen Kuo)
請用 網路爬蟲 到亞大資工系網頁擷取出 專任教授
(姓名+學歷+辦公室+分機+E-mail)
CodeExample:
WebRobot_AU_CSIE_Downlaod_Prof_jdwang2020_5_21.7z(如何改進缺少欄位? )
思考題
(+1%)下載 (姓名+學歷+辦公室+分機+E-mail)
專任教授
專任副教授
專任助理教授
=> 儲存成一個 CSV檔案 (欄位名稱:級職,姓名,學歷,辦公室,分機,E-mail) (CSIE_ALL_SFaculty_YourID_Date.CSV)
(*)CHAPTER 5 走訪 HTML 網頁取出資料與資料儲存
5-4 store Data to CSV or JSON file
Ch5_4_1.py (read CSV)
Ch5_4_1a.py (write CSV)
Ch5_4_1b.py
(Win: F12, Mac:Fn+F12)
(W3Shool: https://www.w3schools.com/html/html_media.asp )
(Cookic 突破PTT 八卦版十八禁限制)https://www.ptt.cc/ask/over18?from=%2Fbbs%2FGossiping%2Findex.html
(Name為over18、Value為1的Cookie)
Ch5_4_2.py (dumps(): dictionary to string)(loads(): string to dictionary)
Ch5_4_2a.py (json to file)
Ch5_4_2b.py (file to json )
Ch5_4_2c.py (Google query to JSON)
https://www.googleapis.com/books/v1/volumes?maxResults=5&q=Python&projection=lite
WebRobot_AU_CSIE_Downlaod_Prof_jdwang2020_6_4.7z(如何改進? )
思考題
(+1%) 生醫系 專任教師
=> 儲存成一個 CSV檔案 (欄位名稱"中文姓名","英文姓名","職稱","學歷","Degree":"","Building":'',"辦公室","分機","E-mail","研究領域") (BIME_ALL_Faculty_YourID_Date.CSV)
(+1%) 行動商務與多媒體設計學系
=> 儲存成一個 CSV檔案 (欄位名稱"中文姓名","職稱","學歷","Degree":"","Building":'',"辦公室","分機","E-mail","專長(研究領域)") (MCMA_ALL_Faculty_YourID_Date.CSV)
CHAPTER 10 將爬取資料存入 MySQL 資料庫
10-3 MySQL 資料庫
Viewer for PHP (?)
AppServ : Apache + PHP + MYSQL – AppServ (MySQL :root, password)
HeidiSQL (heidisql.exe) + (MySQL :root, password) + mybooks.sql
HeidiSQL=>DB: mybooks (select * from books)
HeidiSQL=>DB: mybooks (select * from books where category= "程式設計")
10-5 將資料存入MySQL 資料庫
install PySQL module => (anacoda prompt> pip install PyMySQL)
Ch10_5.py
Ch10_5a.py(CSV)
Ch10_5b.py(JSON)
參考程式:
WebRobot_AU_CSIE_DownLoad_Prof_ToDatabase.7z(亞大資工系教師網頁)
install PySQL module => (anacoda prompt> pip install PyMySQL)
CreateTbale_AsiaUniversity_CSIE_Prof_jdwang2020_6_5.sql
思考題
使用資料庫 au_faculty_2021 (use au_faculty_2021)
(+1%) 生醫系 專任教師
=> 建立一個 2021_Asia_BIME_Table 並儲存 生醫系 專任教師資料 (欄位名稱"中文姓名","英文姓名","職稱","學歷","Degree":"","Building":'',"辦公室","分機","E-mail","研究領域")
(+1%) 行動商務與多媒體設計學系
=> 建立一個 2021_Asia_MCMA_Table 並儲存 行動商務與多媒體設計學系 專任教師資料(欄位名稱"中文姓名","職稱","學歷","Degree":"","Building":'',"辦公室","分機","E-mail","專長(研究領域)")
【Part 2 Python 資料視覺化 - 大數據分析】
CHAPTER 11 認識大數據分析-資料視覺化
(*)CHAPTER 12 使用 Pandas 掌握你的資料
Ch12_2_2.py (df.to_csv)(df.to_json )
Ch12_2_2a.py (pd.read_csv)(pd.read_json)
Ch12_2_2a.py (pd.read_csv)(pd.read_json)
Ch12_2_2b.py (CSV to HTML)
Ch12_2_2c.py (import from MySQL)
Ch12_2_2d.py (export to MySQL)(?)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade sqlalchemy --ignore-installed
Ch12_5_4.py (統計函數 describe()(page 12-43)
Ch12_6_1.py (資料清理與轉換)
Ch12_6_1a.py (info())
Ch12_6_1b.py (how='any'how='all'subset)
Ch12_6_1c.py (補漏)
Ch12_6_2.py (刪除重複)
Ch12_6_2a.py (刪除重複)
Ch12_6_2b.py (刪除重複欄位)
Ch12_6_3.py (轉換分類)
(*)CHAPTER 13 Matplotlib 與 Pandas 資料視覺化
Ch13_1_1.py
Ch13_1_1a.py(顏色外觀)
Ch13_1_1b.py(X index)
Ch13_1_1c.py(two series)
Ch13_1_2.py(線條外觀)
Ch13_1_2a.py(格線)
Ch13_1_3.py(XY軸)
Ch13_1_3a.py(XY軸+標題)
Ch13_1_4.py(圖例 Legend)
Ch13_1_4a~d.py(圖例 Legend)
Pandas + DataVisuial
Ch13_3.py ("HOU_players_stats_2017_18.csv")
Ch13_3a.py (Pandas + DataVisuial)
Ch13_3b.py (箱型圖:df["salary"].plot(kind="hist", bins=num_bins))
Ch13_3c.py (df.plot(kind="scatter", x="PTS", y="salary")
Ch13_3d.py (position = df_grouped["Pos"].count())
Ch13_3e.py ("Kobe_stats.csv")
參考程式:
WebRobot_AU_CSIE_Python_SQL_Query_jdwang2020_6_17.7z(亞大資工系教師網頁)
思考題
(+1%) 請修改程式 "Ch5_4_1b_AU_CSIE_ALLProf_23_OnlyToMySQL_OnePass.py"
修正"Building"內容
利用"辦公室"資訊(如:HB33 資訊大樓(地下室) ) (如:"H" :健康大樓)
或 由分機號碼填入大樓名稱(如:分機:48012 前兩碼 "48" 表式 "二宿")
(+1%) 完成上一題修正"Building"內容後,
請修改程式 "Ch10_5_AU_CSIE_5_Pandas_plot.py"
(原先式統計"Faculty_Rank":專任教授 專任副教授 專任助理教授 )
改成各棟大樓("Building")教師人數統計
並利用matplotlib 劃出統計圖(圓餅圖(pie)或長條圖(bar))
課程內容
Python 初學者的懶人包 Anaconda 下載與安裝(From ITWALKER · 2020/07/13 )
Python最強入門邁向頂尖高手之路:王者歸來(第二版)全彩版
20201204Python頂尖高手之路第2版讀者資源.zip (範例程式碼)
-
第十四章 檔案的讀取與寫入
-
第九章 字典(Dictionary)
-
第十六章 正則表示式(Regular Expression)
-
第二十章 數據圖表的設計(Figure for Data Statistics)
Python最強入門邁向數據科學之路—王者歸來(全彩印刷第二版)( DM1931)
20201204Python頂尖高手之路第2版讀者資源.zip (範例程式碼)
期中專題
-
第二十三章 網路爬蟲 (Web Crawler)
-
第二十四章 Selenium 網路爬蟲的王者
期末專題
成績評分
- (10%) 平時成績(出席)(缺席扣1分遲到扣0.5分=10分扣完為止)
- (30%) 課堂上機(?): (約15次, 每次佔總成績 1~3 分)
- (30%) 期中專題: (國道高速公路 電子匝道車流統計 不同車種在24小時變化)
繳交期限: (2021/4/23 下午 5:00pm 以前),上傳電子檔到 Tronclass
繳交資料(電子檔):
學號_系所_姓名_FinalProject.zip,
內含:
(1) 書面報告:
註明完成項目: ?
執行? (Compiler and Run)
結果說明?(統計圖表說明)
自行改進之處?
(心得)(說明 車流的變化情))
電子檔壓縮檔(名稱:系別_學號_姓名_FinalProject.ZIP)(心得)
(2) 程式碼(需要確認能通過 compiler, run)),
(3)(錄影上傳YouTube+ 2~3 Min)( 請先說明執行結果))+錄影工具:EverCam (亞大有授權)
各旅次路徑原始資料 ((history/TDCS/M06A/))
台灣國道高速公路電子匝道
0_TDCS_M06A_OneDay24Hour_DownLoad.py (TDCS_M06A 資料自動下載程式)(OneDay24Hour)
找出 從"霧峰"交流道之各式車輛{每小時}車次數目?[小客車(31) 小貨車(32) 大客車 (41) 大貨車(42) 聯結車(5)
統計繪圖(e.g. EXCEL) 說明觀察結果(不同車種在24小時變化:高峰時段)>
利用 Pandas + Matplotlib 劃出統計圖
統計圖(需要標示(1) 資料時間範圍 (Title) (2) 電子匝道編號(Title) (3) x,y 座標軸 (4) 姓名與學號(Title)
(1) (50%) (One day)(2021/4/1)從(霧峰)(上)交流道, 然後 (北上:03F2100N)(五種車種在24小時變化:高峰時段)+
統計圖檔名(學號_姓名_OneDay_MiddleProject_03F2100N.jpg)
(2) (60%) (1) + (One Week)(2021/4/1-2021/4/8)(2021/4/1)從(霧峰) (上)交流道, 然後 (北上:03F2100N)(清明連假)(不同車種在{一周}24小時變化:高峰時段)+
統計圖檔名(學號_姓名_OneWeek_MiddleProject_03F2100N.jpg)
(3) (70%) (2) + (One Week)(2021/4/1-2021/4/8從(霧峰) (上)交流道, 然後 (北上:03F2100N)(南下:03F2129S)(清明連假)(不同車種在 24小時變化:高峰時段)+
統計圖檔名(學號_姓名_OneWeek_MiddleProject_03F2100N.jpg)
統計圖檔名(學號_姓名_OneWeek_MiddleProject_03F2129S.jpg)
(4) (80%) (3) + (Two Weeks)(2021/4/1-2021/4/8)+(2021/4/9-2021/4/16)從(霧峰) (上)交流道, 然後 (北上:03F2100N)(南下:03F2129S)(清明連假 vs.一般星期)(不同車種在 24小時變化:高峰時段 +
統計圖檔名(學號_姓名_TwoWeekComparison_MiddleProject_03F2100N.jpg)
統計圖檔名(學號_姓名_TwoWeekComparison_MiddleProject_03F2129S.jpg)
(5) (90%) (4) + 選擇一個你想觀察的交流道("霧峰" 除外)(說明你選擇的動機?)
重複(4)
統計圖檔名(學號_姓名_TwoWeekComparison_MiddleProject_????????.jpg)
統計圖檔名(學號_姓名_TwoWeekComparison_MiddleProject_????????.jpg)
(Bonus 加分):
說明你程式修改與新增部分
(1)自動下載程式修改(可以多天?)
(2)不同統計圖? (如:折線圖 長條圖 Pie)
(3)計算車種 24 H 分布百分比?
(4) 其他?
- (30%)
期末專題: Python網頁資訊擷取(Selenium)+Pandas+資料視覺化+MYSQL
期末專題 資料 ( 網站(1%)+ 動機與目的網站(1%))
上台分享(+1%): (課堂分享) (2021/6/18)
繳交期限: ( 2021/6/25 下午 12 :00pm 以前),上傳電子檔到 Tronclass
繳交資料(電子檔):
電子檔壓縮檔(名稱:系別_學號_姓名_FinalProject.ZIP)(自己有改寫的部分程式+心得)
內含:
(1) 書面報告:
動機:
註明完成項目: ?
解說影片(YouTube URL 設定分享)
(2) 程式碼(需要確認能通過 compiler, run)),
(3) 解說影片(YouTube URL 設定分享)(錄影上傳YouTube+ 3~5 Min)+錄影工具:EverCam (亞大有授權)
(4) 成果(說明學習到那些技術? 資料? 改進? )
寫碼容易,讀碼難:工程師,千萬別重寫程式碼
大神工程師教你怎麼練就「coding 速度快、bug 數量少」的境界
程式自學十年心得:想吃這行飯,學好演算法與資料結構才能讓你站穩腳步
為什麼好好的開發者,會寫出這麼糟糕的程式?
成功工程師凌駕他人的五個關鍵思維——做到了每年就能多放一個月假!