1. 程式人生 > >獨家 | Python資料分析入門指南

獨家 | Python資料分析入門指南

有一個朋友最近問到這個問題,我覺得把它公開出來對其他人也會有幫助。這是給完全不瞭解Python而想找到從零到一的最簡單的路徑的人的建議:

 

1. 在這裡(https://www.continuum.io/downloads)下載適用於你的作業系統的Python 3.X的Anaconda發行版本。這個預先捆綁的發行版會幫助你避開很多跟安裝相關的頭疼問題。有很多重要的資料分析包都會被預先安裝好。

學習python加python程式語言學習QQ群515267276

2. 等你安裝好之後,測試一下,確認預設的Python直譯器是你剛剛安裝的版本。這非常重要,因為可能在你的系統裡已經安裝了一個版本的Python,但是它並不會包含Anaconda發行版中的所有東西,所以你得確保新的版本才是預設版本。在Mac/Linux系統上,你可以在終端輸入which python,或者你也可以執行Python的直譯器並且確保版本跟你下載的是相符的。如果這一切執行良好,在安裝的時候就應該被設定成預設的版本。如果並非如此,你就得停下來並且解決它。

 

3. 在命令直譯器(Shell)中輸入jupyter notebook命令,這會開啟一個瀏覽器視窗。如果沒有的話,開啟瀏覽器,在位址列輸入:http://localhost:8888。在你開啟這個頁面之後,建立一個新的Python筆記本(Python notebook)。

 

4. 點選http://www.kaggle.com/最上面選單欄中的kernels,並在新開啟的頁面中的語言過濾器中選擇Python(https://www.kaggle.com/kernels?language=Python)。這裡大部分都是其他人利用Kaggle上免費公開的資料集做分析或者組建模型時使用的Jupyter筆記本(Jupyter Notebook)。在其中尋找標題裡包含類似EDA(Exploratory Data Analysis,探索性資料分析)的筆記本,而不是那些建立預測模型的筆記本。找一個你覺得有趣的,並且在你的筆記本中再現它。

 

注意: 你會發現,當你再現某些分析的時候,你會遭遇匯入錯誤(Import error)。這常常是因為分析者安裝了並沒有包含在Anaconda發行版中的包。你最終會需要學習如何跟conda包管理器(Conda package manager)互動,這將是你最終會走入的許多兔子洞之一。通常而言,事情都非常簡單,你只需要用到conda install <package name>就可以了,但是你需要找出正確的包的名稱,有時候,你還得確認一些其他的細節。還有的時候你可能得用到pip install <package name>,遲一點你都會學到的。

 

 

高階庫總結

 

這裡是對你會經常接觸的重要的庫的簡要總結:

 

NumPy:擁有大量的科學計算的核心功能。由於它的內部運算是通過C語言實現的,所以比用Python寫成的同樣的函式,它的速度會快許多。但它並不是最使用者友好的包。

 

SciPy:跟NumPy非常相似,但是有更多的方式來從分佈中取樣,計算檢驗統計量,等等。

 

MatPlotLib:主要的畫圖框架。不太討喜,但卻是必備的包。

 

Seaborn:在匯入MatPlotLib包之後匯入Seaborn包,預設地,它會使你的繪圖變得漂亮許多。它也有一些獨特的功能,但是我發現它最酷炫的功能執行起來實在太慢了。

 

Pandas:基本上是對NumPy/SciPy進行輕量的包裝,使它們更使用者友好一些。對於和表格資料互動非常理想,Pandas中把表格資料稱為資料框(DataFrame)。對畫圖功能也有一些包裝,使得無需使用MPL(Meta-Programming Library,超程式設計庫)就可以快速實現畫圖。我使用Pandas而非其他的工具來操作資料。

 

Scikit-learn:包含大量的監督和非監督機器學習演算法,以及許多做模型選擇的度量工具,是一個優秀的預處理庫。這個預處理庫可以做主成分分析(Principal Component Analysis),對分類變數進行編碼,等等。

 

 

小技巧

 

1. 在Jupyter筆記本中,在執行程式碼塊(Cell)前,於任何一個物件前放置一個問號,它會為你開啟這個物件的文件。在你遺忘了你所使用的函式的細節的時候,這是非常方便的。比如說,my_dataframe.apply會解釋pandas.DataFrame物件中的apply方法,而這個my_dataframe是pandas.DataFrame的一個例項。

學習python加python程式語言學習QQ群515267276

 

2. 無論你在使用什麼庫,你通常都需要一直查閱文件,那麼就乾脆一直在瀏覽器中開啟它。可選變數以及細微的差別實在是太多了。

 

3. 當你遇到無可避免的故障檢修的時候,stackoverflow上也許已經有了問題的答案。

 

4. 接受這個事實吧:你正在做並不是完全理解的事情,又或者你會被並不重要的細節拖入泥淖。某一天你也許需要理解虛擬環境,它並沒有那麼困難,只是會有一些彎路給新手增加一些不必要的痛苦而已。

 

5. 閱讀別人的程式碼。這是最好的方式,可以學習到規範,也是最佳的實踐。這就是Kaggle kernels能夠幫助你的地方。Github同樣也支援在瀏覽器中展示Jupyter筆記本。網際網路上有大量的例子可供參考學習。