標籤:

如何使用 Python 開始建立你的數據分析項目

現在有很多博文對複雜的機器學習演算法和前沿的技術進行了展示,而這也促使數據科學家們慢慢變成了「社交控」(FOMO)。但數據分析的基本內容究竟是什麼樣的?你應當怎樣安排項目結構?你需要使用什麼樣的工具?等等諸如此類的問題卻鮮有人問津。本文將會對如何建立項目提供一些啟發思路,以幫助你快速達到 在數據科學領域能有所產出 的境界。

項目結構

項目的結構總是為了契合人們的需求而得到不斷完善,這會導致在一個團隊中出現不同的項目構架。如果你或者團隊中的其他人能夠及時發現項目結構的重要性,並且這個概念在團隊中得到推廣,那麼,你無疑是幸運的。

多年前作者偶然發現了 R 語言的項目模板 網站。從那之後,作者便一直提倡身邊的人使用規範的項目結構。最近,DrivenData 發布了更為普適的 Cookiecutter Data Science 來構建項目結構。

而這些網站在項目構建方面的思路大致如下:

  • 一個連貫且組織良好的結構,以便於人們協作
  • 你的分析應當可復現,而你的項目結構可以滿足這個需求
  • 不應該從原始數據作為出發點開始你的項目,而應當假設原始數據不變,創建其他派生的文件

作者簡略的項目結構如下所示:

example_project/├── data/ <- The original, immutable data dump.├── figures/ <- Figures saved by notebooks and scripts.├── notebooks/ <- Jupyter notebooks.├── output/ <- Processed data, models, logs, etc.├── exampleproject/ <- Python package with source code.│ └── __init__.py <-- Make the folder a package. └── process.py <-- Example module.├── tests/ <- Tests for your Python package. └── test_process.py <-- Tests for process.py.├── environment.yml <- Virtual environment definition.├── README.md <- README with info of the project.└── setup.py <- Install and distribute your module.

你可以在 這裡 看到相關實例。

項目通常遵循另一種結構:

  • 原始數據不變,存儲在 data/中;
  • 數據處理和相關輸出圖分別存儲在不同的文件夾下,例如:figures/和output/;
  • 筆記文件存儲在notebooks/;
  • 項目信息撰寫在README.md中;
  • 項目代碼放置在獨立的文件夾下。

實際上,你選擇什麼樣的項目結構並不重要,只要它能符合你的工作流程,你也能堅持使用它。你應該嘗試去理解何為項目,從而選擇滿足要求的項目結構。

虛擬環境

項目之間應當相互獨立,你肯定不希望新的項目打亂了之前的工作成果。我們可以通過把不同項目的文件存儲在不同的文件夾下實現獨立性,但是不同項目之間也應當使用不同的 Python 環境。

虛擬環境依賴於不同的項目而相互獨立,避免了包的衝突問題。每個虛擬環境都安裝了特定版本的不同包。虛擬環境一中安裝了版本為 1.11 的numpy庫和版本為 0.18 的pandas庫,而虛擬環境二中則僅僅安裝了版本為 0.17 的pandas庫。作者選取適用於數據科學的 conda 管理虛擬環境(可在 這裡 看到選擇它的原因)。

下列命令可以創建一個使用 Python 3.5 的新的 conda 虛擬環境,命名為 example_project:

$ conda install --name example_project python=3.5

激活虛擬環境( Windows 系統下將 source 省去):

$ source activate example_project

之後便可以安裝所需的包了:

$ conda install pandas numpy jupyter scikit-learn

當你在不同的項目間跳轉時,可以運行source deactivate命令取消激活,並激活新的項目虛擬環境。

一旦你熟練使用activate和deactivate命令,就會發現虛擬環境是一個很輕巧的工具來保證 Python 環境的獨立。通過導出環境定義文件(例如,所有安裝的包名和版本號),你的項目就很容易得到復現了。如果你想查看更多細節,可在 Tim Hopper 的博文 中看到。

Git

每個項目都應該有自己的 Git 資源庫。在每個項目創建一個資源庫可以幫助你追蹤每個項目的歷史和解決在不同的項目間複雜的版本依賴問題。

又或者,你可以選擇在一個資源庫中包含多個項目,將所有內容存儲在一個位置。這樣做的缺點在於往往會因為合併衝突問題而告終(數據科學家通常並不能熟練使用 Git )。除了很多使用 Git 時出現的問題,這也會導致你的項目之間缺乏獨立性。

創建 Git 資源庫最簡單的方法就是在你的 Git 遠程主機託管服務(例如,Github 和 GitLab )上創建一個新的 Git 資源庫,然後把它複製到本地:

$ git clone https://github.com/hgrif/example-project.git

你可以在這個空文件夾下構建你的項目結構。

如果你按照這個步驟執行,並準備在一個新文件夾下創建一些文件了。那麼,你首先還需要在電腦上對 git 資源庫進行初始化:

$ git init

然後在你的遠程主機上創建一個新的 git 資源庫,得到它的鏈接,並運行下列命令:

$ git remote add origin https://github.com/hgrif/example-project.git

該命令會添加鏈接為 github.com/hgrif/exampl 的遠程資源庫,並命令為 origin 。你可能需要把現有的 master分支推送到origin上:

$ git push --set-upstream origin master

在你的項目目錄下創建.gitignore文件可以避免將圖或數據誤填加進資源庫中。作者一般使用 針對 Python 的.gitignore文件 ,並且在文件中加入 data/、figures/ 和 output/ 文件夾,以便 Git 可以忽略它們。

既然 Git 已經設置好了,你就可以對核心內容使用git add和git commit命令了!

使用工具

使用一些工具可以幫助你擺脫那些重複性工作。

Python 中的cookiecutter包可根據模板自動創建項目文件夾。你可以使用現有的模板,例如,Cookiecutter Data Science 或者 作者的項目結構模板 ,或是創建你自己新的模板。

使用虛擬環境最好的方法就是選用支持它們的編輯器,比如:PyCharm 。你也可以使用 autoenv 或者 direnv去激活虛擬環境,並設置環境的變數,如果你cd定位到一個工作目錄下的話。

結論

對你的數據科學項目有一個良好的設置將會有助於同其他人協作,並且項目本身也會更容易復現。一個好的項目結構,一個虛擬環境和一個 git 資源庫是每個數據科學項目的基石。

原文鏈接:How to Start a Data Science Project in Python

原文作者:Henk Griffioen

譯作者:Vector

推薦閱讀:

直播 | Facebook Analytics Manager如何運用300PB海量資料庫?
沒用過TF,沒摸過GPU,我算不算是真正的數據科學家?
利用 SQL 進行數據分析初學者教程 - ep1
如何可視化城市的交通便捷性

TAG:数据科学家 |