for Python 學習介紹 === 嗨~大家好, 在學習之前先看看一些廢話吧! >撰寫 [name=Shih-Chi Hsu] [time=Jul 17, 2016] > > >修改 >書單新增[Think Python 2e] >[name=Shih-Chi Hsu] [time=Wed, Jul 19, 2017] 聯絡方式:schi.hsu@gmail.com --- ### 事情是這樣發生的... - 有天上網看了些教學,用了python處理一些資料 - 然後去了[Leetcode](https://leetcode.com/)小試身手卻發現自己寫的好爛,用了太多傳統程式的觀念去建構程式,孰不知太多好用的東西我還不知道。 ---- ### 話說回來那為什麼要選擇Python? 1. 簡單好學啊!!入門非常快速,學過就回不去惹 2. C、C++、fortran著重於計算面缺少互動性等(也是可以拉~但是有點麻煩) 3. matlab軟體要價不斐,出社會後很少公司會採用 4. 流行度高,網路上資源多,bug不會卡太久 5. Mac和Linux都有內建,連安裝都不用了,能不用嗎? (~~可是我都在window系統做事~~) 6. 能處理的專業項目類型廣泛 7. 開發時程短 ---- ### Python能做些什麼? * __[網路爬蟲]__:urllib、requests、lxml、beautiful_soup、scrapy、selenium * __[資料庫串接]__:MySQLdb(MySQL)、pymssql(MSSQL)、Psycopg(PostgreSQL) * __[自然語言]__:NLTK、jieba * __[統計應用]__:pandas、numpy、scipy、matplotlib * __[機器學習]__:scikit-learn、TensorFlow * __[影像處理]__:PIL、opencv * __[網站架設]__:Django、Flask * __[網路分析]__:scapy * __[GUI設計]__:tkinter、PyQt * __[軟硬整合]__:raspberry pi 樹莓派、Arduino * __[遊戲開發]__:pygame * __[App開發]__:kivy * __[各種服務的API串接]__:Bot [參考於pyladies社群教學文件](http://tw.pyladies.com/~marsw/crawler01.slides.html#/1/1) ---- ![TIOBE](https://i.imgur.com/H6z15f6.png) 上圖是2016年12月的[TIOBE](http://www.tiobe.com/tiobe-index/)程式語言排行榜,近年python穩坐第四名附近。 P.S. 碩班在用的fortran和matlab分別為28和18名。 ---- 當然也並不是說Python一定就好,也是有很多限制, 在計算速度上,明顯慢於底層的程式語言, 但是也有相對應的解決方法, 平行化設計、程式架構訓練、將code翻譯至Cython等。 總之,程式語言百百種,找個自己喜歡的好好學下去就對了!!! 感謝大家看了這麼多,希望可以找到很多夥伴加入, 能在地科領域多多推廣Python --- 當然若自身經濟狀況還過得去, 當然很推薦收集一些書籍來讀。 想購書或翻翻書非常推薦 #### [天瓏書局](https://www.tenlong.com.tw/)(北車書街) 原文、繁中、簡中書籍都很齊全,價位也很優惠,也有網路商城。 #### [歐萊禮](http://books.gotop.com.tw/oreilly.aspx) 官網也常常會有5折電子書促銷活動。 ---- ### 資源分類(2016/12/16更新) - 入門 - 資料分析 - 深入了解 - 社群資源 ---- #### 入門 |書名|作者|形式| |---|---|---| |[Introducing Python (精通 Python)](https://www.tenlong.com.tw/items/9863477311?item_id=1007464)|Bill Lubanovic|紙本(英文、簡中、繁中)| |[Python 3.5 技術手冊](http://openhome.cc/Gossip/Books/index.html#Python35)|林信良|紙本 & 線上PPT| |[Python程式設計入門](https://github.com/yehnan/python_book_slides)|葉難|紙本 & 線上PPT| |[莫烦PYTHON](https://morvanzhou.github.io/)|周沫凡|線上影片| |[Think Python 2e](http://greenteapress.com/wp/think-python-2e/)|Allen B. Downey|原文版(線上或PDF下載)、[線上中譯版(form編程派)](http://www.codingpy.com/books/thinkpython2/)| |以上為推薦清單,以下為其他資源| |[自我學習課程 Python](http://yenlung.km.nccu.edu.tw/xms/content/show.php?id=424)|蔡炎龍|線上PPT| |[A byte of python](https://python.swaroopch.com/)|Swaroop C H|GitBook| |[how to make mistakes in python](http://www.oreilly.com/programming/free/how-to-make-mistakes-in-python.csp)|Mike Pirnat|免費PDF檔案下載| |[Python Scripting for Spatial Data Processing](https://pythonizame.s3.amazonaws.com/media/Book/python-scripting-spatial-data-processing/file/85ebbca2-7c5d-11e5-964d-04015fb6ba01.pdf)|Pete Bunting and Daniel Clewley|免費PDF檔案下載| ---- #### 資料分析 |書名|作者|形式| |---|---|---| |[Python for Data Analysis (利用Python進行數據分析)](https://www.tenlong.com.tw/items/7111436733?item_id=1000217)|Wes McKinney|紙本(英文、簡中)| |[Foundations for Analytics with Python (高效率資料分析:使用Python)](https://www.tenlong.com.tw/items/9864762613?item_id=1025981)|Clinton W. Brownley|紙本(英文、繁中)| |[Data Science from Scratch (用Python學資料科學)](https://www.tenlong.com.tw/items/9864761986?item_id=1024589)|Joel Grus|紙本(英文、繁中)| |[NumPy Beginner's Guide (NumPy 學習指南)](https://www.tenlong.com.tw/items/7115339406?item_id=887935)|Ivan Idris|紙本(英文、簡中)| |[IPython Interactive Computing and Visualization Cookbook](https://www.tenlong.com.tw/products/9781783284818)|Cyrille Rossant|作者提供原文電子檔| |[Python Data Science Handbook](https://github.com/jakevdp/PythonDataScienceHandbook)|Jake VanderPlas|作者提供ipython教學檔案| |以上為推薦清單,以下為其他資源| |[NumPy Cookbook]()|Ivan Idris|| |[SciPy and NumPy]()|Eli Bressert|| |[用Python做科學計算(偏舊)]()||| ---- #### Web應用 |書名|作者|形式| |---|---|---| |[Web Scraping with Python (網站擷取:使用Python)](https://www.tenlong.com.tw/items/9864761757?item_id=1023924)|Micha Gorelick and Ian Ozsvald|紙本(英文、簡中、繁中)| |[測試驅動開發:使用 Python](https://www.tenlong.com.tw/products/9789864760244)|Harry J.W. Percival|[原文線上開放](http://chimera.labs.oreilly.com/books/1234000000754)、繁中| |[Django 中文文档 1.8](https://wizardforcel.gitbooks.io/django-chinese-docs-18/content/)|Django 文档协作翻译小组|官方文件簡中翻譯| |[Django documentation](https://docs.djangoproject.com/en/1.10/)|Django|官方文件| ---- #### 應用 |書名|作者|形式| |---|---|---| |[基礎物理學](http://drweb.nksh.tp.edu.tw/student/lessons/F/)|石明豐教授|| ---- #### 深入了解 |書名|作者|形式| |---|---|---| |[High Performance Python]()|Micha Gorelick and Ian Ozsvald|紙本(英文)| |[Python Cookbook 3rd]()|David Beazley and Brian K. Jones|紙本(英文)| |[Cython]()|DSmith, Kurt W|紙本(英文)| ---- #### 社群資源 * [Python Taiwan](https://www.facebook.com/groups/pythontw/?fref=ts)【台灣FB社群】 * [編程派](http://codingpy.com/)【中國社群】 * [Taipei.py](https://www.meetup.com/Taipei-py/)【台北 Python 使用者群組】 * [PyLadies](http://tw.pyladies.com/)【專屬於女生的 Python 愛好者聚會】 * [Django Girls Taipei](http://djangogirls.org/taipei)【活動於台北,專屬女孩的(Django, Python Web)程式工作坊】 * [PyHUG](http://www.meetup.com/pythonhug/)【活動於新竹周邊的 Python 程式員。非常歡迎你加入我們的聚會!】 * [Tainan.py](http://www.meetup.com/Tainan-py-Python-Tainan-User-Group/)【活動於台南周邊的 Python 人客,歡迎來吃!】 * [Kaohsiung Python User Group](https://www.facebook.com/groups/kaohsiungpy/)【高雄地區 Python 使用者的交流園地】 * [花蓮.py](http://www.meetup.com/Hualien-Py/)【活動於花蓮周邊的 Python 玩家,歡迎來花蓮玩】 * [Taichung.py](http://www.meetup.com/Taichung-Python-Meetup/)【Python台中聚會,歡迎大家來玩!Have Fun!】 --- ### 萬事起頭難,如何開始呢? #### Python安裝與環境設定 Python程式上可以分成 主程式、IDE 與 套件 三個部分 整合開發環境(IDE)可以讓我們更順暢的開發程式,也沒有說一定不能用VI之類的, 但是既然都要學新東西了,就試試看這些好用的玩意兒吧! 一般常見的包括 * [notepad++](https://notepad-plus-plus.org/) * [Sublime3](https://www.sublimetext.com/3) * [Visual Studio Code](https://code.visualstudio.com/) * [JetBrains產品系列](https://www.jetbrains.com/) * [Atom](https://atom.io/) #### python2 or 3呢? 推薦直上3,現在大多套件都有支援到3的版本了, 有需要往回看2.7,也比較快速。 #### 編寫環境 推薦全新的寫作方法,[jupyter notebook](http://jupyter.org/), 為一個交互式編譯器,可以支援40多種語言, 入門介紹可參閱[編程派codingpy-Jupyter Notebook 快速入门(上)(下)](http://codingpy.com/article/getting-started-with-jupyter-notebook-part-1/) 主要的執行檔案為ipython格式,可放在github、sagemath、Azure Notebooks上。 是一種全新的寫程式方法,提供一個很好的筆記空間與程式碼執行區塊 ---- ### 本機安裝python以及IDE #### [Anaconda](https://www.continuum.io/why-anaconda) : 大補帖,懶人安裝包。 主程式,常用的套件以及各式IDE皆打包好了 __整合開發環境[IDE]__ 包含Jupyter、IPython、spyder這幾種較有名的程式 #### [Rodeo](https://www.yhat.com/products/rodeo) : 一款仿照R Studion所開發而成的IDE,包裝IPython而成,使用的引擎是Blink 適合資料科學類,但是2015年底才推出,相對較新,2.5.2版剛推出(2017/01),可以期待。 ---- ### 雲端線上編寫空間 #### [sagemath](https://cloud.sagemath.com/) : 環境為Anaconda,上傳檔案方便,為資料夾型態 #### [Azure Notebooks](https://notebooks.azure.com/) : 可自由擴充套件,為專案型態,資料須另放其他開放空間 --- ### 讀書筆記 小弟有再著手整理讀過的書籍筆記,皆為ipython file,放置[github](https://github.com/)公開使用 目前有以下資源 1. [Introducing Python](https://github.com/HuskyHsu/Introducing-Python) 2. [Python for Data Analysis](https://github.com/HuskyHsu/Python-for-Data-Analysis) (進度:ch4) 若有人有興趣加入幫忙整理原文書中文化筆記,歡迎聯絡(schi.hsu@gmail.com)。 p.s. github為工程師們的facebook,上面可以分享自己的程式碼,全為開源專案, 也可以幫忙別人清bug做測試,看到喜歡的專案也可以給予stars鼓勵!! 最重要的是可以用git工具備份程式碼至雲端管理,讓你隨時隨地都能coding(?!)