作者|RAM DEWANI
編譯|VK
來源|Analytics Vidhya
概述
-
SQL是任何從事分析或資料科學的人都必須知道的語言
-
這里有8種用于資料分析的SQL技術,任何資料科學專業人士都會喜歡使用它
介紹
SQL是資料科學專業人員軍械庫中的一個關鍵齒輪,這是經驗之談,如果你還沒有學會SQL,你就不能指望在分析或資料科學領域取得成功,
為什么SQL如此重要?
隨著我們進入新的十年,我們生產和消費資料的速度正在一天一天的飆升,
為了根據資料做出明智的決策,世界各地的組織都在聘請資料專業人士,如業務分析師和資料科學家,從海量的資料寶庫中挖掘資訊,
其中一個最重要的工具就是SQL!

結構化查詢語言(SQL)已經存在了幾十年,它是一種編程語言,用于管理關系資料庫中保存的資料,
世界各地的大多數大公司都在使用SQL,資料分析員可以使用SQL訪問、讀取、操作和分析資料庫中存盤的資料,并生成有用的資訊,以推動明智的決策程序,
在本文中,我將討論8種SQL技術,這些技術將使你為任何高級資料分析問題做好準備,請記住,本文假設你對SQL有非常基本的了解,
目錄
-
了解資料集
-
SQL技術1:計算行和項
-
SQL技術2:聚合函式
-
SQL技術3:極值識別
-
SQL技術4:資料切片
-
SQL技術5:限制資料
-
SQL技術6:資料排序
-
SQL技術7:過濾模式
-
SQL技術8:分組、匯總資料和分組過濾
了解資料集
學習資料分析的最好方法是什么?通過在一個資料集上執行它!
為此,我創建了一個零售商店的虛擬資料集,客戶資料表由ConsumerDetails表示,
我們的資料集由以下列組成:
- Name –消費者的名稱
- Locality –客戶所在地
- Total_amt_spend –消費者在商店中花費的總金額
- Industry –它表示消費者所屬的行業
注:我們將使用MySQL5.7進行實驗,你可以從這里下載
https://dev.mysql.com/downloads/mysql/5.7.html

SQL技術1–計算行和項
Count函式
我們將從最簡單的查詢開始分析,即計算表中的行數,我們將使用函式COUNT()來完成此操作,

太好了!現在我們知道表中的行數是10,在一個小的測驗資料集上使用這個函式似乎沒用,但是當你的行數達到數百萬時,它會有很大的幫助!
Distinct函式
很多時候,我們的資料表中充滿了重復的值,為了獲得獨一的值,我們使用了不同的函式,
在我們的資料集中,我們如何找到客戶所屬的行業?
你猜對了,我們可以通過使用DISTINCT函式來實作這一點,

你甚至可以使用count和distinct一起計算唯一行的數量,你可以參考以下查詢:

SQL技術2–聚合函式
聚合函式是任何資料分析的基礎,它們為我們提供了資料集的概述,我們將討論的一些函式是–SUM()、AVG()和STDDEV(),
SUM函式
我們使用SUM()函式計算表中數值列的和,
我們來計算一下每位顧客的消費總額:

在上面的例子中,sum_all是存盤sum值的變數,消費者的消費總額是12560盧比,
AVG函式
AVG()函式計算平均值,讓我們找出消費者對我們零售店的平均支出:

顧客在零售店的平均消費額為1256盧比,
STDDEV函式
如果你查看了資料集,然后查看了消費者的平均支出值,你會發現有些東西遺漏了,平均值并不能提供完整的理解,所以讓我們找到另一個重要的指標——標準差,函式為STDDEV(),

標準差為829.7,這意味著消費者的支出之間存在很大差距!
SQL技術3–極值識別
下一種型別的分析是確定極值,這將有助于你更好地理解資料,
Max函式
可以使用MAX()函式標識最大數值,讓我們看看如何應用它:

消費者在零售店的最高消費額是3000盧比,
Min函式
與max函式類似,我們有MIN()函式來標識給定列中的最小數值:

零售店消費者的最低消費額是350盧比,
SQL技術4–資料切片
現在,讓我們關注資料分析中最重要的部分之一——資料切片,分析的這一部分將構成高級查詢的基礎,并幫助你根據某種條件檢索資料,
- 假設零售店希望找到來自某個地方的客戶,特別是Shakti Nagar和Shanti Vihar地區,

太好了,我們有3個客戶!我們使用WHERE子句根據消費者應該居住在當地的條件篩選出資料—Shakti Nagar和Shanti Vihar,
我沒有在這里使用OR條件,相反,我使用了IN運算子,它允許我們在WHERE子句中指定多個值,
- 我們需要找到那些居住在特定地區(Shakti Nagar和Shanti Vihar)且消費金額超過2000盧比的客戶,

在我們的資料集中,只有Shantanu和Natasha滿足這些條件,由于這兩個條件都需要滿足,所以和條件更適合這里,讓我們看看另一個例子,
- 這一次,零售店希望找回所有消費在1000盧比到2000盧比之間的消費者,以便推出特別的營銷優惠,

另一種寫同樣陳述句的方法是:

只有Rohan在滿足這個標準!
太好了!我們已經走到一半了,讓我們在迄今所獲得的知識基礎上再接再厲,
SQL技術5–限制資料
Limit
假設我們要查看由數百萬條記錄組成的資料表,我們不能直接使用SELECT陳述句,因為這會將整個表轉儲到我們的螢屏上,這既麻煩又計算密集,我們可以使用Limit:

上面的SQL命令幫助我們顯示表的前5行,
OFFSET
如果你只想選擇第四行和第五行,你會怎么做?我們將使用OFFSET,OFFSET將跳過指定的行數,讓我們看看它是如何作業的:

SQL技術6–資料排序
對資料進行分類有助于我們對資料進行觀察,我們可以使用關鍵字ORDER by來執行排序程序,
ORDER BY
關鍵字可用于按升序或降序對資料進行排序,默認情況下,ORDER BY關鍵字按升序對資料排序,
讓我們看一個示例,其中我們根據Total_amt_spend列按升序對資料進行排序:

要將資料集按降序排序,可以按照以下命令進行操作:

SQL技術7–過濾模式
在前面的部分中,我們學習了如何根據一個或多個條件過濾資料,在這里,我們將學習匹配指定的模式列,為此,我們將首先了解LIKE運算子和通配符,
LIKE
LIKE在WHERE子句中用于搜索列中的指定模式,
通配符
通配符用于替換字串中的一個或多個字符,它們與LIKE運算子一起使用,最常見的兩個通配符是:
-
%,表示0個或更多個字符
-
_,它代表一個字符
在我們的虛擬零售資料集中,假設我們想要所有以“Nagar”結尾的地區,花點時間來理解問題陳述,并思考如何解決這個問題,
讓我們試著把這個問題分解一下,我們需要以“Nagar”結尾的所有位置,并且在這個特定字串之前可以有任意數量的字符,因此,我們可以在“Nagar”之前使用“%”通配符:

太棒了,我們有6個地方以這個名字結尾,注意,我們使用LIKE運算子來執行模式匹配,
接下來,我們將嘗試解決另一個基于模式的問題,我們需要第二個字符在他們各自的名字中有“a”的消費者的名字,
再一次,我建議你花點時間來理解這個問題,并想出一個解決它的邏輯,
讓我們把問題分解一下,這里,第二個字符需要是“a”,第一個字符可以是任何字符,所以我們用通配符_,
在第二個字符之后,可以有任意數量的字符,因此我們將這些字符替換為通配符“%”,最終的模式匹配如下所示:

我們有6個人滿足了這個條件,
SQL技術8–分組、匯總資料和分組篩選
我們終于到了SQL中最強大的分析工具之一,使用GROUP BY陳述句對資料進行分組,
這個陳述句最有用的應用是尋找分類變數的分布,這是通過使用GROUPBY陳述句和聚合函式(如–COUNT、SUM、AVG等)來完成的,
讓我們用一個問題陳述來更好地理解這一點,零售商店希望找到與其所屬行業對應的客戶數量:

我們注意到,屬于不同行業的客戶數量或多或少是相同的,因此,讓我們改成根據客戶所屬行業分組,計算出他們的支出總額:

我們可以觀察到,消費金額最大的是屬于制造業的客戶,這看起來有點容易,對吧?讓我們繼續更改要求,讓它變得更復雜,
現在,零售商希望找到總銷售額大于2500的行業,為了解決這個問題,我們將再次根據行業資料進行分組,然后使用HAVING子句,
HAVING
HAVING子句與WHERE子句類似,但僅用于過濾分組的資料,記住,它總是在group by陳述句之后,

我們只有3個類別滿足條件-航空,國防和制造業,但為了更清楚,我還將添加ORDER BY關鍵字,使其更直觀:

結尾
我很高興你做到了,這些是SQL中所有資料分析查詢的構建知識,你還可以使用這些基礎知識來進行高級查詢,在本文中,我使用了MySQL 5.7來建立示例,
我希望這些SQL查詢能夠幫助你分析復雜資料的日常生活,
原文鏈接:https://www.analyticsvidhya.com/blog/2020/07/8-sql-techniques-data-analysis-analytics-data-science/
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2246.html
標籤:其他
