當前位置:
首頁 > 最新 > 利用 SQL 進行數據分析初學者教程-ep1

利用 SQL 進行數據分析初學者教程-ep1

文中涉及鏈接,均在文末展示。

由 Tomi Mester 寫於2017年5月9日

本文轉載自https://data36.com/sql-for-data-analysis-tutorial-beginners/

如果你想成數據分析師或是數據科學家,那麼 SQL 是必須的。在過去的幾年中,我已經與許多公司有線業務合作 - 從 5 人創業公司到 5000 多名員工跨國公司,並沒有看到一家不會以某種方式使用SQL進行數據分析(以及更多的事情)的公司。

SQL簡單並且容易理解。因而,不只是工程師、開發者、數據分析師或數據科學家可以使用它,而是任何願意花費幾天來學習和練習它的人。

我已經創建了這個 SQL 系列,成為有志的數據分析師和數據科學家的最實用和多動手的 SQL 教程。如果你從沒有接觸過編碼、編程、查詢,它將從頭開始,這並不會是一個問題!

讓我們開始吧!

注意:因為這是一個實用教程,我鼓勵你和我一起編碼。如果你這樣做,你將需要一個數據伺服器來練習。所以我建議你先通過閱讀這篇文章。

利用SQL進行數據分析?這是什麼?為什麼好呢?

SQL代表『結構化查詢語言』。 但是我喜歡描述它為「加強版的 Excel」。下面是同一份數據在 Excel 和 SQL:

如你所見,SQL 和 Excel 十分相似。它們用具有行和列的二維列表展示數據。兩者都非常結構化,非常透明。

不過也有差異。作為初學者,你應該知道兩件關於 SQL 的重要事情:

1.第一是性能。雖然 Excel 在小數據集中表現很棒,但是當你使用不同的公式處理 100 k+ 行的文件,它變得十分緩慢和低效。在 SQL 中,甚至超過 10 M+ 行的文件可以很快的處理。(例如,在接下來的利用 SQL進行數據分析文章中,我們將使用一個 7 M+ 行的數據集。)

2.第二是怎樣訪問你的數據。Excel 主要是圖形用戶界面(也成為 GUI)。你可以滾動、敲入公式、用游標選擇你的範圍等等,非常方便。在 SQL 中,你沒有這樣的界面,你必須使用稱為『SQL 查詢』來代替。看下面的gif:

GIF/1475K

GIF/1254K

因為第一次看到這個,可能感覺到麻煩。但是相信我,一旦你了解 SQL 基礎知識,你會發現它比 Excel 更加清晰、更有效率。只提兩個有點:在 SQL 中,連接表比 Excel 更簡單。同樣,使用 SQL 自動化和重複使用腳本也將會變得更加方便。

當你使用 SQL 進行數據分析,你將會使用它(最有可能)進行簡單任務:聚合事情、連接數據集、使用簡單的統計和數學方法。但是,你可以比以前更有效率執行這些任務和更大的數據集。

Python,R 和 bash怎麼樣?

如果你已經完成了我之前的bash 教程或者你已經參加一些我的在線直播,你可能會問:SQL 比 Python,R 或者 bash 好還是壞?答案是...好吧,這個問題沒有明確答案!

一旦你開始在實際生活的數據項目中應用這些語言,你將看到 Python 和 R 在某些方面是表現好的,而 SQL 在其他方面表現好。主要是語法、功能、性能不同...但是,我現在不想進入該主題,因為:

我承諾一個使用教程,其主題有點理論(甚至有點哲學)。

它還有點先進的東西。

在這個水平上,你完全不需要擔心它的性能,並且你有可能得到資深數據科學家或者數據工程師的幫助。

注意:如果你真的很好奇,我給你~1小時在這裡比較 Python,R,SQL 和 bash。

但是現在,讓我們試試吧!

STEP 0 - 安裝你自己的 SQL 環境來練習!

注意:如果你已經有自己的 SQL 環境,你可以跳到STEP-獲得數據!

首先,請仔細閱讀這篇文章。它是關於如何一步一步設置你自己的數據服務和安裝 bash,Python,R 和 SQL的教程。

注意:在我的『利用 SQL 進行數據分析』文章中,我將使用 postgreSQL!還有其他類型的 SQL 語言(例如,另一個眾所周知的開源語言 mySQL)。好消息是,所有的 SQL 語言都非常相似 -- 如果你學習 postgreSQL,則需要幾個小時(甚至幾分鐘)才能適應另一個。我選擇了 postgreSQL,因為它很受歡迎(許多在線企業都在使用它),同時它被稱為最先進的開源 SQL 語言。

如果你通過上述鏈接的文章,請仔細檢查,如果你有以下3件事情:

??1.具有終端(或 iTerm)訪問許可權的數據伺服器。

??2.PostgreSQL 安裝在你的數據伺服器上。

??3.你的計算機上的Pgadmin4(或SQL Workbench)。

如果缺少某些內容,請再次閱讀:安裝 bash,Python,R 和 SQL!

注意:作為一個 SQL 查詢工具,相比於 pgadmin4,我更喜歡 SQL Workbench,但這是一種品味的問題。在我的利用 SQL 進行數據分析教程中,我將使用 SQL Workbench(以下是有關如何在計算機上安裝它的教程),但你可以隨意使用 pgadmin4。這不會有什麼區別!

STEP 1 – 通過命令行登錄你的 SQL 資料庫!

太好了!你將在一分鐘內編寫你的第一個 SQL 查詢!首先從命令行訪問你的 SQL 資料庫!你已經做了一次,我們將重複這個過程:

??1.打開終端(或 iTerm)。

??2.ssh到你的數據伺服器

??在我的環境下,我輸入:

??ssh tomi@[myipadress] ??

?3.一旦我登錄伺服器,我想訪問我的 postgreSQL 資料庫。因為我已經訪問了我的用戶,我只需要鍵入這個命令:

??psql -U tomi -d postgres- ? psql 是命令本身以及 -U 指定你的用戶名(我的為「tomi」),以及 -d 指定你的資料庫的名稱(我的是 postgres 同樣適用於你)。你的提示應改為:

postgres=> ??

完成!你可以完全訪問你的 SQL 資料庫!

4.作為測試,鍵入:「dt」這會列出你所有的數據表。到目前為止,你只有一個數據表,但是這將會馬上改變!

再次提醒!如果缺少某些東西或者不能運行,請再次閱讀:安裝 bash,Python,R 和 SQL!

機器學習

在本教程中,我們將使用一個非常小的數據集,稱為 zoo。

您可以從這裡以原始 .tsv 格式下載,你可以在 Excel 中操作它。如果您已經完成了bash 教程,或者在bash /command line。

但是,繼續使用SQL:

1)創建一個表,我們可以向表中載入數據。在我的後續教程中,我將詳細解釋這裡發生了什麼,但現在,你只需將這幾行代碼複製粘貼到終端中:

2)仔細檢查表格是否已創建:「dt」

我們有新的數據表:zoo!

3)載入數據!

再次說明:我稍後會解釋,但是現在,只是複製粘貼這個 SQL 查詢:

如果一切正常,你會得到這條提醒:

INSERT 0 22

最重要的 SQL 語句:SELECT

是時候學習最基本的 SQL 語句。這是:

「SELECT * FROM table_name;」

每當你在數據上使用讀取,過濾,轉換,聚合或執行任何操作,你將會使用 SELECT。在這系列教程中,90%的內容將會顯示出來,以某種方式修改單一查詢。作為開始,我們從 zoo 數據表中 SELECT 任意內容。

「SELECT * FROM zoo;」

我已經得到完整的可讀格式的表。(如果要從這個視角中退出,請在鍵盤上按Q鍵。)

「SELECT * FROM zoo;」

我想它甚至不需要一個解釋 -- 因為語法本身非常接近英語 - 但是為了以防萬一: 「SELECT 」是主語句,它告訴 SQL 我們想從我們的數據表中讀取一些東西。

「*」 通常是指「一切」 -- 在這種情況下,這意味著我們想選擇每一列。

「FROM」告訴 SQL,我們要從指定的表中讀取數據。

「zoo」 是表的名稱。如果你有更多的表,您可以將其替換為任何其他表名。

「; 」這是一個 SQL 特定的語法。每個查詢都應該用分號關閉。如果您不小心錯過了,SQL 將期望您繼續查詢,不會在屏幕上返回任何內容。

從現在起,你將會使用這種語法。

SELECT columns

你可以用實際的列名替換 「* 」字元。嘗試這個查詢:

「SELECT animal, water_need FROM zoo;」

(如果要從此視圖中退出,請在鍵盤上按Q鍵。)

確切地說,你所期望的是:你的屏幕上列出了「animal」和「waterneed」列,而不是「uniqid」。

這樣可以 SELECT 任何列。你只需要用逗號分隔指定的列名。

你也可以這樣做:

「SELECT animal, animal, animal FROM zoo;」

你會看到同一列多次...但是,因為這是沒有意義的,我建議只是根本不這樣做。

顯示數據的前幾行 -- LIMIT 從句

現在我們正在使用 22 行的數據表。在「利用 SQL 進行數據分析」系列的下一集中,我們將使用一個 7 M+ 行數據文件。這是一個很大的變化,在這種情況下,每次都在屏幕上列印所有數據是不合理的,而是獲取前幾行的小樣本。為此,使用 LIMIT 從句 - 這是之前介紹的「基礎查詢」頂部的一個小「擴展」:

「SELECT * FROM zoo LIMIT 10;」

這將僅列印前10行。(記住它是如何在bash中完成的?這是「head -10 」命令。)

當然,你可以決定要列印多少行,並在 LIMIT 之後指定!

過濾指定行 -- WHERE從句

基於數值,你可以用 WHERE 從句選擇特定的行。例如:

「SELECT * FROM zoo WHERE animal = elephant ;」

「SELECT * FROM zoo 」-?這是「基礎查詢」 「WHERE 」-? 這告訴 SQL 你想過濾一些東西

「animal = elephant 」 -? animal 是你正在尋找給定值的列名。而 elephant 是值本身。在 SQL 中,你必須添加列名,尋找值。

「;」 -? 永遠不要忘記分號!

在利用 SQL 進行數據分析系列的下一集中,我將詳細介紹如何充分利用 WHERE!現在,如果你知道這是為了過濾行,便足夠了。

自我測試#1

這是一個介紹性的文章,所以這第一個任務也將是相當容易的:

從 zoo 表中選擇前 3 個 zebra!

該解或多或少是本文的總結!

. . . 準備?

這是我的解決方案:

「SELECT * FROM zoo WHERE animal = zebra LIMIT 3;」

SQL 很容易,對吧?

還有一件事:語法...

稍後,我將向你展示一些最佳實踐,以及如何保持 SQL 查詢的清潔和高效,但在第一篇文章中,我僅強調兩件事情:

所有的查詢都應以分號(;)結尾。如果你不小心錯過了,SQL 將期望您繼續查詢,不會在屏幕上返回任何內容。例如:

postgres=> SELECT * FROM zoo

postgres->

這不是很好...這樣更好:

postgres=> SELECT * FROM zoo;

2.當談到SQL關鍵字(SELECT,WHERE,LIMIT等),SQL 並不區分大小寫。例如:

SELECT * FROM zoo;

工作原理如下:

select * from zoo;表名,列名和值的區分大小寫是你設置的問題。在我們當前的設置(使用postgreSQL)中,表名和列名不區分大小寫,但是欄位值是。例如。

SELECT * FROM zoo WHERE animal = elephant ; –? WORKS

SELECT * FROM ZOO WHERE ANIMAL = elephant ; –? WORKS

SELECT * FROM ZOO WHERE ANIMAL = ELEPHANT ; –? DOES NOT WORK

請注意,按照慣例上大多數人使用大寫 SQL 關鍵字(SELECT,WHERE,LIMIT等)。它有助於閱讀你的代碼。

結論

相當不錯的學習和使用 SQL 進行數據分析!恭喜!現在你可以寫你的第一個非常基本的 SQL 查詢...但這只是開始!讓我們繼續下一集,並學習如何使用 WHERE 從句從數據集中過濾東西。

如果你不想錯過下一集,並且也想獲得有關即將到來的網路研討會的信息,請訂閱我的每周通訊!

更多課程和文章盡在微信號

「datartisan數據工匠」

文章https://data36.com/data-coding-101-install-python-sql-r-bash

bash 教程https://data36.com/learn-data-analytics-bash-scratch/

在線直播https://data36.com/data-science-videos-webinars/

這裡https://data36.com/recordings-previous-data-science-webinars/

這篇文章https://data36.com/data-coding-101-install-python-sql-r-bash/

你自己的數據服務和安裝 bash,Python,R 和 SQLhttps://data36.com/data-coding-101-install-python-sql-r-bash/

SQL Workbenchhttps://data36.com/install-sql-workbench-postgresql/

安裝 bash,Python,R 和 SQL!https://data36.com/data-coding-101-install-python-sql-r-bash/

以下是有關如何在計算機上安裝它的教程https://data36.com/install-sql-workbench-postgresql/

安裝 bash,Python,R 和 SQL!https://data36.com/data-coding-101-install-python-sql-r-bash/

這裡https://data36.com/zoo.tsv

bash 教程https://data36.com/learn-data-analytics-bash-scratch/

bash /command linehttps://data36.com/data-coding-101-introduction-bash/

bashhttps://data36.com/bash-intro-2-data-coding-101/

通訊https://data36.com/newsletter-subscription/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Datartisan數據工匠 的精彩文章:

Scikit-Learn 樸素貝葉斯分類
運用 Basemap 可視化地理信息數據

TAG:Datartisan數據工匠 |

您可能感興趣

CVPR 2018:阿里提出應用 LocalizedGAN 進行半監督訓練
德國 Fostla為Mercedes-AMG GT S 進行改裝強化 馬力達 613ps!
CVE-2018-8412:通過MS Office for Mac的Legacy Package進行提權
Python數據處理實戰——使用Scikit-Learn進行多類文本分類
WebVR華麗升級,WebXR API將在2018 Q1季進行早期測試
iOS 11.3 App Store將容許用戶對應用評論進行篩選和排序
利用Python進行數據分析之數據規整化
Excel-VBA進行文字替換數值
pandas創始人手把手教你利用Python進行數據分析
使用 VS Code 進行 Python 編程
2018 UOD舉行Epic Games創始人Tim Sweeney進行主題演講
使用 Semmle QL 進行漏洞搜索 Part 1
NAB SHOW 2018進行時丨迪士尼/ABC推出穩定器DigiBoom,AMBEO智能耳機令人矚目
一文讀懂如何用LSA、PSLA、LDA和lda2vec進行主題建模
進行3D 360度預覽,阿聯酋航空引進3DSeatMap VR可視化引擎
利用Chan-Vese模型和Sobel運算對重疊葉片進行圖像分割
英格蘭教會或使用Apple Pay/Google Pay進行募捐
iOS 12 正式版下周更新,5S 可升級 / iPhone XS Max 確認 4GB 內存 / 小米進行成立以來最大架構調整
GDC 2018進行時丨Oculus公布Santa Cruz更多細節,高通發布驍龍845移動VR開發套件
用Prophet快速進行時間序列預測(附Prophet和R代碼)