近日,TIOBE 最新一期編程語言排行榜新鮮出爐,Python再次位居榜首。作為時下最火的編程語言,Python可以說是應用極其廣泛,大到數(shù)據(jù)科學,小到運維、爬蟲等等,各大領域隨處可見Python的痕跡。
人人都說Python好,但Python究竟有多大的魔力能夠如此備受歡迎。
以數(shù)據(jù)科學領域為例,Python有很多完善的工具包可以協(xié)助你完成重要的數(shù)據(jù)科學任務。本文將具體分析Python深受廣大科學家喜歡的原因。
數(shù)據(jù)科學對 Python 的需求:
數(shù)據(jù)科學是幫助我們從一系列結構化和非結構化的數(shù)據(jù)中提取信息的研究,它利用統(tǒng)計學、數(shù)學、科學計算來分析數(shù)據(jù)。
由于Python語法簡單,即便沒有工程背景的人,也能輕松掌握,所以Python成為在數(shù)據(jù)科學領域想要出類拔萃所需的重要技能之一,而且它被認為是數(shù)據(jù)科學的最佳選擇。
Python在數(shù)據(jù)科學領域有著悠久的歷史:
- 2016年 Python 在 Kaggle 平臺超越了R,Kaggle 是一個著名的數(shù)據(jù)科學競賽平臺,來源:Finextra
- 2017年,Python 在 KDNuggets 的年度數(shù)據(jù)科學家調查中超過了R,來源:KDnuggets
- 在2018年,大約66% 的數(shù)據(jù)科學家稱他們每天都使用 Python,這是一個巨大的數(shù)字,并使其成為專業(yè)分析人員的首選語言,來源:KDnuggets
據(jù)專家介紹,隨著 Python 語言的發(fā)展,這種趨勢將繼續(xù)下去。另外,根據(jù) Indeed 的報告,數(shù)據(jù)科學家的平均底薪約為109,596美元/年。而且近年來,市場上數(shù)據(jù)科學家的工作機會急劇增加。
為什么 Python 被用于數(shù)據(jù)科學:
Python是一種通用的、易用的語言,并且在數(shù)據(jù)科學中被認為是最佳語言。在可擴展性方面,Python比像R一樣的其他編程語言更有優(yōu)勢。它為數(shù)據(jù)科學家提供了靈活性,而且提供了解決問題的不同方法。在速度方面,Python再次在其同行語言(如Matlab和Stata)中脫穎而出。
下面將討論 Python 語言的一些重要特性:
- Python語法使用起來相當簡單,任何人都可以在較短的時間內學會 Python;
- 許多健壯的第三方庫被用于數(shù)據(jù)科學應用。庫是模塊的集合,可以反復應用于不同程序;
- 強大的社區(qū)支持,有助于使庫和框架保持最新,社區(qū)人數(shù)超過1千萬人。來源:developer-tech
- 庫和框架可以免費下載和使用,Python 庫和框架總數(shù)估計在 137000左右;
- Python 是一種解釋型編程語言,與 C 或 C + + 不同,Python代碼首先被轉換成低級指令的字節(jié)碼,然后由 Python 解釋器執(zhí)行;
- Python 是跨平臺的,這意味著一旦代碼是用 Python 編寫的,它就能夠在任何操作系統(tǒng)中運行:例如 Windows、 Mac、 Linux 等等。注意,Python 解釋器是依賴平臺的;
- Python 可以實現(xiàn)自動化,因此,我們可以將日常生活中某些耗時的任務自動化。例如,一位班主任希望根據(jù) excel 表中的分數(shù),制作一份學生電子成績單。假設一個班有100個學生,一個接一個地做成績單似乎不是一個好的選擇。為了解決這個問題,我們可以創(chuàng)建一個 Python 腳本,該腳本基于 excel 工作表,創(chuàng)建所有學生的電子成績單。
如何使用 Python 進行數(shù)據(jù)科學?
Python 提供了 NumPy、 pandas、 SciPy、 matplotlib 等庫,讓我們可以輕松地完成數(shù)據(jù)科學的日常任務。下面將討論其中的一些庫:
Numpy:Numpy是Numerical Python的首字母縮寫,它是一個Python庫,提供數(shù)學函數(shù)的支持,程序員可以使用這些函數(shù)來操作更大維度的數(shù)組,它包含一些有用的功能,有助于處理數(shù)組和矩陣。
Pandas:Pandas 是 Python 開發(fā)者中最受歡迎的庫之一,該庫的主要目標是通過其內置的函數(shù)來分析和操作數(shù)據(jù),這個庫還可以輕松處理大量的結構化數(shù)據(jù)。 Pandas 支持兩種類型的數(shù)據(jù)結構:
- Series:一維數(shù)據(jù);
- DataFrame :二維數(shù)據(jù)。
SciPy: SciPy 是另一個流行的 Python 庫,專門用于執(zhí)行數(shù)據(jù)科學任務,它在科學計算領域也很有用。它提供了解決科學計算問題和計算機編程任務的功能,它由下列子模塊組成:
- 信號和圖像處理
- 優(yōu)化算法
- 積分
- 插值
Matplotlib:Matplotlib 是非常特殊的 Python 庫,它用于數(shù)據(jù)可視化。數(shù)據(jù)的可視化對任何組織都非常重要。它提供了數(shù)據(jù)可視化的方法,這個庫不僅限于繪制餅圖、條形圖、直方圖,而且還能繪制高級圖形。這個庫的另一個特性是支持自定義,圖形中的任何部分都可以有效地定制。
Matplotlib 為我們提供了縮放圖表和以圖片格式保存圖表的功能。
當我們以數(shù)據(jù)科學相關的角色進入一個組織時,一般來說,該組織遵循以下工作流程。
- 使用 Python 和 SQL 從公司數(shù)據(jù)庫獲取數(shù)據(jù);
- 使用 pandas 庫將數(shù)據(jù)插入到一個數(shù)據(jù)框架中,以便稍后進行分析;
- 然后在 Pandas 和 Matplotlib 等庫的幫助下開始進行數(shù)據(jù)的分析和可視化;
- 深入分析和挖掘組織的數(shù)據(jù),并根據(jù)給定的數(shù)據(jù)預測未來的結果,Scikit庫負責把預測模型準備好。
Python扮演了什么樣的角色?
現(xiàn)在讓我們共同回顧一下數(shù)據(jù)科學處理問題過程中的各個步驟,以此來進一步了解Python在其中所扮演的角色。
1、數(shù)據(jù)收集和清洗
通過Python,你可以加載各種不同格式的數(shù)據(jù),比如CSV(逗號分隔值)、TSV(制表符分隔值)或者源自網絡的JSON。
無論是你想直接把SQL表格載入到你的程序中,還是說需要爬取網站信息,Python都可以幫助你輕松完成這些任務:前一個任務可以用PyMySQL包,后一個任務可以用 BeautifulSoup包。PyMySQL可以讓你輕松連接MySQL數(shù)據(jù)庫、執(zhí)行查詢、抽取數(shù)據(jù)等。BeautifulSoup可以幫助你讀取XML和HTML類型的數(shù)據(jù)。在提取和替換數(shù)值后,你可能還要在數(shù)據(jù)清洗階段處理缺失值和無意義值。
此外,如果你在處理某一特殊的數(shù)據(jù)集時遇到麻煩,你可以去網上搜索這一數(shù)據(jù)集名稱再加上“Python”,或許就能夠找到解決方案。
2、數(shù)據(jù)探索
現(xiàn)在你已經收集好數(shù)據(jù),并對這些數(shù)據(jù)進行了標準化處理,接下來就要進行數(shù)據(jù)探索了。在這個過程中,你需要理清業(yè)務邏輯中所發(fā)現(xiàn)的問題,并將這一問題轉換成標準化的數(shù)據(jù)科學問題。
為了實現(xiàn)這一點,需要對數(shù)據(jù)的類型進行更深層次的探析,并將它們分離成不同的數(shù)據(jù)類型,比如說數(shù)值(numerical)、序數(shù)(ordinal)、標稱(nominal)、類別(categorical)等,以便提供它們所需的處理方式。
一旦理清了數(shù)據(jù)所屬的類別,就可以使用Python中用作數(shù)據(jù)分析的庫NumPy和Pandas來對這些數(shù)據(jù)進行探索。此外,Python在數(shù)據(jù)探索的過程提供了大量的工具,你可以在搜索引擎中進行檢索來獲取更多的信息。
當完成了這些步驟后,你就可以開始人工智能和數(shù)據(jù)建模機器學習步驟。
3、數(shù)據(jù)建模
這一步對于數(shù)據(jù)科學流程來說是一個非常關鍵的階段,而建模之前的特征選擇階段,你可能需要對現(xiàn)有的數(shù)據(jù)集進行降維的工作。Python語言能夠非常方便地幫助你進行這一項任務,它擁有許多高級的工具庫來幫助你解決問題。
如果想針對數(shù)據(jù)執(zhí)行一個數(shù)值模型分析,你只需要使用Python中的Numpy。利用SciPy可以輕松使用科學計數(shù)和計算。而Python上的Scikit-learn代碼庫給出很多直觀的接口,幫助你在數(shù)據(jù)上應用機器學習算法,整個過程不會察覺到任何困難。
當數(shù)據(jù)建模完成后,你可能需要進行可視化展示,并對數(shù)據(jù)中有價值的情報進行解釋。
4、數(shù)據(jù)可視化和解釋
Python帶有許多數(shù)據(jù)可視化的包。Matplotlib 是最為常用的庫,可以生成基本的圖形和圖表。如果你需要設計精美的高級圖表,你也可以試一下另一個Python包Plotly。
還有一個Python包IPython,可以進行交互式數(shù)據(jù)可視化,并支持利用GUI工具箱。如果你想把調查結果嵌入到交互式網頁中,nbconvert 函數(shù)可以幫助你將IPython轉化或把Jupyter notebooks放入到HTML代碼片段中。
在完成數(shù)據(jù)可視化之后,如何展示你的數(shù)據(jù)是極為重要的,并且這必須要以可以回應項目中業(yè)務邏輯的問題為目的。
現(xiàn)在你可以用這些有價值的信息為之前業(yè)務邏輯中的問題來找尋答案,要謹記你的這些解釋對于公司的項目干系人來說是很有幫助的。
準備好用Python來擁抱你的數(shù)據(jù)科學目標了嗎?
為什么在踏上數(shù)據(jù)科學的旅程時使用Python編程,這篇文章已經給了你非常多的理由。這里還有一個新的理由,那就是頂級的科技巨頭同樣使用Python。
Google,Youtube,Instagram,NASA,IBM,Netflix,Spotify,Uber,Pinterest,Reddit等都是使用Python進行數(shù)據(jù)科學研究的頂級公司。
最適合數(shù)據(jù)分析的Python是處理大量數(shù)據(jù)的最佳選擇。它的靈活性,易學性和庫的優(yōu)勢使其成為在大數(shù)據(jù),機器學習等領域工作的最佳語言。
數(shù)據(jù)科學的應用:
1、醫(yī)療保健行業(yè):在過去的幾年里,由于數(shù)據(jù)科學領域的發(fā)展,醫(yī)療部門已經受益?,F(xiàn)在,通過MapReduce等庫和框架,可以實現(xiàn)動脈狹窄等醫(yī)學圖像分析程序。
2、互聯(lián)網搜索:大多數(shù)搜索引擎,如谷歌、雅虎、必應等,都在內部使用數(shù)據(jù)科學算法,以便在幾秒鐘內生成最佳結果。據(jù)報道,谷歌每天處理超過20 PB的數(shù)據(jù)。因此,如果沒有數(shù)據(jù)科學,我們甚至無法想象搜索引擎今天是什么樣子。
3、金融領域:無論是數(shù)據(jù)管理,還是交易策略的制定,數(shù)據(jù)科學對于增強金融解決方案有著巨大的前景。數(shù)據(jù)科學在自動化風險管理、管理客戶數(shù)據(jù)、預測分析、實時分析(欺詐識別/消費者分析/算法交易)、深度個性化和定制等方面均發(fā)揮著非常大的作用。
4、制造業(yè):在一個制造企業(yè)中,往往數(shù)字化、應用數(shù)據(jù)的開始,就是一些可視化的數(shù)據(jù)探索。通過把一些數(shù)據(jù)某些維度可視化,挖掘出一些淺層的信息,這些往往會帶來很大的價值,尤其是用于領導層的決策,用于更高效的展示結果和問題的交流。
不僅如此,數(shù)據(jù)科學的應用從醫(yī)療保健到商業(yè)再到零售,很多大行業(yè)都在使用數(shù)據(jù)科學。
總結
Python 是任何數(shù)據(jù)科學家的基礎,如果你想從事數(shù)據(jù)科學領域的工作,那么你絕對應該考慮 Python 作為主要語言,因為它語法簡單并且有大量的支撐庫。
譯者介紹
王德朕,51CTO社區(qū)編輯,10年互聯(lián)網產研經驗,6年IT教培行業(yè)經驗。原K12教育上市公司產品經理,技術博客專家,藍橋簽約作者,《滾雪球學Python》專欄作者,《爬蟲100例》專欄特約作者,78技術人社區(qū)發(fā)起者。
原文標題:How Python Became The Language for Data Science,作者:Sonia Mathias
鏈接:https://www.datasciencecentral.com/how-python-became-the-language-for-data-science/