一句“人生苦短,我用 Python”,讓多少職場人為之瘋狂,培訓機構甚至豪言小到黃口小兒,大到七旬老漢都學得會 Python。如果你在職場中經常跟資料打交道,曾經可能 Excel 是最常用的工具,但現在如果你不會 Python,出去似乎都不好意思跟人家打招呼(說自己在玩資料)。
Python 真的很神嗎?
神。
Python 的使用範圍很廣,從文字分析到 WEB 程式設計,再到圖形處理和機器學習,是程式語言中不可多得的多面手,加之相對其他程式語言 Python 上手更簡單,甚至讓很多人喊出全民 Python 的口號。
不過,Python 真的適合職場人使用嗎?
不著急回答這個問題,先看看職場事和職場人的特點。
在職場中,我們經常要處理表格資料,比如訂單記錄、人員資訊、銷售合同等,專業說法叫結構化資料,這些資料經常是以 Excel 或 CSV 儲存,分析的時候直接基於檔案處理。
資料處理有簡單有複雜,相對複雜的情況更能考驗工具的能力。
因為職場人都不是專業程式設計師,太複雜的東西搞不了,所以在工具選擇時自然是越簡單越好。不過光簡單還不行,還要足夠用。Excel 比較簡單但不夠用,加上 VBA 到是夠用,但又不簡單了。而資料庫(比如 MySQL、SQLite)貌似夠用但我連安裝不都不會,更不會把資料倒騰進去;至於 JAVA,C++,那些太難根本不用考慮了。這時大家發現了 Python,這個傢伙應付職場工作時似乎既夠用又簡單。
夠用的事情不用多說了,Python 的資料計算包很豐富。不過“簡單”的事情就要好好看看了,不妨舉個例子。
比如計算一支股票最長連續上漲的天數(這類計算常常要做吧),Python 的寫法:
import pandas as pd
aapl = pd.read_excel(‘d:/AAPL.xlsx’)
continue_inc_days=0 ; max_continue_inc_days=0
for i in aapl[‘price’].shift(0)>aapl[‘price’].shift(1):
continue_inc_days =0 if i==False else continue_inc_days +1
max_continue_inc_days = continue_inc_days if max_continue_inc_days < continue_inc_days else max_continue_inc_days
print(max_continue_inc_days)
程式碼看起來不算長,但看懂就要費點勁了,尤其對職場人員而言。Python 用於表格資料是個第三方程式包 Pandas 中的 dataFrame(聽起來就有點麻煩),它並不是專為結構化資料設計,也不是我們常規理解的,由一行行記錄構成的集合,而是數學家常用的概念,由多個行列定義的矩陣。事實上,Pandas 就沒有記錄這種資料型別,這導致很多運算要繞彎路才能想清楚,雖然看起來寫著並不長,但其實思考難度很大,比如“取上一行”要理解成“把列下移一位”才可以。
Python 還有很多與表格式資料相關的資料型別,除了 dataFrame,還有分組彙總後的 DataFrameGroupBy 型別,以及序列、矩陣等。這些本質上都是集合資料型別,但操作方式卻不一樣,你無法舉一反三,每次遇到都要去找例子看。如果沒有深刻理解它的內部結構(然而這對於職場人員又太難了),對和錯經常要憑運氣了。
培訓班雖多,教出來也只是會抄程式碼改例子,碰到新情況沒有例子可抄時,很多人就會暈掉。上面的這個還不算多複雜例子,對於職場人已經有難度了,這裡 Python 並不適合職場程式設計 還有更細緻的分析。
想要用 Python 做職場計算,要深刻理解其內部結構和執行原理才行,這對職場人來說太難。基本程式邏輯倒是不難學,但學會之後也就是能做個小學算術題,對於職場工作幾乎沒用(能用起來的那點功能,經常用 Excel 本身也搞得定了)。
不僅如此,安裝 Python 環境本身就困難重重。Python 官網提供的安裝包是面向技術人員的,不僅選項繁多,而且預設沒有除錯功能,32 位 /64 位還分成了不同的安裝包。安裝完 Python 本體後,需要繼續安裝 Pandas 和 Excel 的第三方支援庫,才能進行表格資料計算,這個安裝工具執行在命令列中,對職場人員很不友好,而且安裝工具本身也需要更新,屆時又需另一個安裝命令。市場上也有一些封裝好的第三方安裝包,但五花八門良莠不齊,非技術人員很難選擇。
不過,即使這樣,Python 相對 C++、JAVA 在資料計算處理方面還是簡單不少,在沒有更好的辦法之前,也就只能選它了。聽起來似乎有些無奈,其實就是很無奈。
那麼我們不禁要問,有沒有真能讓職場人學得會用得起來的程式語言?
有!
SPL 就是。
SPL 全稱 Structured Process Language,是一門專門面向結構化資料計算的指令碼語言,簡單理解就是專門為表格式資料設計,特別適合職場人員用於資料處理。
啥也不說,看個例子。前面用 Python 實現的“一隻股票最長連續上漲多少交易日”,用 SPL 這樣寫。
| | A | B |
| 1 | =file(“d:/AAPL.xlsx”).xlsimpor@t() | / 讀 Excel 檔案,首行為列名 |
| 2 | =a=0,A1.max(a=if(price>price[-1],a+1,0)) | / 求最長連續上漲天數 |
兩行搞定,基本不用怎麼解釋就能看懂,其他很多計算也經常用三五行就能搞定。沒有對比就沒有傷害,比 Python 還簡單有沒有。
SPL 同樣提供了很豐富的函式來滿足職場資料處理,如果資料量大還有高效能處理機制,比如遊標計算、平行計算等,透過一個函式選項就可以輕鬆實現。而 Python 要做到這些就有點難了。
安裝 SPL 很簡單,拿到對應作業系統安裝包下一步下一步就完了,不需要引入依賴,不需要匯入第三方庫,一個安裝包啥都帶了。
SPL 的開發環境提供了非常豐富的編輯除錯功能,設定斷點、單步執行、除錯執行、執行到游標應有盡有,這會讓編寫程式碼變成一種享受。
在開發環境右側還提供了可以檢視每步執行結果的“結果皮膚”,輸出中間結果不需要手動輸出,滑鼠點點就看到了。
SPL 可以去 http://www.raqsoft.com.cn/wx/SPL-for-businesspeople.html 下載,後面還有全套學習課程。免費版功能足夠,就是偶而會跳點廣告(畢竟是商業公司做的),如果嫌煩就要購買收費版了(也不貴)。
學不會 Python 沒關係,還有 SPL。
本作品採用《CC 協議》,轉載必須註明作者和本文連結