是什麼驅動了Python近些年強力的增長?來自Stack Overflow的分析
本文由 伯樂在線 - 艾凌風 翻譯。未經許可,禁止轉載!首發於為什麼 Python 增長如此之快? - 文章 - 伯樂在線
英文出處:stackoverflow。歡迎加入翻譯組。
為什麼 Python 增長的這麼快?它有很多的用途,從 Web 開發到數據科學,再到 DevOps,而且你要知道,現在有越來越多的應用是使用 Python 開發的。我是一個用 R 語言的數據科學家,所以我自然很想知道,在我這個領域,Python 已經增長到了什麼程度。還有哪些公司和組織最喜歡用 Python。
我們分析得出了以下兩個結論。首先,快速增長的 Python 主要是因為數據科學、機器學習以及學術研究。這一點可以從 pandas 軟體包的增長上看出,pandas 已經成為增長最快的與 Python 相關的標籤了。至於哪些行業在使用Python,我們發現如下行業對其最為關注,比如電子、製造業、軟體、政務,尤其是高校。但是,Python 在各個行業的增長几乎是差不多的。這也恰好說明了,數據科學和機器學習對於各行各業來說,變得越來越常見,而且 Python 在這兩個領域已經成為了最為普遍的選擇。
與之前一樣,本文的分析也只針對世界銀行所公布的高收入國家進行。
Python能夠做哪些工作?
Python 是一個用途廣泛的語言,比如說web開發和數據科學。我們是如何理清Python在這些領域的增長的呢?
每個領域都有一些比較著名的庫,我們可以研究一下這些庫所對應標籤的訪問量。我們可以比較 web 開發框架 Django 和 Flask 以及數據科學領域的 NumPy,matplotlib 和 pandas (你可以使用 Stack Overflow Trends 來比較某個問題被問到的比率,而不是僅僅是訪問量)
對於來自高收入國家的訪問量,padnas 是增長最快的Python軟體包:它於2011年問世,而現在,Stack Overflow 中有 1% 的問題都是關於它的。關於 numpy 和 matplotlib 的問題也在不斷增長。與之相對的是,與 Django 相關問題的增長比較平緩,Flask 雖然有所增長,但仍舊比較小眾。這表明,大多數 Python 問題的的增長主要還得歸功於數據科學,而不是 Web 開發。
但是,這只是一方面,因為它只能測量常用的 Python 庫。Python 在系統管理員和 DevOps 工程師中也非常的流行,他們會同時訪問Linux,Bash 和 Docker 等領域的問題。同樣,很多 Python web 應用並不是基於 Django 或者 Flask 的,這些開發者很可能去訪問 JavaScript、HTML 和 CSS ,而我們不能簡單的計算 Linux、bash、javascript 這些標籤的增長並且假定它們和Python相關。因此,我們想要計算一下,與 Python 標籤一起訪問的標籤有哪些。
我們僅考慮今夏(2017年 6-8 月期間)的訪問量,這樣做可以減小學生們帶來的流量影響,專註於最近的流量數據,同時還可以減少計算量。此外,我們僅考慮註冊用戶,且該用戶在這段時間內應該至少訪問過50個問題。我們基於兩點判斷一個用戶是Python使用者:第一,他最多訪問的標籤是Python,第二,Python問題在他瀏覽的所有問題中,佔比至少要達到20%。
瀏覽Python標籤的人,通常還會瀏覽什麼標籤呢?
對於一個 Python 開發者來說,訪問最多的標籤是 Pandas(優勢非常明顯),這點我們絲毫不感到意外。訪問量第二多的標籤是JavaScript,這些流量代表了使用 Python 做 Web 開發的程序員。這證實了我們的猜想:我們應該考慮的是與Python標籤一起訪問的那些標籤,而不僅僅是與 Python 相關的標籤的增長(這兩者是有區別的)。
我們還能看到其他的一些「技術簇」(「clusters」 of technologies)。這些聚在一起的標籤,表現出了一定的相關性,藉此我們可以分析出它們之間的關係:比如說Python程序員是不是更加傾向於訪問某些特定的標籤。通過過濾出一組具有較高的皮爾森相關係數( Pearson correlation)的標籤,我們可以在圖表中看到三組關係:
我們可以看到一些較大的「技術簇」,它表明了Python可以解決的一類問題。在圖片的中上部分我們可以看到有關數據科學和機器學習相關的內容:有pandas,NumPy和Matplotlib,並且你可以發現它們和R語言,Keras以及TensorFlow息息相關。它下面的一個「技術簇」表現了有關web開發領域的一些關係,這裡有JavaScript, HTML, CSS, Django, Flask 和 JQuery。另外還有兩個「技術簇」,左邊是與系統管理/DevOps相關的(以linux和bash為中心),右邊是與數據工程相關的(包括Spark, Hadoop, 和 Scala)
話題的增長
我們發現,Python相關的訪問流量可以被歸納為一些特定的話題。這使得我們可以獲知,Python訪問量的增長,與哪些話題息息相關。
想像一下,我們正在研究一個用戶的歷史紀錄並發現Python是他最常訪問的標籤。我們怎麼才能進一步判斷出這個用戶的細分屬性呢?是web開發者?數據科學家?系統管理員?還是其他角色?為了達成這一目標,我們還需要去研究他訪問量第二多的標籤,第三多的標籤,以此類推。沿著這條路走下去,最終我們會在上述「技術簇」模型中,找到屬於這位程序員的位置。
因此,我們提出了一種簡單的方法,通過對以下九個標籤的訪問統計 ,我們將某個用戶歸類到某個話題中。
- 數據科學:Pandas, NumPy 或 Matplotlib
- Web 開發者:JavaScript, Django, HTML
- 系統管理員/DevOps:Linux, Bash 或 Windows.
- 無法歸類:上述 9 個標籤的訪問量,沒有任何一個能夠佔據該用戶5%以上的流量。
雖說並不是特別精確,但是該方法可以讓我們快速的估計出每個領域對Python增長的影響力。我們也嘗試使用了更加嚴謹的計算手段,比如說潛在狄利克雷分布(Latent Dirichlet Allocation),得到的結果是相似的。
上述哪種類別的Python開發者越來越常見了呢?
考慮到我們現在主要研究的是用戶而不是問題,我們首先為您展示Stack Overflow全體註冊用戶訪問上述話題的比例變化趨勢(不論其是否訪問了Python話題)
我們可以看到,Web開發和系統管理員這兩大類在過去的三年中增長平緩,但是Python程序員訪問數據科學相關技術的佔比卻飛速增長。這就說明,Python的流行主要還是由數據科學以及機器學習驅動的。
通過計算Python程序員在2016和2017兩年中訪問某個標籤點流量,我們還可以研究一下每個單獨標籤的增長水平。比方說,可能出現的情況是:Javascript標籤的流量總體平穩,但若僅考慮Python程序員對此標籤的訪問,Javascript標籤的訪問佔比可能會下降。當我們計算出每個標籤的增長速率後,我們可以在網路圖表中展現出某個話題的增長或萎縮。
這些工作有利於證明我們的猜想:Python的增長主要和數據科學以及機器學習相關,圖表中大多數的技術簇都在向橙色演變,這說明這些標籤開始成為Python生態系統的主角了。
來自工業界的數據
理解Python的增長還有一個途徑,那就是考察一下訪問它的流量都來自哪些類型的公司。
我們僅關注Python增長速度最為顯著的兩個國家:美國和英國。在這倆國家中,我們可以將流量按照行業歸類(就像我們對比AWS和Azure一樣)
訪問Python最多的是學術界(優勢明顯),包括各類科研院校。是因為為本科生開了Python課么?
可能有這方面的原因,但絕不是全部的原因。在上一篇文章中我們看到,Python的流量在夏季的時候也很多,不僅僅是春秋兩季。比如,Python和Java是高校最常訪問的標籤,我們可以看出兩者的季節性變化是不同的。
我們可以看到,Java在夏季訪問量下降的非常多,因為Java是最常見的本科課程。與之相對的是,Python在夏季流量的佔比非常高。來自高校的Python的高訪問量主要是來自科研人員,他們整年都在工作。這也為我們的猜想提供了更多的證據,Python的增長主要是因為它強大的科學計算能力和數據分析能力。
至於其他行業,我們發現Python在政府部門非常流行,增長迅速。同時,Python在電子和製造業也被廣泛使用。我對這些行業不太了解,很想了解它們是如何使用Python的。在零售業和保險業,Python還不是主流,一些研究表明,Java在這些行業仍然佔據統治地位。
本文主要研究的是Python的增長。那麼,Python在某個行業的增長速度,是否明顯高於其他行業呢?
過去一年裡,Python在各行業的增長几乎是差不多的,至少在英美兩國是這樣。各個行業訪問Python的流量增長了2-3個百分點(對於原本使用Python不多的行業,這樣的增長是非常顯著的,比如之前提到的保險和零售業)
在大部分行業中,Java仍然是最多訪問的標籤(2017年截止到目前的最新數據),但是Python進步明顯。比如,在金融領域(該領域是SO站點訪問量佔比較大的行業之一),Python的訪問量從2016年排名第四升至2017年的排名第二。
結論
作為一個數據科學家,我以前使用 Python 但是現在用 R 語言工作,這些研究是否會讓我重回 Python 的懷抱?
我並不這樣認為,一方面,R 語言增長的同樣很快;在上一篇文章裡面我們可以看到,R 語言是增長速度第二快的編程語言,僅次於Python。我更傾向於使用 R 語言進行數據分析,這和它的流行度並沒有關係。(我準備寫一篇個人博客,講講我為何從 Python 遷移到R,為何兩種語言我都喜歡但卻不願意重回 Python 的懷抱)
不論如何,數據科學是一個令人激動,增長迅速的領域,這一領域空間很大,還能容得下很多語言,我鼓勵開發者們在他們職業生涯的早期應該考慮去學習一些數據科學的技能。數據科學是軟體開發生態系統中增長最為迅速的領域,並且越來越多的滲透到各行各業中。
SO 原文的讀者評論精選:
onemerlin : 作者對Python在電子和製造業的增長有興趣,我是一個嵌入式老兵,我來給大家介紹一下。在電子行業,以前測試工具都是C/C++/Java寫的,和腳本語言比起來,維護它們代價太大,有了Python,我們的硬體工程師只需要藉助一些 I/O庫就可以快速的編寫一些腳本了。此外,以前用於布線和模擬的CAD軟體都適用 TCL 編程,和 Python 語言相比,TCL太反人類了。
Robert Mennell: 我很好奇,如果說一個人使用Python是為了它和C語言交互的能力,為什麼不用NodeJs呢(不知道還可以用NodeJs來封裝么?)我見過很多優秀的NodeJs程序員,和C++程序員合作,使用javascrip進行硬體交互。這些人都晉陞的比較快,沒時間訪問stack overflow,相反,那些不知道Nodejs可以做這些事情的科研人員才老喜歡到Stack Overflow搜搜搜。
jdenvir : 我是一個數學家、程序員,工作是一個生物醫學家。生物和生物醫學最近一二十年向著計算方向發展,我必須要教那些20幾歲的博士去學習編程,我是一個Java程序員,但是Java不適合這些初學者,R語言感覺有點怪,除非你是個統計學家。Python正好彌補了這些,容易上手,足夠強大可以去幫助我們研究真正的科學。
Mike : 「為什麼Python(蟒蛇)增長的這麼快?」「我不曉得,不過我建議你打電話給蟲害管理機構,等它們把你吞掉了就來不及了」
(Mike,你是Reddit派來的逗比么?)
推薦閱讀:
※Python入門 文件讀取與寫入
※Python3 是否已經完成了取代 Python2 的歷史進程?
※[18] Python元組
※6、Admin
※Python新階段