tft每日頭條

 > 科技

 > 用sql還是pandas處理數據

用sql還是pandas處理數據

科技 更新时间:2024-07-27 20:33:08

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)1

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()

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)2

從輸出中我們可以看到不同列的名稱。現在開始我們的第一個操作。

select

該操作用于從給定數據中獲取所需的信息。使用SQL語言,我們可以通過以下方式使用一些變量執行這一操作:

SELECT Survived, Pclass, Name FROM data LIMIT 5;

說到 Pandas 庫,我們可以通過以下方式來選擇變量:

data[['Survived', 'Pclass', 'Name']].head()

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)3

where

這是一個條件操作,我們主要使用它來從符合某些條件的數據中查找數據值。使用SQL,我們可以通過以下方式找到性别變量為男性的數據點:

SELECT * FROM data WHERE Sex = 'male' LIMIT 5

可以通過以下方式使用 pandas 執行相同的操作:

data[data['Sex'] == 'male'].head()

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)4

請注意,我們在 SQL 中使用 * (星号) 來顯示數據中的所有列。

OR 和 AND

這是将兩個條件合并為一個條件的條件操作。使用 SQL 語言,我們可以通過以下方式找到變量性别為男性且年齡大于5歲的值:

SELECT * FROM data WHERE Sex = 'Male' AND Age > 5.00;

我們可以通過以下方式使用 Pandas 來執行相同的操作:

data[(data['Sex'] == 'male') & (data['Age'] > 5.00)]

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)5

Group by

使用某些類别對數據值進行分組。有了這些數據,我們可以将男性和女性分組。在SQL中,可以通過以下方式實現:

SELECT Sex, count(*) FROM data GROUP BY Sex;

注意:此查詢将提供每個性别的記錄數。

可通過以下方式使用 pandas 執行相同的程序:

data.groupby('Sex').size()

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)6

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')

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)7

• 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')

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)8

• 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')

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)9

• Full join

此操作在連接數據時保留每個數據的所有行。此操作可以通過以下方式使用 SQL 執行:

SELECT * FROM df1 FULL OUTER JOIN df2 ON df1.key = df2.key;

可以使用 pandas 通過以下方式執行相同的操作:

pd.merge(df1, df2, on='key', how='outer')

輸出:

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)10

在上面的内容中,我們看到了一些可以使用 Pandas 庫和 SQL 語言執行的重要操作。可以說将 Pandas 轉換為 SQL 或将 Pandas 轉換為 SQL 并不是一項艱巨的任務。我們可以配合着使用它們,用 SQL 來處理數據庫中的數據,用 Pandas 來處理維數較低的數據。數據分析優質社群,等你加入哦~

用sql還是pandas處理數據(九道門如何使用Pandas對數據執行SQL查詢)11

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved