創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2017年2月12日 星期日

Python數據分析的利器

近年來大數據趨勢的興起,讓數據分析、資料科學、機器學習這類領域成為熱門的潮流,一些適合這方面的語言或軟體像Julia、MATLAB/GNU Octave、Python、R、SAS、Scala也隨之更為流行。本文無意在這些不同軟體或語言之間做優劣比較,不同的軟體、語言之間各有其強弱項與突特之處,使用者應以自身的需求從中做選擇,筆者也只用過其中三種,也不適合寫這類比較文章。

前陣子發現有人以R語言七種武器來做為訓練課程或工具名稱的名稱,來代表R語言工具的使用技能。而這篇〈Python的七种武器_Python有哪些数据分析模块〉以及自己近期工作上的使用情況則激發了產生本文的靈感。

如果看倌是位武俠迷的話,應當會知道七種武器這名稱乃源自古龍武俠小說中的七種武器系列:長生劍、孔雀翎、碧玉刀、多情環、霸王槍、離別鉤、一口箱子。雖然第七種武器有其他二種說法:拳頭或是七殺手,但綜合各方面的因素看來,還是《英雄無淚》中的一口箱子較為合適。

Python不僅是個一般用途的語言,它在加裝幾個套件或模組後,就可立刻搖身一變成為數據分析的強大武器,一點也不遜色於主要為統計分析而打造的R語言,或是像MATLAB、SAS這類知名且歷史悠久的商業軟體。以下就介紹幾個能讓Python成為數據分析變形金剛的擴充套件:
  1. NumPy:提供大量多維陣列與矩陣運算的支援,還有高階數學函式以運算這些陣列。
  2. SciPy:基於NumPy陣列物件,所提供的模組包含最佳化、線性代數、積分、插值、特殊函式、快速傅立葉轉換、訊號與圖像處理、常微分方程求解和其他科學與工程常見工作。
  3. Pandas:它可不是真的熊貓,它的名稱是來自"Panel data",多維度結構化資料集的計量經濟學用詞。基於NumPy,做資料操縱與分析,特別是提供資料結構與運算以操縱數字表格與時間序列。它的DataFrame就相當於R的Data Frame。
  4. Matplotlib:做好的數據分析結果若想用漂亮的圖表呈現就交給它了。NumPy stack(或稱SciPy stack)包含了NumPy, SciPy, Pandas, Matplotlib等等……主要用於科學計算,作用就類似於MATLAB, GNU Octave這類軟體。
  5. Statsmodels:從Python 3.4開始,標準庫中新加入了一個statistics模組,提供基本的統計計算功能。而這個Statsmodels統計模組則是基於NumPy與SciPy,整合了Pandas做數據處理,補充了SciPy的stats模組,繪圖功能則是基於Matplotlib。
  6. Scikit-learn:基於NumPy、SciPy與Matplotlib的機器學習庫。提供各式分類、回歸與叢集演算法,包含支持向量機、隨機森林……。
  7. IPython/Jypyther Notebook:互動的計算與開發環境。除了提供互動式的shells,NoteBook則是一個可提供撰寫代碼、文字、繪圖……的網頁環境,甚至有人採用這環境做為寫作、簡報、教學的用途。這環境也可提供作為運用上述工具進行資料分析的工作,雖然也可採用不同環境與途徑,不見得非得用它不可,不過它是個簡潔而且相當廣泛被採用的方式。IPython近年的發展很快速,自4.0版開始已把Notebook分開到Jypyter專案,而專注於Interactive Python,目前已是5.2.2版。Jypyter則可提供給其它語言使用,如Julia, Ruby……,造福了更廣大的使用者。
以上七項只是種代表性、較常見的組合,仍有許多不同的可能選項與組合,像繪圖方面的bokeh、資料存取方面的SQLAlchemy……等等。如果擔心不清楚該如何安裝這些東西,最簡單的作法就是安裝像Anacondapythonxy這類已預先把包含上述項目的多種庫與Python都打包在一起的安裝檔。以後有機會再來介紹Anaconda。

參考:

沒有留言:

張貼留言