Python官方在今年2月做了一份報告,從官方的角度說明瞭Python的使用狀況和受歡迎程度:
該調查由 Python 軟體基金會與 JetBrains 一起發起,有來自 150 多個國家的超過兩萬名開發人員參與。
從官方喜出望外的報告中,我們可以看到Python受到大部分人的歡迎,依舊是使用者手中的香餑餑:
在Python的用途上,大家使用Python最常用的場景是資料分析,從漲幅來看也是最高的。相關的機器學習場景漲幅也有7%。
這不禁引出一個問題:Python作為程式語言在資料分析領域的地位似乎舉足輕重,但明明有更親民的Excel、Tableau、PowerBI等軟體,為什麼資料分析師最終都會程式碼化?
作為一名使用Python的資料分析師,我想舉幾個小例子說明:
原因 1
滑鼠操作流程手速太慢
即使是打遊戲,手速也很大程度上來源於快捷鍵的使用。
資料分析也一樣,程式碼能簡化大量滑鼠操作流程,用語言將過程“指令碼化”,會幫助分析師減去不必要的操作時間,留出更多時間放在“分析過程”上。
舉個例子,Excel做分析的過程可能是:定位空值-刪除空值-修改資料格式-去除異常值-公式計算-資料透視表-整理資料-插入圖表-調整結果……
繁瑣的每一步都是來自滑鼠點選,中間錯誤了哪一步,很多步驟都需要重新調整,浪費大量時間。
圖中演示的是使用Excel進行簡單的描述統計分析過程,比較繁瑣。
Python靠的是程式碼編寫每一步過程,統一語言帶來記錄方法的統一。當分析過程需要修改,只需要調整設定好的引數,效率當然嗖嗖的。
使用Python程式碼可以迅速呼叫資料,計算需求,並記錄每一步過程,方便修改。
原因 2
Python擁有強大的庫
分析軟體每開發出一個新功能需要大量投入。而Python作為程式語言,開發新工具相對容易,一個人開發一個庫的例子比比皆是。並且Python的使用熱度帶來了大量的大神,Python工具庫可謂應有盡有,這也是Python有前文報告中眾多用途的原因。
回到資料分析,以Python視覺化必知基本庫matplotlib為例,光是他的官方gallery就有26個大類527個樣式,數量上就碾壓了市面上大部分同功能軟體。
matplotlib官網:https://matplotlib.org/tutorials/index.html
此外Python視覺化類工具會有針對圖表樣式進行調整的程式碼,也可以互動,幾行程式碼,省時省力,分分鐘關機下班。
原因 3
程式碼輔助數學演演算法
小時候不愛數學,因為討厭記繁瑣的公式和進行步驟推算,一步算錯,步步算錯,而且我還無法理解為什麼老師要求這麼算。
但程式碼的出現拯救了我對數學的偏見。它能從特例的角度復現數學推理過程。透過計算機成千上萬次的計算,讓我更快理解演演算法的含義。
截圖來自3blue1brown的微積分教學影片《微積分的本質》
以一道高中數學求導題為例:
求y=x²在x=2時的導數。
這道題不難,使用求導公式可知導數是4。但很多函式是不方便推導求導公式的,是否可以從導數的定義出發,尋找特例說明問題?
有的。
這道題要求的其實是連續可導函式f的曲線上,x=2時切線的斜率,那麼我們可以定義一個移動的點m,使得m不斷的接近x,當(m-x)足夠小時,(f(m)-f(x))/(m-x)會越來越接近該點的所在曲線的切線斜率,也就是我們要求的導數。
圖中所示程式迭代了1000次,點m以一定的0.01個單位的速度不斷趨近x,結果導數(斜率)在不斷趨近於4。
透過這個案例,我想說明的是程式碼的存在讓模擬和迭代變得可能,定義一個規則,找到一個特例,讓程式模擬千萬遍,答案會呼之欲出。
這是一種使用程式構建演演算法的思想。
另一個有趣的案例是基於Python的梯度下降演演算法,使用Python多次模擬尋找最小化的損失函式和模型引數值。
案例文名為《Python推導線性回歸模型》的文章,用到了梯度下降的方法推匯出線性回歸模型,適合python資料分析及機器學習初學者觀看,完整連結見文末。
總結一下,資料分析師為什麼會要求寫程式碼?
原因在於程式碼在資料分析上更高效、豐富和自由。事實上程式碼不僅幫助分析,更能幫助邏輯思維。
如果你想自己感受下使用程式碼做資料分析帶來的高效,建議你現在就可以開始學習Python。