為何Python攀上數據科學巔峰?KDnuggets2017調查Python超越R
選自KDnuggets等
機器之心整理
參與:李澤南、李亞洲、路旭陽
根據 KDnuggets 2017 年最新調查,Python 生態系統已經超過了 R,成為了數據分析、數據科學與機器學習的第一大語言。本文對 KDnuggets 的此項調查結果做了介紹,並補充了一篇文章講解為何 Python 能成為數據科學領域最受歡迎的語言。
Python vs R:2017 年調查結果
近日,KDnuggets 發起了一項調查,問題是:
你在 2016 年到現在是否使用過 R 語言、Python(以及它們的封裝包),或是其他用於數據分析、數據科學與機器學習的工具?
預料之內的是,Python 並沒有完全「吞噬」R 語言的空間,但這項基於 954 個參與者的投票顯示,Python 生態系統在今年已經超越了 R 語言,成為了數據分析、數據科學和機器學習的第一大語言。
值得一提的是,在 2016 年的調查中,Python 還處於落後地位(34% 比 42%),在 2017 年,兩者的對比是 41% 比 36%。
此外,參與這項調查的 KDnuggets 讀者也有傾向於共同使用 Python 和 R 兩種語言的趨勢(12%),而使用其他工具的人則有所減少(從 16% 降至 11%)。
圖 1. 2016 年與 2017 年在數據分析、數據科學和機器學習上,Python、R、兩者共同使用,以及其他平台的人數對比。
下面,讓我們看看不同平台之間的轉換。
圖 2. 2016 年與 2017 年間,數據分析、數據科學和機器學習上,Python、R、兩者共同使用,以及其他平台的人數轉換示意。
這張圖看起來有點複雜,其中有兩個主要方面都是 Python 獲得勝利。
忠誠度:Python 的用戶顯得更加忠誠,有 91% 的 2016 年 Python 用戶仍然在使用這個語言,而 R 語言的忠誠度為 74%,其他平台為 60%。
轉換趨勢:只有 5% 的 Python 用戶轉投 R 語言,反向轉換的比例則是 10%。而對於在 2016 年使用兩種語言的用戶而言,只有 49% 的人仍在使用雙平台,38% 現在只用 Python,而 11% 轉移到了 R 語言上。
在 KDnuggets 2015 年的調查中,並沒有提出「同時使用 Python 和 R 語言」的選項,所以下圖的趨勢線中,2016 年和 2017 年的數據按照如下公式進行了轉換
Python=(Python 比例)+50%(同時使用 Python 和 R)
R=(R 比例)+50%(同時使用 Python 和 R)
我們可以看到,R 的使用份額正在逐漸下降(從 2015 年的 50% 降低到了 2017 年的 36%),而 Python 的比例則呈逐年上升趨勢——從 2014 年的 23% 增加到了 2017 年的 47%。同時,其他平台的使用量在逐漸減少。
最後,讓我們看看這次調查的參與者地區分布:
美國/加拿大:40%
歐洲:35%
亞洲:12.5%
拉丁美洲:6.2%
非洲/中東:3.6%
澳大利亞/紐西蘭:3.1%
為了簡化圖表,在下圖中,同時使用兩種語言與使用其他語言的比例被合併。
圖 4:分區域對比 Python、R 、其他,2016 對比 2017
我們在所有地區都發現了同樣的模式:
Python 的比重增加了 8%-10%;
R 的比重下降了 2%-4%;
其他平台的比重下降了 5%-7%。
Python 用戶的未來看起來一片光明,但我們預期 R 和其他平台在未來會保持住一定比重,因為它們巨大的嵌入式基礎。
Python 是如何上升到數據科學頂峰的
可以肯定地說,Python 是一個十分受歡迎的工具,它涵蓋了各個行業的各種職業。由於它親近性的語言、豐富的資源和框架以及它龐大硬體開發族群,Python 自然是開發人員們的首選工具。Packt 在 2017 年的技能調查顯示,在不同職位的技術專業人員中,Python 從 2016 年的第二名上升成為用戶最多的工具。我們向 Sebastian Raschka 提問:為什麼不論是應用機器學習還是深度學習的研究者,亦或是 Packt 的暢銷書 Python 機器學習的作者都轉向了 Python 學習?這個語言的下一步將會是什麼?他不得不承認:Python 已成為近二十年來最流行的語言。
艱難登頂:PYTHON 是如何成為數據科學通用語言的?
Python 是有史以來最流行的編程語言之一,這一點是毫無疑問的。但是最初發生的事情確實很難描述的,是語言本身還是對編程語言的愛。是否是我們首先為科學計算、數據科學以及機器學習開發出優秀的開源的資料庫才推動了大家選擇 Python 作為他們的工具,或是因為越來越多的人在使用 Python 我們才把這些開發出來。
無論哪一種是對的,有一件事是足夠顯而易見的:Python 是一種非常通用的語言,易於學習和使用。在我看來,這是今天它被如此普遍使用的原因。雖然科學計算的大多數演算法都沒有在純 Python 中實現,Python 仍然是用於與 Fortran,C / C ++和其他語言中的非常有效的實現交互的優秀語言。
所謂的從計算高效的低級語言調用代碼,以及 Python 為用戶提供一個非常自然和直觀的編程介面的這一事實可能是 Python 作為通用語言普及的重要原因之一,特別是在數據科學和機器學習社區中體現的更為明顯。
未來的框架:我們應該關注什麼工具、框架和資料庫
Python 開發了許多有趣的庫。作為一名數據科學家或機器學習從業者,我時常從 Python 核心科學堆棧中重點關注維護良好的工具。例如,NumPy 和 SciPy 是就是用於處理數據數組和科學計算的高效庫。
當涉及嚴重的數據清洗時,我們可以使用多功能的 Pandas 包。Pandas 是一個開源庫,可以為 Python 編程語言提供快速簡化的數據處理和數據分析工具,它主要是為 Python 提供現實和高端的數據分析。我還建議使用 Matplotlib 進行數據可視化,Seaborn 還可以提供更多的繪圖功能和更專門的繪圖。此外 Scikit 學習是一個很好的通用機器學習工具,它為數據挖掘和分析提供了有效的工具。這可能是我最喜歡的一款了,因為它幾乎可以為所有的基本機器學習演算法和許多有用的數據處理工具提供一個非常好用的 API。
當然,我在自己的項目中發現了很多有用的庫。當我需要額外的性能時,我首選的數據框架庫是 Dask。Dask 是一個非常適合處理大型、難以裝入內存的數據框架的庫,它還能在多個處理器中進行並行計算。或者使用 TensorFlow、Keras 和 PyTorch,所有這些都非常適合實現深度學習模型。使用什麼庫取決於你的個人偏好和項目需求,但是一直以來都有很多方便有趣、使用 Python 開發的框架,關鍵是找到適合你自己的。
Python 的未來是什麼樣的?
在大多數人的眼裡,Python 的未來非常光明。這個語言剛剛被 IEEE Spectrum 列為第一大編程語言。而 Packt 最近的調查也顯示它是最近一段時期內科技界最為流行的工具。儘管在這裡,我們主要從數據科學和機器學習的角度談論 Python,但我們也會經常聽說其他領域的人們也認為 Python 是一種功能豐富的語言,擁有大量的庫和完整的生態系統。Python 或許不是所有問題的最佳工具,但對於想要「完成任務」的程序員來說,它被認為是一種「有效」的語言。
此外,雖然擁有大量庫是 Python 的優勢之一,但它的大多數開發包目前都得到了很好的維護——那些數據科學和機器學習庫每天都有新特性與提升。例如 2006 年發起的 NumPy 項目,作為 Python 數據科學的核心庫,最近它剛剛接受了價值 64.5 萬美元的資助。
Python 及其相關庫在我們的工作中扮演了重要角色,我非常感謝所有這些工具背後的開發者,沒有這些開源庫,Python 就沒有今天。對於我們來說,Python 可以成為非常重要的工具,我希望它的用戶們能夠多考慮幫助開源社區的發展,不論文檔修改、bug 修復還是新代碼、新特性或新庫,所有貢獻都將幫助整個社區向前發展。因為這個富有活力的社區,Python 的未來有著光明的前景。
※為何Python攀上數據科學巔峰?KD2017調查Python超越R
※AI Challenger 開賽:國內最大規模深度學習數據集上線
※CV 界學術明星肖建雄創業了,他想讓自動駕駛像電腦一樣普及 專訪
※受夠了碎片信息和大眾搜索?機器之心新上線的「AI商用垂直搜索」
※受夠了碎片信息和大眾搜索?機器之心新上線的AI商用垂直搜索
TAG:機器之心 |