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

Pandas?Query方法使用深度總結(jié)

 更新時(shí)間:2022年07月26日 11:20:37   作者:周蘿卜  
大多數(shù)Pandas用戶都熟悉iloc[]和loc[]索引器方法,用于檢索行和列。但是隨著檢索數(shù)據(jù)的規(guī)則變得越來(lái)越復(fù)雜,這些方法也隨之變得更加復(fù)雜而臃腫。本文將展示如何使用?query()?方法對(duì)數(shù)據(jù)框執(zhí)行查詢,感興趣的可以了解一下

大多數(shù) Pandas 用戶都熟悉 iloc[] 和 loc[] 索引器方法,用于從 Pandas DataFrame 中檢索行和列。但是隨著檢索數(shù)據(jù)的規(guī)則變得越來(lái)越復(fù)雜,這些方法也隨之變得更加復(fù)雜而臃腫。

同時(shí) SQL 也是我們經(jīng)常接觸且較為熟悉的語(yǔ)言,那么為什么不使用類似于 SQL 的東西來(lái)查詢我們的數(shù)據(jù)呢

事實(shí)證明實(shí)際上可以使用 query() 方法做到這一點(diǎn)。因此,在今天的文章中,我們將展示如何使用 query() 方法對(duì)數(shù)據(jù)框執(zhí)行查詢

獲取數(shù)據(jù)

我們使用 kaggle 上的 Titanic 數(shù)據(jù)集作為本文章的測(cè)試數(shù)據(jù)集,下載地址如下:https://www.kaggle.com/datasets/tedllh/titanic-train

當(dāng)然也可以在文末獲取到蘿卜哥下載好的數(shù)據(jù)集

載入數(shù)據(jù)

下面文末就可以使用 read_csv 來(lái)載入數(shù)據(jù)了

import?pandas?as?pd
df?=?pd.read_csv('titanic_train.csv')
df

數(shù)據(jù)集有 891 行和 12 列:

使用 query() 方法

讓我們找出從南安普敦 (‘S’) 出發(fā)的所有乘客,可以使用方括號(hào)索引,代碼如下所示:

df[df['Embarked']?==?'S']

如果使用 query() 方法,那么看起來(lái)更整潔:

df.query('Embarked?==?"S"')

與 SQL 比較,則 query() 方法中的表達(dá)式類似于 SQL 中的 WHERE 語(yǔ)句。

結(jié)果是一個(gè) DataFrame,其中包含所有從南安普敦出發(fā)的乘客:

query() 方法接受字符串作為查詢條件串,因此,如果要查詢字符串列,則需要確保字符串被正確括起來(lái):

很多時(shí)候,我們可能希望將變量值傳遞到查詢字符串中,可以使用 @ 字符執(zhí)行此操作:

embarked?=?'S'
df.query('Embarked?==?@embarked')

或者也可以使用 f 字符串,如下所示:

df.query(f'Embarked?==?"{embarked}"')

就個(gè)人而言,我認(rèn)為與 f-string 方式相比,使用 @ 字符更簡(jiǎn)單、更優(yōu)雅,你認(rèn)為呢

如果列名中有空格,可以使用反引號(hào) (``) 將列名括起來(lái):

df.query('`Embarked?On`?==?@embarked')

以 In-place 的方式執(zhí)行 query 方法

當(dāng)使用 query() 方法執(zhí)行查詢時(shí),該方法將結(jié)果作為 DataFrame 返回,原始 DataFrame 保持不變。如果要更新原始 DataFrame,需要使用 inplace 參數(shù),如下所示:

df.query('Embarked?==?"S"',?inplace=True)

當(dāng) inplace 設(shè)置為 True 時(shí),query() 方法將不會(huì)返回任何值,原始 DataFrame 被修改。

指定多個(gè)條件查詢

我們可以在查詢中指定多個(gè)條件,例如假設(shè)我想獲取所有從南安普敦 (‘S’) 或瑟堡 (‘C’) 出發(fā)的乘客。如果使用方括號(hào)索引,這種語(yǔ)法很快變得非常笨拙:

df[(df['Embarked']?==?'S')?|?(df['Embarked']?==?'C')]

我們注意到,在這里我們需要在查詢的條件下引用 DataFrame 兩次,而使用 query() 方法,就簡(jiǎn)潔多了:

df.query('Embarked?in?("S","C")')

查詢結(jié)果如下

如果要查找所有不是從南安普敦(‘S’)或瑟堡(‘C’)出發(fā)的乘客,可以在 Pandas 中使用否定運(yùn)算符 (~):

df[~((df['Embarked']?==?'S')?|?(df['Embarked']?==?'C'))]

使用 query() 方法,只需要使用 not 運(yùn)算符:

df.query('Embarked?not?in?("S","C")')

以下輸出顯示了從皇后鎮(zhèn) (‘Q’) 出發(fā)的乘客以及缺失值的乘客:

說(shuō)到缺失值,該怎么查詢?nèi)笔е的?,?dāng)應(yīng)用于列名時(shí),我們可以使用 isnull() 方法查找缺失值:

df.query('Embarked.isnull()')

現(xiàn)在將顯示 Embarked 列中缺少值的行:

其實(shí)可以直接在列名上調(diào)用各種 Series 方法:

df.query('Name.str.len()?<?20')??#?find?passengers?whose?name?is?
?????????????????????????????????#?less?than?20?characters
df.query(f'Ticket.str.startswith("A")')?#?find?all?passengers?whose?
????????????????????????????????????????#?ticket?starts?with?A

比較數(shù)值列

我們還可以輕松比較數(shù)字列:

df.query('Fare?>?50')

以下輸出顯示了票價(jià)大于 50 的所有行:

比較多個(gè)列

還可以使用 and、or 和 not 運(yùn)算符比較多個(gè)列,以下語(yǔ)句檢索 Fare 大于 50 和 Age 大于 30 的所有行:

df.query('Fare?>?50?and?Age?>?30')

下面是查詢結(jié)果

查詢索引

通常當(dāng)我們想根據(jù)索引值檢索行時(shí),可以使用 loc[] 索引器,如下所示:

df.loc[[1],:]??#?get?the?row?whose?index?is?1;?return?as?a?dataframe

但是使用 query() 方法,使得事情變得更加直觀:

df.query('index==1')

結(jié)果如下

如果要檢索索引值小于 5 的所有行:

df.query('index<5')

結(jié)果如下

我們還可以指定索引值的范圍:

df.query('6?<=?index?<?20')

結(jié)果如下

比較多列

我們還可以比較列之間的值,例如以下語(yǔ)句檢索 Parch 值大于 SibSp 值的所有行:

df.query('Parch?>?SibSp')

結(jié)果如下

總結(jié)

從上面的示例可以看出,query() 方法使搜索行的語(yǔ)法更加自然簡(jiǎn)潔,希望感興趣的小伙伴多加練習(xí),真正的達(dá)到融會(huì)貫通的地步哦~

到此這篇關(guān)于Pandas Query方法使用深度總結(jié)的文章就介紹到這了,更多相關(guān)Pandas Query方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Python中的多重繼承

    淺析Python中的多重繼承

    這篇文章主要介紹了Python中的多重繼承,是Python學(xué)習(xí)中的基本知識(shí),代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Pycharm使用Conda激活環(huán)境失敗的問(wèn)題解決

    Pycharm使用Conda激活環(huán)境失敗的問(wèn)題解決

    本文主要介紹了Pycharm使用Conda激活環(huán)境失敗的問(wèn)題解決,文中主要介紹了兩種問(wèn)題的解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • PyTorch 多GPU下模型的保存與加載(踩坑筆記)

    PyTorch 多GPU下模型的保存與加載(踩坑筆記)

    這篇文章主要介紹了PyTorch 多GPU下模型的保存與加載(踩坑筆記),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python將文本去空格并保存到txt文件中的實(shí)例

    Python將文本去空格并保存到txt文件中的實(shí)例

    今天小編就為大家分享一篇Python將文本去空格并保存到txt文件中的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法

    Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了Django中利用filter與simple_tag為前端自定義函數(shù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • Python正則表達(dá)式匹配中文用法示例

    Python正則表達(dá)式匹配中文用法示例

    這篇文章主要介紹了Python正則表達(dá)式匹配中文用法,結(jié)合實(shí)例形式分析了Python針對(duì)中文的正則與文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-01-01
  • 使用pip發(fā)布Python程序的方法步驟

    使用pip發(fā)布Python程序的方法步驟

    這篇文章主要介紹了使用pip發(fā)布Python程序的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python的help函數(shù)如何使用

    python的help函數(shù)如何使用

    在本篇文章里小編給大家整理的是關(guān)于python的help函數(shù)的相關(guān)用法和知識(shí)點(diǎn)總結(jié),需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python列表數(shù)據(jù)如何按區(qū)間分組統(tǒng)計(jì)各組個(gè)數(shù)

    Python列表數(shù)據(jù)如何按區(qū)間分組統(tǒng)計(jì)各組個(gè)數(shù)

    這篇文章主要介紹了Python列表數(shù)據(jù)如何按區(qū)間分組統(tǒng)計(jì)各組個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Python 忽略文件名編碼的方法

    Python 忽略文件名編碼的方法

    這篇文章主要介紹了Python 忽略文件名編碼的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

买车| 柳河县| 宝山区| 嘉鱼县| 岳普湖县| 芦溪县| 邵阳县| 易门县| 徐水县| 乃东县| 翁源县| 菏泽市| 阿拉善左旗| 老河口市| 宁蒗| 平乡县| 岐山县| 正阳县| 彩票| 儋州市| 黑龙江省| 肃宁县| 红安县| 宣化县| 武冈市| 鸡西市| 南雄市| 彭阳县| 祁阳县| 西吉县| 丹东市| 韶山市| 马尔康县| 东辽县| 南川市| 庆元县| 山丹县| 遂川县| 双江| 阿巴嘎旗| 招远市|