亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

Pandas的DataFrame操作

假如你現(xiàn)在需要對(duì)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來(lái)書(shū)寫(xiě),達(dá)到上面的處理效果,我們可以寫(xiě)出更優(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,但很明顯,對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單分析時(shí),SQL才是我們最好的朋友,相比于Pandas的聚合函數(shù)語(yǔ)法,SQL語(yǔ)法更通俗、直觀、便于理解。

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

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

方法1:使用DuckDB來(lái)查詢DataFrame

DuckDB是一個(gè)開(kāi)源的內(nèi)存中的分析型數(shù)據(jù)庫(kù),專為高效處理分析工作負(fù)載而設(shè)計(jì)。它被稱為SQLite的分析/OLAP等效工具,因?yàn)樗峁┝祟愃芐QL的查詢語(yǔ)言,并支持在Pandas DataFrame上執(zhí)行SQL查詢。

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

pip?install?duckdb
import?duckdb

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

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

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

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

或許,你使用DuckDB而不是SQLite來(lái)查詢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,但它可以使一些基本的查詢變得更容易,你可以理解它為一個(gè)簡(jiǎn)單的WHERE或.filter()的等價(jià)方法。

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

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

方法3:使用SmartNoteBook中dfSQL模塊來(lái)查詢DataFrame

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

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

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

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

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

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

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

上述SQL單元中,我們需要查詢每個(gè)地區(qū)Miles_per_Gallon、Cylinders、Acceleration均大于其地區(qū)均值的相關(guān)信息。我們可以分為兩步,先查出各個(gè)地區(qū)的相關(guān)變量均值,基于保存的df1變量,再?gòu)脑碇腥〕鰸M足條件的信息并將其保存名為df2的DataFrame變量。

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Nginx配置SSL證書(shū)的方法步驟

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

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

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

    Filebeat 采集 Nginx 日志的方法

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

    Nginx限制帶寬配置示例

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

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

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

最新評(píng)論