最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Pandas的DataFrame操作

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

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來書寫,達到上面的處理效果,我們可以寫出更優(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ù)進行簡單分析時,SQL才是我們最好的朋友,相比于Pandas的聚合函數(shù)語法,SQL語法更通俗、直觀、便于理解。

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

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

方法1:使用DuckDB來查詢DataFrame

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

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

pip?install?duckdb
import?duckdb

DuckDB中的基準查詢:

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

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

DuckDB是專門為OLAP使用案例而設(shè)計的數(shù)據(jù)庫引擎,相較于SQLite,它提供了一些在SQLite中不存在的強大功能。一個例子是DuckDB的SAMPLE關(guān)鍵字,它使得對數(shù)據(jù)進行采樣變得非常簡單,特別適用于處理大型數(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中卻相當快,在大數(shù)據(jù)的聚合基準查詢中,速度的差異是相當大的。

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

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

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

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

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

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

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

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

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

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

3. 利用dfSQL進行聯(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ù)源,直接對遠程數(shù)據(jù)庫進行訪問并直接保存為DataFrame變量:

上述SQL單元,我們選擇了名為mysql 數(shù)據(jù)源的遠程數(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(公共表表達式)一樣。用戶可以使用這種方式將復(fù)雜SQL按照邏輯進行拆分,使整個查詢過程更具可讀性。

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

相關(guān)文章

  • Nginx實現(xiàn)TCP端口的偵聽及轉(zhuǎn)發(fā)操作步驟

    Nginx實現(xiàn)TCP端口的偵聽及轉(zhuǎn)發(fā)操作步驟

    這篇文章主要介紹了Nginx實現(xiàn)TCP端口的偵聽及轉(zhuǎn)發(fā)的相關(guān)資料,文章介紹了如何使用Nginx進行TCP代理(四層代理)來處理MQTT的集群需求,包括配置Nginx支持stream模塊、編寫TCP代理配置文件以及重新加載Nginx以應(yīng)用更改,需要的朋友可以參考下
    2024-11-11
  • Nginx性能優(yōu)化之Gzip壓縮設(shè)置詳解(最大程度提高頁面打開速度)

    Nginx性能優(yōu)化之Gzip壓縮設(shè)置詳解(最大程度提高頁面打開速度)

    這篇文章主要介紹了Nginx性能優(yōu)化之Gzip壓縮設(shè)置詳解(最大程度提高頁面打開速度),需要的朋友可以參考下
    2022-01-01
  • ubuntu中如何使用nginx監(jiān)聽80端口進行轉(zhuǎn)發(fā)

    ubuntu中如何使用nginx監(jiān)聽80端口進行轉(zhuǎn)發(fā)

    這篇文章主要介紹了ubuntu中如何使用nginx監(jiān)聽80端口進行轉(zhuǎn)發(fā)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 教你如何使用 Nginx 進行負載均衡

    教你如何使用 Nginx 進行負載均衡

    Nginx 是一個高性能的 HTTP 和反向代理服務(wù)器,它也經(jīng)常被用作郵件代理服務(wù)器和通用 TCP/UDP 代理服務(wù)器,本文我們將詳細介紹如何使用 Nginx 進行負載均衡,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Nginx反向代理實現(xiàn)Vue跨域的示例

    Nginx反向代理實現(xiàn)Vue跨域的示例

    本文主要介紹了Nginx反向代理實現(xiàn)Vue跨域的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 利用SSL配置Nginx反向代理的簡單步驟

    利用SSL配置Nginx反向代理的簡單步驟

    這篇文章主要給大家介紹了關(guān)于利用SSL配置Nginx反向代理的簡單步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Nginx具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Nginx大并發(fā)優(yōu)化實戰(zhàn)

    Nginx大并發(fā)優(yōu)化實戰(zhàn)

    這篇文章主要介紹了Nginx大并發(fā)優(yōu)化實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Nginx日志的自動封異常ip和解封腳本方式

    Nginx日志的自動封異常ip和解封腳本方式

    這篇文章主要介紹了Nginx日志的自動封異常ip和解封腳本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • nginx流量拷貝的實現(xiàn)示例

    nginx流量拷貝的實現(xiàn)示例

    Nginx的ngx_http_mirror_module模塊提供流量復(fù)制功能,可將生產(chǎn)環(huán)境流量實時復(fù)制到測試環(huán)境,用于功能驗證、性能測試和問題排查,下面就來詳細的介紹一下nginx流量拷貝的使用,感興趣的可以了解一下
    2026-01-01
  • 使用supervisor管理nginx+tomcat容器的方法示例

    使用supervisor管理nginx+tomcat容器的方法示例

    這篇文章主要介紹了使用supervisor管理nginx+tomcat容器的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論

黑河市| 盐亭县| 兰坪| 全南县| 靖州| 长兴县| 安仁县| 苍南县| 鄄城县| 镇康县| 宜兰市| 阿城市| 汾阳市| 南陵县| 淮安市| 瑞昌市| 上蔡县| 永安市| 进贤县| 新民市| 冀州市| 阜平县| 宣恩县| 大丰市| 崇义县| 瓮安县| 胶州市| 祁阳县| 合阳县| 宝丰县| 新巴尔虎左旗| 宣化县| 庄河市| 泰安市| 商河县| 大新县| 新竹市| 临邑县| 云南省| 昆明市| 汶川县|