
如何使用 Python 開始建立你的數(shù)據(jù)分析項目
現(xiàn)在有很多博文對復(fù)雜的機(jī)器學(xué)習(xí)算法和前沿的技術(shù)進(jìn)行了展示,而這也促使數(shù)據(jù)科學(xué)家們慢慢變成了“社交控”(FOMO)。但數(shù)據(jù)分析的基本內(nèi)容究竟是什么樣的?你應(yīng)當(dāng)怎樣安排項目結(jié)構(gòu)?你需要使用什么樣的工具?等等諸如此類的問題卻鮮有人問津。本文將會對如何建立項目提供一些啟發(fā)思路,以幫助你快速達(dá)到 在數(shù)據(jù)科學(xué)領(lǐng)域能有所產(chǎn)出 的境界。
項目結(jié)構(gòu)
項目的結(jié)構(gòu)總是為了契合人們的需求而得到不斷完善,這會導(dǎo)致在一個團(tuán)隊中出現(xiàn)不同的項目構(gòu)架。如果你或者團(tuán)隊中的其他人能夠及時發(fā)現(xiàn)項目結(jié)構(gòu)的重要性,并且這個概念在團(tuán)隊中得到推廣,那么,你無疑是幸運的。
多年前作者偶然發(fā)現(xiàn)了 R 語言的項目模板 網(wǎng)站。從那之后,作者便一直提倡身邊的人使用規(guī)范的項目結(jié)構(gòu)。最近,DrivenData 發(fā)布了更為普適的 Cookiecutter Data Science 來構(gòu)建項目結(jié)構(gòu)。
而這些網(wǎng)站在項目構(gòu)建方面的思路大致如下:
一個連貫且組織良好的結(jié)構(gòu),以便于人們協(xié)作
你的分析應(yīng)當(dāng)可復(fù)現(xiàn),而你的項目結(jié)構(gòu)可以滿足這個需求
不應(yīng)該從原始數(shù)據(jù)作為出發(fā)點開始你的項目,而應(yīng)當(dāng)假設(shè)原始數(shù)據(jù)不變,創(chuàng)建其他派生的文件
作者簡略的項目結(jié)構(gòu)如下所示:
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.
你可以在 這里 看到相關(guān)實例。
項目通常遵循另一種結(jié)構(gòu):
原始數(shù)據(jù)不變,存儲在 data/中;
數(shù)據(jù)處理和相關(guān)輸出圖分別存儲在不同的文件夾下,例如:figures/和output/;
筆記文件存儲在notebooks/;
項目信息撰寫在README.md中;
項目代碼放置在獨立的文件夾下。
實際上,你選擇什么樣的項目結(jié)構(gòu)并不重要,只要它能符合你的工作流程,你也能堅持使用它。你應(yīng)該嘗試去理解何為項目,從而選擇滿足要求的項目結(jié)構(gòu)。
虛擬環(huán)境
項目之間應(yīng)當(dāng)相互獨立,你肯定不希望新的項目打亂了之前的工作成果。我們可以通過把不同項目的文件存儲在不同的文件夾下實現(xiàn)獨立性,但是不同項目之間也應(yīng)當(dāng)使用不同的 Python 環(huán)境。
虛擬環(huán)境依賴于不同的項目而相互獨立,避免了包的沖突問題。每個虛擬環(huán)境都安裝了特定版本的不同包。虛擬環(huán)境一中安裝了版本為 1.11 的numpy庫和版本為 0.18 的pandas庫,而虛擬環(huán)境二中則僅僅安裝了版本為 0.17 的pandas庫。作者選取適用于數(shù)據(jù)科學(xué)的 conda 管理虛擬環(huán)境(可在 這里 看到選擇它的原因)。
下列命令可以創(chuàng)建一個使用 Python 3.5 的新的 conda 虛擬環(huán)境,命名為 example_project:
$ conda install --name example_project python=3.5
激活虛擬環(huán)境( Windows 系統(tǒng)下將 source 省去):
$ source activate example_project
之后便可以安裝所需的包了:
$ conda install pandas numpy jupyter scikit-learn
當(dāng)你在不同的項目間跳轉(zhuǎn)時,可以運行source deactivate命令取消激活,并激活新的項目虛擬環(huán)境。
一旦你熟練使用activate和deactivate命令,就會發(fā)現(xiàn)虛擬環(huán)境是一個很輕巧的工具來保證 Python 環(huán)境的獨立。通過導(dǎo)出環(huán)境定義文件(例如,所有安裝的包名和版本號),你的項目就很容易得到復(fù)現(xiàn)了。如果你想查看更多細(xì)節(jié),可在Tim Hopper 的博文 中看到。
Git
每個項目都應(yīng)該有自己的 Git 資源庫。在每個項目創(chuàng)建一個資源庫可以幫助你追蹤每個項目的歷史和解決在不同的項目間復(fù)雜的版本依賴問題。
又或者,你可以選擇在一個資源庫中包含多個項目,將所有內(nèi)容存儲在一個位置。這樣做的缺點在于往往會因為合并沖突問題而告終(數(shù)據(jù)科學(xué)家通常并不能熟練使用 Git )。除了很多使用 Git 時出現(xiàn)的問題,這也會導(dǎo)致你的項目之間缺乏獨立性。
創(chuàng)建 Git 資源庫最簡單的方法就是在你的 Git 遠(yuǎn)程主機(jī)托管服務(wù)(例如,Github 和 GitLab )上創(chuàng)建一個新的 Git 資源庫,然后把它復(fù)制到本地:
$ git clone https://github.com/hgrif/example-project.git
你可以在這個空文件夾下構(gòu)建你的項目結(jié)構(gòu)。
如果你按照這個步驟執(zhí)行,并準(zhǔn)備在一個新文件夾下創(chuàng)建一些文件了。那么,你首先還需要在電腦上對 git 資源庫進(jìn)行初始化:
$ git init
然后在你的遠(yuǎn)程主機(jī)上創(chuàng)建一個新的 git 資源庫,得到它的鏈接,并運行下列命令:
$ git remote add origin https://github.com/hgrif/example-project.git
該命令會添加鏈接為 https://github.com/hgrif/example-project.git 的遠(yuǎn)程資源庫,并命令為 origin 。你可能需要把現(xiàn)有的 master分支推送到origin上:
$ git push --set-upstream origin master
在你的項目目錄下創(chuàng)建.gitignore文件可以避免將圖或數(shù)據(jù)誤填加進(jìn)資源庫中。作者一般使用 針對 Python 的.gitignore文件 ,并且在文件中加入 data/、figures/ 和 output/ 文件夾,以便 Git 可以忽略它們。
既然 Git 已經(jīng)設(shè)置好了,你就可以對核心內(nèi)容使用git add和git commit命令了!
使用工具
使用一些工具可以幫助你擺脫那些重復(fù)性工作。
Python 中的cookiecutter包可根據(jù)模板自動創(chuàng)建項目文件夾。你可以使用現(xiàn)有的模板,例如,Cookiecutter Data Science 或者 作者的項目結(jié)構(gòu)模板 ,或是創(chuàng)建你自己新的模板。
使用虛擬環(huán)境最好的方法就是選用支持它們的編輯器,比如:PyCharm 。你也可以使用 autoenv 或者 direnv 去激活虛擬環(huán)境,并設(shè)置環(huán)境的變量,如果你cd定位到一個工作目錄下的話。
結(jié)論
對你的數(shù)據(jù)科學(xué)項目有一個良好的設(shè)置將會有助于同其他人協(xié)作,并且項目本身也會更容易復(fù)現(xiàn)。一個好的項目結(jié)構(gòu),一個虛擬環(huán)境和一個 git 資源庫是每個數(shù)據(jù)科學(xué)項目的基石。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03