全文共1459字,預計學習時長4分鐘
工作中,頻繁切換是件麻煩事兒。一些程式設計師只熟悉SQL中的數據操作,卻不熟悉Python中的數據操作,因此在完成項目時,我們不得不頻繁地在SQL和Python之間進行切換,導致了工作效率低下和生產能力下降。
本文就教你一種方法,使用Pandas在Python中輕鬆重現SQL結果。
入門指南
如果電腦中沒有pandas包,則需要先安裝一下:
Conda install pandas
在這個階段,我們將使用著名的Kaggle泰坦尼克數據集:https://www.kaggle.com/c/titanic/data?select=test.csv。
安裝軟體包並下載數據後,需要將其導入Python環境中:
import pandas as pd
titanic_df = pd.read_csv("titanic_test_data.csv")
我們將使用pandas數據框架來存儲數據,還將用到各種pandas函數來操作數據框架。
SELECT, DISTINCT, COUNT, LIMIT
讓我們從經常使用的簡單SQL查詢開始。
titanic_df [「 age」]。unique()將在此處返回唯一值的數組,因此需要使用len()來獲取唯一值的計數。
SELECT,WHERE,OR,AND,IN(有條件選擇)
現在你知道了如何以簡單的方式探索數據框架,接著來嘗試一些條件吧(在SQL中是WHERE子句)。
如果只想從數據框架中選擇特定的列,則可以使用另一對方括號進行選擇。注意,如果要選擇多列,則需要在方括號內放置數組[「 name」,「 age」]。
isin()與SQL中的IN完全相同。要使用NOT IN,需要在Python中使用negation()來獲得相同的結果。
GROUP BY,ORDER BY,COUNT
GROUP BY和ORDER BY也是用來探索數據的流行SQL,讓我們在Python中嘗試一下。
如果只想對COUNT進行排序,可以將布爾值傳遞給sort_values函數;如果想對多列進行排序,則必須將布爾數組傳遞給sort_values函數。sum()函數將提供數據框架中的所有聚合數值總和列,如果只需要特定列,則需要使用方括號指定列名。
MIN,MAX,MEAN,MEDIAN
最後,來嘗試一些常見的統計功能,這些功能對於數據探索非常重要。
由於SQL沒有中位數函數,因此將使用BigQuery APPROX_QUANTILES獲取年齡中位數。pandas聚合函數.agg()還支持其他函數,例如sum。
拒絕頻繁切換,輕鬆重現查詢,你值得擁有!
你可以在我的Github中查看完整的腳本:https://github.com/chingjunetao/medium-article/tree/master/rewrite-sql-with-python
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範