欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL操作Pandas?DataFrame的三種方式示例詳解

 更新時間:2023年08月30日 11:17:01   作者:新語數(shù)據(jù)故事匯  
這篇文章主要為大家介紹了SQL操作Pandas?DataFrame的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Pandas的DataFrame操作

假如你現(xiàn)在需要對Pandas的DataFrame進(jìn)行如下操作:

df[df['Origin']?==?'USA']
.groupby('Origin')
.agg({
????'Miles_per_Gallon':?['sum',?'mean'],
????'Acceleration':?['min',?'max'],
}).reset_index()
df.columns=["Origin",
????"Miles_per_Gallon_sum",
????"Miles_per_Gallon_mean",
????"Acceleration_min",
????"Acceleration_max"]

而如果用SQL來書寫,達(dá)到上面的處理效果,我們可以寫出更優(yōu)雅和更易于理解的代碼:

SELECT
????Origin,
????SUM(Miles_per_Gallon)?AS?sum_Miles,
????AVG(Miles_per_Gallon)?AS?avg_Miles,
????MIN(Acceleration)?AS?min_Acceleration,
????MAX(Acceleration)?AS?max_Acceleration
FROM?df
WHERE?Origin?=?‘USA'
GROUP?BY?1

雖然我們非常喜歡Python,但很明顯,對數(shù)據(jù)進(jìn)行簡單分析時,SQL才是我們最好的朋友,相比于Pandas的聚合函數(shù)語法,SQL語法更通俗、直觀、便于理解。

接下來,本文將介紹三種使用SQL來操作Pandas DataFrame數(shù)據(jù)的方法。

假設(shè)我們已經(jīng)有了一個準(zhǔn)備好的DataFrame,其中包含你準(zhǔn)備好的數(shù)據(jù),下面我們開始介紹用SQL語句來查詢DataFrame數(shù)據(jù)的方法。

方法1:使用DuckDB來查詢DataFrame

DuckDB是一個開源的內(nèi)存中的分析型數(shù)據(jù)庫,專為高效處理分析工作負(fù)載而設(shè)計。它被稱為SQLite的分析/OLAP等效工具,因為它提供了類似SQL的查詢語言,并支持在Pandas DataFrame上執(zhí)行SQL查詢。

DuckDB是一個強(qiáng)大而靈活的分析型數(shù)據(jù)庫,它的集成性和性能優(yōu)勢使得在Pandas中使用SQL查詢變得更加便捷和高效,首先按照通常的方法進(jìn)行安裝:

pip?install?duckdb
import?duckdb

DuckDB中的基準(zhǔn)查詢:

注意:我們需要明確地將結(jié)果轉(zhuǎn)換為DataFrame,DuckDB會自動掃描你的內(nèi)核,尋找屬于DataFrame的變量,并讓你像查詢表一樣查詢它們。不過這種掃描是在查詢運(yùn)行時發(fā)生的,所以你不能使用如DESCRIBE這樣的語句:

DuckDB對空白更難處理,反斜線不能解析,所以你需要引用表(DataFrame)的名字,然后是列名(帶引號):

DuckDB是專門為OLAP使用案例而設(shè)計的數(shù)據(jù)庫引擎,相較于SQLite,它提供了一些在SQLite中不存在的強(qiáng)大功能。一個例子是DuckDB的SAMPLE關(guān)鍵字,它使得對數(shù)據(jù)進(jìn)行采樣變得非常簡單,特別適用于處理大型數(shù)據(jù)集的聚合函數(shù)。這一功能在數(shù)據(jù)分析和探索性數(shù)據(jù)分析(EDA)中非常有用。

或許,你使用DuckDB而不是SQLite來查詢Pandas數(shù)據(jù)的主要原因是速度。DuckDB聲稱在分析性查詢方面比SQLite快得多,Pandas內(nèi)置的to_sql和from_sql函數(shù)在SQLite中工作得很慢,但在DuckDB中卻相當(dāng)快,在大數(shù)據(jù)的聚合基準(zhǔn)查詢中,速度的差異是相當(dāng)大的。

方法2:使用Pandas .query()方法

你可能已經(jīng)熟悉了Pandas中的.query()函數(shù)。它不完全是SQL,但它可以使一些基本的查詢變得更容易,你可以理解它為一個簡單的WHERE或.filter()的等價方法。

query()方法的文檔比較少,你還可以使用&或者and、or、not等邏輯運(yùn)算符,以及其它常見的操作符(例如==,<,>,!=等)來連接過濾器:

盡管query()方法提供了方便的語法來篩選DataFrame,但它的表達(dá)能力相對有限,某些復(fù)雜的查詢可能無法使用單個query()表達(dá)式解決,需要使用其他方法或技巧來實現(xiàn)。

方法3:使用SmartNoteBook中dfSQL模塊來查詢DataFrame

SmartNoteBook是一款協(xié)作的、集成的、一站式的數(shù)據(jù)科學(xué)/分析環(huán)境,其內(nèi)置的dfSQL方式可以快速實現(xiàn)利用SQL語句對DataFrame進(jìn)行快速查詢。通過dfSQL,用戶可以實現(xiàn)利用簡單的SQL語句,對Pandas數(shù)據(jù)框、當(dāng)前環(huán)境下的csv文件以及已經(jīng)存在的df變量進(jìn)行訪問,除了dfSQL方法也可實現(xiàn)對其它數(shù)據(jù)源的快速訪問,其基本用法如下:

1. 利用dfSQL從DataFrame變量中查詢:

在SmartNoteBook中新建的SQL單元格中,數(shù)據(jù)源我們選擇dfSQL,cars變量是前面我們已經(jīng)讀取到變量空間中的DataFrame變量,則我們可以直接利用SQL語句對變量cars進(jìn)行查詢,所查詢到的表結(jié)果保存為my_cars變量。

2. 利用dfSQL查詢環(huán)境中的csv文件:

在上述的SQL單元格中,數(shù)據(jù)源我們選擇dfSQL,Iris.csv是存在于本地的一個csv文件,我們可以通過dfSQL,利用SQL語句直接從環(huán)境中對其進(jìn)行讀取,并選擇我們需要的變量進(jìn)行聚合,重新保存在一個名為iris的DataFrame變量中。

3. 利用dfSQL進(jìn)行聯(lián)合數(shù)據(jù)分析

在執(zhí)行SQL語句時,有時為了查到復(fù)雜的信息我們往往需要對多表聯(lián)查或嵌套查詢,dfSQL通過在內(nèi)存中加載保存變量,可以使得其邏輯更具可讀性:

上述SQL單元中,我們需要查詢每個地區(qū)Miles_per_Gallon、Cylinders、Acceleration均大于其地區(qū)均值的相關(guān)信息。我們可以分為兩步,先查出各個地區(qū)的相關(guān)變量均值,基于保存的df1變量,再從原表中取出滿足條件的信息并將其保存名為df2的DataFrame變量。

4. 利用SQL直接訪問數(shù)據(jù)源文件:

實際上在SmartNoteBook的SQL代碼模塊,其也支持選擇數(shù)據(jù)源,直接對遠(yuǎn)程數(shù)據(jù)庫進(jìn)行訪問并直接保存為DataFrame變量:

上述SQL單元,我們選擇了名為mysql 數(shù)據(jù)源的遠(yuǎn)程數(shù)據(jù)倉庫,利用SQL語句直接讀取倉庫中的信息,并將其保存為名為my_data的DataFrame變量。

dfSQL具有更輕量化,集成優(yōu)秀的特點,其對接外部數(shù)據(jù)源不需要再建立復(fù)雜的鏈接,而且可以直接實現(xiàn)對DataFrame變量和本地csv文件的訪問。后面執(zhí)行的SQL查詢可以引用NoteBook中之前已執(zhí)行的SQL查詢結(jié)果,就像我們寫復(fù)雜SQL中包含許多CTE(公共表表達(dá)式)一樣。用戶可以使用這種方式將復(fù)雜SQL按照邏輯進(jìn)行拆分,使整個查詢過程更具可讀性。

以上就是SQL操作Pandas DataFrame的三種方式示例詳解的詳細(xì)內(nèi)容,更多關(guān)于SQL操作Pandas DataFrame的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx手動編譯、安裝超詳細(xì)教程

    Nginx手動編譯、安裝超詳細(xì)教程

    Nginx安裝除了編譯以外,我們還可以直接用操作系統(tǒng)上自帶的工具比如說yum、apt-get直接安裝,這篇文章主要介紹了Nginx手動編譯、安裝超超詳解,需要的朋友可以參考下
    2023-09-09
  • 讓Nginx支持shtml格式的配置方法

    讓Nginx支持shtml格式的配置方法

    這篇文章主要介紹了讓Nginx支持shtml格式的配置方法,shtml格式可以包含一些服務(wù)端指令,同PHP中的include功能類似,需要的朋友可以參考下
    2014-08-08
  • Nginx四層負(fù)載均衡的配置指南

    Nginx四層負(fù)載均衡的配置指南

    當(dāng)一臺服務(wù)器的單位時間內(nèi)的訪問量越大時,服務(wù)器壓力就越大,大到超過自身承受能力時,服務(wù)器就會崩潰.為了避免服務(wù)器崩潰,讓用戶有更好的體驗,我們通過負(fù)載均衡的方式來分擔(dān)服務(wù)器壓力,這篇文章主要給大家介紹了關(guān)于Nginx四層負(fù)載均衡配置的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 使用Nginx為自己的網(wǎng)站資源加上防盜鏈保護(hù)實現(xiàn)

    使用Nginx為自己的網(wǎng)站資源加上防盜鏈保護(hù)實現(xiàn)

    這篇文章主要為大家介紹了使用Nginx為自己的網(wǎng)站資源加上防盜鏈保護(hù)實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Keepalived+Nginx雙機(jī)配置小結(jié)

    Keepalived+Nginx雙機(jī)配置小結(jié)

    本文主要介紹了Keepalived+Nginx雙機(jī)配置小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Nginx配置SSL證書的方法步驟

    Nginx配置SSL證書的方法步驟

    本文主要介紹了Nginx配置SSL證書,成功配置SSL證書后,您將能夠通過HTTPS加密通道安全訪問Nginx服務(wù)器,感興趣的可以了解一下
    2024-02-02
  • 深入理解Nginx之error_page模塊的使用

    深入理解Nginx之error_page模塊的使用

    error_page是nginx一個重要的指令,作用是定制化服務(wù)器錯誤頁面,本文主要介紹了Nginx之error_page模塊的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Filebeat 采集 Nginx 日志的方法

    Filebeat 采集 Nginx 日志的方法

    這篇文章主要介紹了Filebeat 采集 Nginx 日志的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Nginx限制帶寬配置示例

    Nginx限制帶寬配置示例

    這篇文章主要介紹了Nginx限制帶寬配置示例,本文網(wǎng)羅了3個方法,希望可以幫到大家,需要的朋友可以參考下
    2014-09-09
  • Nginx查看當(dāng)前連接數(shù)的配置方法

    Nginx查看當(dāng)前連接數(shù)的配置方法

    在開發(fā)過程中有時候我們需要查看Nginx的當(dāng)前連接數(shù),方便調(diào)整一些參數(shù)配置和性能調(diào)優(yōu),在Nginx中,你可以通過幾種方式來查看當(dāng)前的連接數(shù),感興趣的朋友一起看看吧
    2024-08-08

最新評論