做者 | skura
來源 | AI開發者
大多數有抱負的數據科學家是經過學習爲開發人員開設的編程課程開始認識 python 的,他們也開始解決相似 leetcode 網站上的 python 編程難題。他們認爲在開始使用 python 分析數據以前,必須熟悉編程概念。html
資深數據分析師 Manu Jeevan 認爲,這是一個巨大的錯誤,由於數據科學家使用 python 來對數據進行檢索、清洗、可視化和構建模型,而不是開發軟件應用程序。實際上,爲了完成這些任務,你必須將大部分時間集中在學習 python 中的模塊和庫上。他認爲,學習數據科學的正確姿式應該以下文,AI 開發者進行了編譯整理。python
請按照下面這個步驟來學習數據科學的 python。算法
Jupyter Notebook 是開發和展現數據科學項目的強大編程環境。sql
在電腦上安裝 Jupyter Notebook 最簡單的方法是經過 Anaconda 進行安裝。Anaconda 是數據科學中使用最普遍的 python 工具,它預裝了全部最流行的庫。數據庫
你能夠瀏覽標題爲「A Beginner’s Guide to Installing Jupyter Notebook Using Anaconda Distribution」的博客文章(https://medium.com/better-programming/beginners-quick-guide-for-handling-issues-launching-jupyter-notebook-for-python-using-anaconda-8be3d57a209b),瞭解如何安裝 Anaconda。安裝 Anaconda 時,請選擇最新的 python 3 版本。編程
安裝完 Anaconda 後,請閱讀 Code Academy 的這篇文章(https://www.codecademy.com/articles/how-to-use-jupyter-notebooks),瞭解如何使用 Jupyter Notebook。數組
Code Academy 有一門關於 python 的優秀課程,大約須要 20 個小時才能完成。你沒必要升級到 pro 版本,由於你的目標只是熟悉 python 編程語言的基礎知識。課程地址:https://www.codecademy.com/learn/learn-python-3網絡
在處理計算量大的算法和大量數據時,python 速度較慢。你可能會問,既然如此那爲何 python 是數據科學最流行的編程語言?數據結構
答案是,在 python 中,很容易以 C 或 Fortran 擴展的形式將數字處理任務轉移到底層。這正是 NumPy 和 Pandas 所作的事情。機器學習
首先,你應該學會 NumPy。它是用 python 進行科學計算的最基本的模塊。NumPy 支持高度優化的多維數組,這是大多數機器學習算法最基本的數據結構。
接下來,你應該學習 Pandas。數據科學家花費大部分時間清洗數據,這也被稱爲數據整。
Pandas 是操做數據最流行的 python 庫。Pandas 是 NumPy 的延伸。Pandas 的底層代碼普遍使用 NumPy 庫。Pandas 的主要數據結構稱爲數據幀。
Pandas 的創造者 Wes McKinney 寫了一本很棒的書,叫作《Python for Data Analysis》(https://www.amazon.com/Python-Data-Analysis-Wrangling-IPython-ebook/dp/B075X4LT6K)。在書中的第 四、五、七、8 和 10 章能夠學習 Pandas 和 NumPy。這些章節涵蓋了最經常使用的 NumPy 和 Pandas 特性來處理數據。
Matplotlib 是用於建立基本可視化圖形的基本 python 包。你必須學習如何使用 Matplotlib 建立一些最多見的圖表,如折線圖、條形圖、散點圖、柱狀圖和方框圖。
另外一個創建在 Matplotlib 之上並與 Pandas 緊密結合的好的繪圖庫是 Seaborn。在這個階段,我建議你快速學習如何在 Matplotlib 中建立基本圖表,而不是專一於 Seaborn。
我寫了一個關於如何使用 Matplotlib 開發基本圖的教程,該教程由四個部分組成。
你能夠經過這些教程來掌握 Matplotlib 的基本知識。
簡而言之,你沒必要花太多時間學習 Matplotlib,由於如今公司已經開始採用 Tableau 和 Qlik 等工具來建立交互式可視化。
數據有組織地駐留在數據庫中。所以,你須要知道如何使用 SQL 檢索數據,並使用 python 在 Jupyter Notebook 中執行分析。
數據科學家使用 SQL 和 Pandas 來操縱數據。有一些數據操做任務使用 SQL 就能夠很容易地執行,而且有一些任務可使用 Pandas 高效地完成。我我的喜歡使用 SQL 來檢索數據並在 Pandas 中進行操做。
現在,公司使用 Mode Analytics 和 Databricks 等分析平臺來輕鬆地使用 python 和 SQL。
因此,你應該知道如何一塊兒有效地使用 SQL 和 python。要了解這一點,你能夠在計算機上安裝 SQLite 數據庫,並在其中存儲一個 CSV 文件,而後使用 python 和 SQL 對其進行分析。
這裏有一篇精彩的博客文章,向你展現瞭如何作到這一點:Programming with Databases in Python using SQLite(https://medium.com/analytics-vidhya/programming-with-databases-in-python-using-sqlite-4cecbef51ab9)。
在瀏覽上述博客文章以前,你應該瞭解 SQL 的基礎知識。Mode Analytics 上有一個很好的關於 SQL 的教程:Introduction to SQL(https://medium.com/analytics-vidhya/programming-with-databases-in-python-using-sqlite-4cecbef51ab9)。經過他們的基本 SQL 部分,瞭解 SQL 的基本知識,每一個數據科學家都應該知道如何使用 SQL 有效地檢索數據。
多數有抱負的數據科學家在不學習統計學的基礎知識的狀況下,就直接跳到機器學習知識的學習中。
不要犯這個錯誤,由於統計學是數據科學的支柱。並且,不少數據科學家學習統計學只是學習理論概念,而不是學習實踐概念。
個人意思是,經過實踐概念,你應該知道什麼樣的問題能夠用統計學來解決,瞭解使用統計數據能夠解決哪些挑戰。
如下是你應該瞭解的一些基本統計概念:
抽樣、頻率分佈、平均值、中位數、模式、變異性度量、機率基礎、顯著性檢驗、標準差、z 評分、置信區間和假設檢驗(包括 A/B 檢驗)
要學習這些知識,有一本很好的書能夠看看:《Practical Statistics for Data Scientists: 50 Essential Concepts》(https://www.amazon.com/Practical-Statistics-Data-Scientists-Essential/dp/9352135652)。不幸的是,本書中的代碼示例是用 R 編寫的,可是不少人包括我本身在內使用的是 Python。
我建議你閱讀本書的前四章。閱讀本書的前 4 章,瞭解我前面提到的基本統計概念,你能夠忽略代碼示例,只瞭解這些概念。本書的其他章節主要集中在機器學習上。我將在下一部分討論如何學習機器學習。
大多數人建議使用 Think Stats (https://www.amazon.com/Think-Stats-Allen-B-Downey/dp/1449307116)來學習 python 的統計知識,但這本書的做者教授了本身的自定義函數,而不是使用標準的 python 庫來進行統計知識講解。所以,我不推薦這本書。
接下來,你的目標是實如今 Python 中學習的基本概念。StatsModels 是一個流行的 python 庫,用於在 python 中構建統計模型。StatsModels 網站提供了關於如何使用 Python 實現統計概念的優秀教程。
或者,你也能夠觀看 Gaël Varoquaux 的視頻。他向你展現瞭如何使用 Pandas 和統計模型進行推理和探索性統計。
Scikit-Learn 是 Python 中最流行的機器學習庫之一。你的目標是學習如何使用 Scikit Learn 實現一些最多見的機器學習算法。
你應該像下面這樣作。
首先,觀看 Andrew Ng 在 Coursera 上的機器學習課程(https://www.coursera.org/learn/machine-learning)的第 一、二、 三、6,、7 和第 8 周視頻。我跳過了關於神經網絡的部分,由於做爲初學者,你必須關注最通用的機器學習技術。
完成後,閱讀「Hands-On Machine Learning with Scikit-Learn and TensorFlow」一書(https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291)。你只需瀏覽這本書的第一部分(大約 300 頁),它是最實用的機器學習書籍之一。
經過完成本書中的編碼練習,你將學習如何使用 python 實現你在 Andrew Ng 課程中學習到的理論概念。
最後一步是作一個涵蓋上述全部步驟的數據科學項目。你能夠找到你喜歡的數據集,而後提出有趣的業務問題,再經過分析來回答這些問題。可是,請不要選擇像泰坦尼克號這樣的通用數據集。你能夠閱讀「19 places to find free data sets for your data science project」來查找合適的數據集(https://www.dataquest.io/blog/free-datasets-for-projects/)。
另外一種方法是將數據科學應用到你感興趣的領域。例如,若是你想預測股票市場價格,那麼你能夠從 Yahoo Finance (https://www.scrapehero.com/scrape-yahoo-finance-stock-market-data/)中獲取實時數據,並將其存儲在 SQL 數據庫中,而後使用機器學習來預測股票價格。
若是你但願從其它行業轉行到數據科學,我建議你完成一個利用你的領域專業知識的項目。關於這些,我在之前的博客文章"A Step-by-Step Guide to Transitioning your Career to Data Science – Part 1"(https://www.kdnuggets.com/2019/05/guide-transitioning-career-data-science-part-1.html) 和"A Step-by-Step Guide to Transitioning your Career to Data Science – Part 2"(https://www.kdnuggets.com/2019/06/guide-transitioning-career-data-science-part-2.html)中有提到過。