1. 程式人生 > >該用Python還是SQL?4個案例教你節省時間

該用Python還是SQL?4個案例教你節省時間

不同的 結果集 體感 note pivot sub ram img pan

在數據分析行業,對數據提出的每一個問題都可以用多種潛在的語言和工具包來回答。每種語言都有其優勢,它們之間也存在著不同的區別。不能否認的是,有些操作用Python執行起來要比SQL更加高效。這篇文章分享了4個能夠節省時間的案例,在這幾個案例中,Python在探索和分析數據集方面遠遠優於SQL。

描述性統計

假設你正在探索新的數據集,可以使用許多不同的方法來統計描述這些數據,並得到總體感知。例如:

· 計數

· 平均值

· 標準偏差

· 最小值

· 第一四分位數

· 第二四分位數(中位數)

· 第三四分位數

· 最大值

要想在SQL中得到以上信息,你需要輸入:

技術分享圖片

但也許你並不想輸入以上所有代碼。你可以使用pandas的DataFrame.describe()函數來得出基礎數據集的基本描述性統計信息。

datasets[‘Python Input‘].describe().round(1)

查看此報告並仿照該報告自行探索描述性統計。

移動平均值

假設你現在想計算移動平均值,以便於在輸入不斷變化的情況下得到其明確的平均值。移動平均值有助於消除數據驟降和峰值的影響,從而使長期趨勢更加顯而易見。

在SQL中,你可以輸入這樣的查詢(query):

技術分享圖片

在Python中,只需以下代碼便可快速得到相同的兩周移動平均值:

技術分享圖片

另外,Python能夠進一步實現可視化。

樞軸

要想重新排列數據與樞軸以繪制圖表或是演示文稿格式,在SQL中需要幾個步驟才能實現。在這個案例中,需要將Mode Public Warehouse中大學橄欖球運動員的數據集從行樞軸轉換到列樞軸。

首先,要匯總每年、每場比賽的運動員的信息來準備數據。

技術分享圖片

轉換數據之後,需要將查詢(query)嵌入子查詢(subquery)中。

技術分享圖片

接下來,如果你想將結果按照年份分成幾列,可以用SELECT語句為每個項單獨創建列。

技術分享圖片

雖然這能使你很好地控制查詢和進程,但是用Python操作實則要更加輕松。當你從年份和比賽中SELECT大學橄欖球運動員後,可以跳轉到Notebook並運行DataFrame.pivot。你能根據列值重塑數據,因而可以重新排列結果集。

DataFrame.pivot

自連接

在很多情況下,你可能想要將一個表與其自身連接起來。要想創建自連接(self join),需要先輸入此查詢,以便為同一張表創建不同的引用名稱。

技術分享圖片

在pandas中,我們可以這樣實現:

技術分享圖片

想自己嘗試建立自連接嗎?仿照這篇報告來撰寫你的個人Mode報告吧!

該用Python還是SQL?4個案例教你節省時間