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)
----

上圖是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(?!)