SQL 和 pandas 是兩種不同的工具,但它們都在處理數據時扮演着重要角色。SQL 和 Pandas 不僅是處理任何與數據相關工作的基本工具,而且即使是新手用戶也非常易于使用和實現。SQL 在數據庫環境中工作,因此也需要了解數據庫,而 Pandas 可以在電腦或基于浏覽器的編輯器等簡單的環境中快速使用,從簡單的 CSV 文件開始。在本文中,我将分享一系列可以對數據執行的操作列表,并比較如何使用 SQL 和 Pandas 完成相同的任務。
關于 SQL 和 Pandas
讓我們簡單了解一下 SQL 和 Pandas。
SQL: 一種編程語言,更确切地說,它是一種可用于執行數據庫操作的查詢語言。可用于存儲、查詢、更新和修改數據。SQL 是大多數 RDBMS 實際使用的語言。
Pandas:實際上 Pandas 是 Python 語言的一個庫,它可以幫助我們進行許多使用數據的操作。Pandas 使用的數據類型主要是表格。它也可以用于數據倉庫, 使用 Pandas 我們可以在移入或移出數據時檢查數據。
通過上述幾點可知,Pandas 是 Python 中的一個庫或工具包,而 SQL 本身就是一種查詢語言。
在什麼情況下使用 SQL 和 Pandas ?
SQL 和 Pandas 可以在各種應用程序中使用。讓我們來看看它們的主要用法。
SQL:我們可以把 SQL 作為數據處理的首選,我們可以使用它來管理幾種類型的關系數據庫,查詢數據倉庫或分布式數據庫。雖然我們也可以使用SQL進行數據分析,而且它是一種高性能語言,具有高維數據。
Pandas:我們可以把 Pandas 看作是數據的最後一個存放點,以便我們轉換數據。對于複雜的數據轉換和 EDA,Pandas 是一個更好的地方。大多時候,我們使用 Pandas 來處理數據幀格式的數據,這是一種整潔的數據形式。
通過上述幾點,我們可以說,在數據分析的過程中我們可以使用 SQL 分析數據并從中導入所需的功能,然後使用 Pandas 更深入地分析數據并對其進行處理以進行機器學習建模。
說到業務邏輯,使用 SQL 的一個基本優勢是我們可以将數據分發給每個人。SQL 可以在各種情況下提供幫助,例如将數據導入 Python、在 Tableau 中構建儀表闆、顯示 Web 報告等,并确保流程的性能更高。使用 Pandas 進行數據操作的優點包括我們可以将數據存儲到一台計算機中,與重複查詢數據庫相比,I / O成本和延遲更低,并且能夠在每個數據段中應用任意功能。
數據操作的比較
許多數據分析從業者必須定期使用 SQL 和 Pandas 來完成各種與數據相關的任務。因此,本文的這一部分将了解如何使用 SQL 語言和 Pandas 庫執行不同的操作。為了解釋這個過程,我們将使用泰坦尼克号數據集。
import Pandas as pd
path = 'https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/'
data = pd.read_csv(path "titanic.csv")
data.head()
輸出:
從輸出中我們可以看到不同列的名稱。現在開始我們的第一個操作。
● select
該操作用于從給定數據中獲取所需的信息。使用SQL語言,我們可以通過以下方式使用一些變量執行這一操作:
SELECT Survived, Pclass, Name
FROM data
LIMIT 5;
說到 Pandas 庫,我們可以通過以下方式來選擇變量:
data[['Survived', 'Pclass', 'Name']].head()
輸出:
● where
這是一個條件操作,我們主要使用它來從符合某些條件的數據中查找數據值。使用SQL,我們可以通過以下方式找到性别變量為男性的數據點:
SELECT *
FROM data
WHERE Sex = 'male'
LIMIT 5
可以通過以下方式使用 pandas 執行相同的操作:
data[data['Sex'] == 'male'].head()
輸出:
請注意,我們在 SQL 中使用 * (星号) 來顯示數據中的所有列。
● OR 和 AND
這是将兩個條件合并為一個條件的條件操作。使用 SQL 語言,我們可以通過以下方式找到變量性别為男性且年齡大于5歲的值:
SELECT *
FROM data
WHERE Sex = 'Male' AND Age > 5.00;
我們可以通過以下方式使用 Pandas 來執行相同的操作:
data[(data['Sex'] == 'male') & (data['Age'] > 5.00)]
輸出:
● Group by
使用某些類别對數據值進行分組。有了這些數據,我們可以将男性和女性分組。在SQL中,可以通過以下方式實現:
SELECT Sex, count(*)
FROM data
GROUP BY Sex;
注意:此查詢将提供每個性别的記錄數。
可通過以下方式使用 pandas 執行相同的程序:
data.groupby('Sex').size()
輸出:
● Join
連接操作是使用 SQL 最常用的操作,因為它主要幫助使用兩個或多個數據生成新數據。可以通過以下幾種方式連接數據:
• Inner join
此連接提供了加入的變量的公共值,使用 SQL 通過以下方式執行此操作:
SELECT *
FROM df1
INNER JOIN df2
ON df1.key = df2.key;
這裡有兩個數據幀(df1 和 df2)和一個公共變量(key)。要執行此操作,我們需要有兩個或多個數據集。可以通過以下方式使用 Pandas 制作數據幀:
import numpy as np
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value': np.random.randn(4)})
df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
'value': np.random.randn(4)})
現在,我們可以通過以下方式對數據集進行内連接:
pd.merge(df1, df2, on='key')
• Left outer join
此操作有助于我們使用子句連接數據集。借助此功能,我們可以保留左側數據中不匹配的行,并以右表的形式将它們與空行連接起來。在SQL中,可以通過以下方式執行此操作:
SELECT *
FROM df1
LEFT OUTER JOIN df2
ON df1.key = df2.key;
可以通過以下方式使用 pandas 執行相同的操作:
pd.merge(df1, df2, on='key', how='left')
輸出:
• Right outer join
我們使用該子句保留右側數據中的行,并在第一個(左)表的形狀中使用 null 連接它們。我們可以通過以下方式使用 SQL 執行此操作:
SELECT *
FROM df1
RIGHT OUTER JOIN df2
ON df1.key = df2.key;
通過以下方式使用 pandas 執行相同操作:
pd.merge(df1, df2, on='key', how='right')
輸出:
• Full join
此操作在連接數據時保留每個數據的所有行。此操作可以通過以下方式使用 SQL 執行:
SELECT *
FROM df1
FULL OUTER JOIN df2
ON df1.key = df2.key;
可以使用 pandas 通過以下方式執行相同的操作:
pd.merge(df1, df2, on='key', how='outer')
輸出:
在上面的内容中,我們看到了一些可以使用 Pandas 庫和 SQL 語言執行的重要操作。可以說将 Pandas 轉換為 SQL 或将 Pandas 轉換為 SQL 并不是一項艱巨的任務。我們可以配合着使用它們,用 SQL 來處理數據庫中的數據,用 Pandas 來處理維數較低的數據。數據分析優質社群,等你加入哦~
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!