Python - 萬能又簡潔的程式
無可否認,Python擁有龐大的Library支持,令到開發者們(包括筆者)都能夠加快開發的速度。有不少對數據有興趣的朋友,心裡都有同一個疑問: 到底用R或是Python做數據分析會比較好了?網上也有很多的這類的問題,一些有經驗的基本上也是同一樣: 你喜歡就好了。你可能會覺得這個答案有點不負責任,但其實選那個程式語言真的沒有所謂。因為R有CRAN (The Comprehensive R Archive Network),這也是一個強大的Python Packages,有很多R的用家跟粉絲開發不同的分析的功能; 而Python也有很多Open Source的Library作數據分析,基本上R有的功能,Python也有,運算速度也是差不多,所以選擇自己喜歡,熟悉的就好了!而筆者我會選擇Python,畢竟我同時是後台開發者,也是用Python Programming去開發,對它的熟悉程度一定會比我曾在大學學習的R高。現在,靠著它幾個Packages來做資料提取,處理,分析,建模,已經解決不少的難題了!
下載及安裝
請根據你的OS(操作系統)和以下的步驟來安裝Python, 跟PIP(用作安裝其他的Package)
Mac
1. 下載 2.7.x version in https://www.python.org/downloads/
2. 開啟並依照指示安裝Python
3. 安裝,開啟Terminal(終端機)和輸入:
4. 開啟Terminal(終端機)及安裝PIP:
1. 下載 2.7.x version in https://www.python.org/downloads/
2. 開啟並依照指示安裝Python
3. 設定 PATH 變數
4. 開啟 CMD (在開始 輸入cmd便會出現)並輸入:
5. 下載 get-pip.py
6. 開啟 CMD 並輸入 (假設你把get-pip.py儲存在桌面上):
7. 在CMD 升級 PIP:
Ubuntu
1. 在終端機安裝Python及PIP:
應用在數據分析
現在大數據這個話題流行在各行各業,可是要做大數據應用的前題,首先你要先擁有數據,那麼它們都是從哪裡來了?一般我們會在HTTP請求 (HTTP Request)回來的回應或者直接從數據庫中獲取數據,收集回來的數據format一般是XML和JSON。個人比較喜歡JSON的樣式,純粹因為它比XML更直接和簡潔(笑)。Django是一個很熱門的伺服器框架,可以用作建立應用設式接口(Application Programming Interface),我也是習慣使用JSON去回應請求,把數據送到目標位置。
讀取 JSON
假設你拿到一個JSON的檔案,為了讀取裡面的數據,我們先用Python寫好一個程式。
假設你已經下載一個JSON的檔案在桌面上,打開Terminal (CMD) or IDLE (Python原生的editor) ,並輸入("#"是我的comment):
Mac
好!靠著NumPy的幫助,我們可以不用打很多的code,那麼我們首先把數據總結起來。
len(目標陣列): 這是一個函數去獲得多少個元素在目標陣列裡面
目標陣列.append: 一個函數把一個元素放進一個目標陣列裡
事實上,在第3行的code上,可以理解為 "for i in range(10):",因為有11個客人資料,我們重覆同一個動作11次,所以用了For Loop,但是,不是每一次的客人數量也是一樣,為了避免硬編碼,我們會從len(raw_data["profile"])去得到客人的數目,就算下一次有369個客戶資料,也可以重用這段coding.
當然,NumPy和SciPy已經有很多的統計功能,更多的資料可以在http://docs.scipy.org/doc/ 搜找啊!
希望剛學習Programming的朋友們,能在這個小小的教程學會Python。當然之後也有不少的應用,之後我也會每一個Topic去示範Python應用在更高階的統計和機器學習。如果有什麼問題建議,不妨和歡迎提出來,大家交流一下啊!
下載及安裝
請根據你的OS(操作系統)和以下的步驟來安裝Python, 跟PIP(用作安裝其他的Package)
Mac
1. 下載 2.7.x version in https://www.python.org/downloads/
2. 開啟並依照指示安裝Python
3. 安裝,開啟Terminal(終端機)和輸入:
$ python
>>> quit() 離開Python Shell
4. 開啟Terminal(終端機)及安裝PIP:
$ sudo easy_install pip
$ sudo pip install --upgrade pipWindow
1. 下載 2.7.x version in https://www.python.org/downloads/
2. 開啟並依照指示安裝Python
3. 設定 PATH 變數
開啟我的電腦,右鍵點擊內容
點擊環境變數去更改PATH變數
![]() |
選擇變數:PATH 和在變數值的最後面加上";C:\Python27\;C:\Python27\Scripts"
![]() |
4. 開啟 CMD (在開始 輸入cmd便會出現)並輸入:
> python
>>> quit() Quit the Python Shell
![]() |
Successfully execute python in CMD! |
6. 開啟 CMD 並輸入 (假設你把get-pip.py儲存在桌面上):
> python <directory>\get-pip.py
7. 在CMD 升級 PIP:
> python -m pip install -U pip
Ubuntu
1. 在終端機安裝Python及PIP:
$ sudo apt-get install python-setuptools python-pip python-dev build-essential2. 在終端機裡使用Python:
$ python
![]() |
Successfully execute python and pip as well |
應用在數據分析
現在大數據這個話題流行在各行各業,可是要做大數據應用的前題,首先你要先擁有數據,那麼它們都是從哪裡來了?一般我們會在HTTP請求 (HTTP Request)回來的回應或者直接從數據庫中獲取數據,收集回來的數據format一般是XML和JSON。個人比較喜歡JSON的樣式,純粹因為它比XML更直接和簡潔(笑)。Django是一個很熱門的伺服器框架,可以用作建立應用設式接口(Application Programming Interface),我也是習慣使用JSON去回應請求,把數據送到目標位置。
讀取 JSON
假設你拿到一個JSON的檔案,為了讀取裡面的數據,我們先用Python寫好一個程式。
請從GitHub下載需要的文件:
1. data.json: 顧客的資料樣本(JSON檔)
2. read_json.py: 含有一個用作讀取JSON的Python檔
2. read_json.py: 含有一個用作讀取JSON的Python檔
假設你已經下載一個JSON的檔案在桌面上,打開Terminal (CMD) or IDLE (Python原生的editor) ,並輸入("#"是我的comment):
> import sys,os,pprint # 載入Python原生的Package > desktop_dir = os.path.join(os.path.expanduser("~"),"Desktop") # 提取桌面的路徑和放進變數:desktop_dir > sys.path.insert(0,desktop_dir) # 加上桌面路徑,以致可以讀取自己寫的Python file > import read_json # 載入 read_json.py > raw_data = read_json.import_json(os.path.join(desktop_dir,"data.json")) # 叫喚函數(import_json), 輸出的值放在變數: raw_data > pprint.pprint(raw_data) # 用pprint以更整清的格式顯示
Mac
$ pip install numpy scipyWindow
> pip install numpy
下載 installation package ,然後執行和依照指示安裝 SciPyUbuntu
$ sudo apt-get install python-numpy python-scipy python-matplotli
好!靠著NumPy的幫助,我們可以不用打很多的code,那麼我們首先把數據總結起來。
> import numpy, scipy > age = [] # 宣告一個新的空白陣列變數 > for i in range(len(raw_data["profile"])): # 把十個顧客的資料放在陣列裡 age.append(raw_data["profile"][i]["age"]) > print numpy.mean(age) # 叫喚在numpy裡面的mean的函數, 獲得年齡的平均數並顯示計算結果 > print numpy.std(age, ddof = 1) # 獲得年齡樣本方差小提示:
len(目標陣列): 這是一個函數去獲得多少個元素在目標陣列裡面
目標陣列.append: 一個函數把一個元素放進一個目標陣列裡
事實上,在第3行的code上,可以理解為 "for i in range(10):",因為有11個客人資料,我們重覆同一個動作11次,所以用了For Loop,但是,不是每一次的客人數量也是一樣,為了避免硬編碼,我們會從len(raw_data["profile"])去得到客人的數目,就算下一次有369個客戶資料,也可以重用這段coding.
當然,NumPy和SciPy已經有很多的統計功能,更多的資料可以在http://docs.scipy.org/doc/ 搜找啊!
希望剛學習Programming的朋友們,能在這個小小的教程學會Python。當然之後也有不少的應用,之後我也會每一個Topic去示範Python應用在更高階的統計和機器學習。如果有什麼問題建議,不妨和歡迎提出來,大家交流一下啊!
Comments
Post a Comment