1. 程式人生 > 實用技巧 >資料科學家的SQL查詢

資料科學家的SQL查詢

作者|Soner Yıldırım
編譯|VK
來源|Towards Data Science

SQL是一種程式語言,大多數關係資料庫管理系統(RDBMS)都使用它來管理以表格形式(即表)儲存的資料。

SQL是資料科學家所期望的一項基本技能。你可能會說,這是一個數據工程師的工作,但資料科學家的角色往往是全套的。此外,作為一名資料科學家,你不希望依賴資料工程師從資料庫中檢索資料。

在本文中,我們將編寫複雜的查詢來檢索儲存在表中的資料。我已經將客戶流失資料集(https://www.kaggle.com/shubh0799/churn-modelling)上傳到MySQL資料庫的一個表中。

我們將從簡單的查詢開始,逐步增加複雜性。我將描述所需的資料,然後編寫查詢以從表中檢索資料。

讓我們先看看錶中的列。

關於客戶和他們在銀行的賬戶有一些特點。“Exited”列指示客戶是否流失(即離開銀行)。

我們現在可以開始查詢了。

“CustomerId”和“姓氏”列的前5行

SELECT CustomerId, Surname 
FROM CHURN
LIMIT 5;

餘額最高的客戶的ID

SELECT CustomerId, MAX(Balance)
FROM CHURN;

我們沒有檢索整個“Balance”列,而是使用MAX函式僅選擇該列中的最大值。

餘額排名前5位的客戶

我們不能在這個查詢中使用MAX,因為我們需要排名前5的客戶。我們可以做的是根據餘額對客戶進行排序,然後選擇使用LIMIT得到前5名。

SELECT Geography, Balance
FROM CHURN
ORDER BY Balance DESC
LIMIT 5;

沒有信用卡的顧客的平均年齡

有一個條件,所以我們使用WHERE語句。

SELECT AVG(Age)
FROM CHURN
WHERE HasCrCard = 0;

39.1121

如果你想知道,擁有信用卡的顧客的平均年齡是38.8424歲。

每個國家擁有2種以上產品的客戶數量

我們將使用另一個聚合函式來計算客戶數量。為了根據屬性對客戶進行分組,將使用GROUPBY語句。

SELECT Geography, COUNT(CustomerId)
FROM CHURN
WHERE NumOfProducts > 2
GROUP BY Geography;

基於產品數量的平均工資

我們可以將AVG函式應用於薪資,並按產品數量分組。

SELECT NumOfProducts, AVG(EstimatedSalary)
FROM CHURN
GROUP BY NumOfProducts;

WHERE語句允許我們選擇符合一個或多個條件的條目。但是,它不能與聚合函式一起使用。

對於上面的查詢,我們只對平均值大於100000的產品類別感興趣。因此,我們需要對平均值應用一個條件,這個條件可以使用HAVING語句來完成。

SELECT NumOfProducts, AVG(EstimatedSalary)
FROM CHURN
GROUP BY NumOfProducts
HAVING AVG(EstimatedSalary) > 100000;

50歲以上並且餘額高於平均水平的客戶

我們在這裡介紹兩個新主題。一種是使用多個條件(age和balance),另一種是巢狀的SELECT語句。

我們可以使用AND和OR等邏輯運算子在WHERE語句中組合多個條件。一個條件顯式給定(age>50),但另一個條件需要使用另一個SELECT語句在表上計算。這就是我們需要巢狀SELECT語句的地方。

SELECT CustomerId, Age, Balance 
FROM CHURN
WHERE Age > 50 AND Balance > (
    SELECT AVG(Balance)
    FROM CHURN );

餘額上的條件是另一個SELECT語句。

為已離開的女性並且存留時間超過了平均水平的客戶數量

它與前面的示例類似,但有一個附加條件。我們將根據三個條件統計客戶數量:

  • 性別
  • Exited= 1
  • 客戶在銀行的存留時間
SELECT COUNT(CustomerId) AS 'Number of Customers'
FROM CHURN
WHERE Gender = 'Female' AND Exited=1 AND Tenure > (
 SELECT AVG(Tenure)
    FROM CHURN);

我們還可以使用“AS”關鍵字調整結果集中列的名稱。

結論

我們已經討論了一些基本和複雜的查詢。我們通過查詢實現的是一些計算和過濾。因此,我們只能檢索我們需要的資料。

由於實際的資料庫包含更多的資料和許多關係表,因此能夠使用SQL查詢所需的資料是非常重要的。

原文連結:https://towardsdatascience.com/sql-queries-for-data-scientists-5260737fc442

歡迎關注磐創AI部落格站:
http://panchuang.net/

sklearn機器學習中文官方文件:
http://sklearn123.com/

歡迎關注磐創部落格資源彙總站:
http://docs.panchuang.net/