自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Pandas 實(shí)用技能,數(shù)據(jù)篩選 query 函數(shù)詳細(xì)介紹

開發(fā) 后端
在數(shù)據(jù)處理過程中,咱們經(jīng)常會(huì)用到數(shù)據(jù)篩選,Pandas 中提供了數(shù)據(jù)篩選的多種方法,這里,來給大家分享下 在Pandas中應(yīng)用 query 函數(shù)來進(jìn)行數(shù)據(jù)篩選。

Pandas 可以說是 在Python數(shù)據(jù)科學(xué)領(lǐng)域應(yīng)用最為廣泛的工具之一。Pandas是一種高效的數(shù)據(jù)處理庫,它以 ??dataframe????series?? 為基本數(shù)據(jù)類型,呈現(xiàn)出類似excel的二維數(shù)據(jù)。在數(shù)據(jù)處理過程中,咱們經(jīng)常會(huì)用到數(shù)據(jù)篩選,Pandas 中提供了數(shù)據(jù)篩選的多種方法,這里,來給大家分享下 在Pandas中應(yīng)用 ??query?? 函數(shù)來進(jìn)行數(shù)據(jù)篩選。??query?? 函數(shù)的一般用法如下:

df.query('expression')

文中的代碼是在 Jupyter Notebook 中運(yùn)行的(也可以是其他IDE),本次使用的 Pandas 版本是 1.3.0 版,如下:

import pandas as pd
print(f'pandas version: {pd.__version__}')
# pandas version: 1.3.0rc1

在開始之前,先創(chuàng)建一份數(shù)據(jù),供后續(xù)使用:

data = {
'brand':['Python數(shù)據(jù)之道','價(jià)值前瞻','菜鳥數(shù)據(jù)之道','Python','Java'],
'A':[10,2,5,20,16],
'B':[4,6,8,12,10],
'C':[8,12,18,8,2],
'D':[6,18,14,6,12],
'till years':[4,1,1,30,30]
}

df = pd.DataFrame(data=data)
df

數(shù)據(jù)如下:

圖片

常用方法

篩選 "brand" 列中值為 "Python數(shù)據(jù)之道" 的行,如下:

df.query('brand == "Python數(shù)據(jù)之道"')

結(jié)果如下:

圖片

說明一下,上面代碼中的單引號(hào)和雙引號(hào)是可以互換的,下面的寫法,其結(jié)果也是一樣的:

df.query(" brand == 'Python數(shù)據(jù)之道' ")

上面用 query 函數(shù)篩選數(shù)據(jù),用下面的方法也是可以實(shí)現(xiàn)的:

df[df['brand']=="Python數(shù)據(jù)之道"]

圖片

上面是篩選字符串的值,也可以是篩選數(shù)字,如下:

圖片

通過數(shù)學(xué)表達(dá)式篩選

除了直接通過等于某個(gè)值來篩選, query 函數(shù)還支持通過數(shù)學(xué)表達(dá)式來進(jìn)行數(shù)據(jù)篩選,包括 ??>??、 ??<??、 ??+??、 ??-??、 ??*??、 ??/?? 等。

示例如下:

圖片

圖片圖片

通過變量篩選

在程序比較長的時(shí)候,經(jīng)常會(huì)使用變量來作為篩選條件, query 函數(shù)在使用變量作為判斷標(biāo)準(zhǔn)時(shí),通過在變量前面添加 ??@?? 符號(hào)來實(shí)現(xiàn),示例如下:

# 通過變量來篩選數(shù)據(jù),在變量前使用 @ 符號(hào)即可
name = 'Python數(shù)據(jù)之道'
df.query('brand == @name')

圖片

列表數(shù)據(jù)篩選

當(dāng)需要在某列中篩選多個(gè)符合要求的值的時(shí)候,可以通過列表(list)來實(shí)現(xiàn),示例如下:

# 需要注意下 雙引號(hào) 和 單引號(hào)的分開使用
df.query('brand in ["Python數(shù)據(jù)之道","價(jià)值前瞻"]')
# df.query("brand in ['Python數(shù)據(jù)之道','價(jià)值前瞻']")

圖片

多條件篩選

有很多情況下,咱們需要通過多個(gè)條件來篩選數(shù)據(jù),query 函數(shù)支持多種條件的組合,

  • 兩者都需要滿足的并列條件使用符號(hào) &,或 單詞 and
  • 只需要滿足其中之一的條件使用符號(hào) |,或 單詞 or

示例如下:

圖片圖片圖片圖片

圖片

列名稱有空格的情況

當(dāng) dataframe 的列名稱中有空格或其他特殊符號(hào)的時(shí)候,需要使用 ??反引號(hào)(backtick mark)??,即鍵盤ESC鍵下面的按鍵(就是鍵盤上第二排第一個(gè)按鍵,有‘~’這個(gè)符號(hào)的按鍵) 來將列名包裹起來,示例如下:

df.query("`till years` < 5")

圖片

注意,如果使用單引號(hào),將會(huì)報(bào)錯(cuò),如下:

圖片

篩選后選取數(shù)據(jù)列

在數(shù)據(jù)篩選后,還可以選擇需要的數(shù)據(jù)列,如下:

圖片

圖片

小結(jié)

以上就是關(guān)于 Pandas 中 query 函數(shù)的主要內(nèi)容介紹,應(yīng)用 query函數(shù)進(jìn)行數(shù)據(jù)篩選,其語言還是比較簡(jiǎn)潔的,尤其是當(dāng)條件比較多的時(shí)候,會(huì)顯得更優(yōu)雅。

比如下面的對(duì)比,假設(shè)都是三個(gè)篩選條件(假設(shè)數(shù)據(jù)量較多,符合的結(jié)果也較多):

沒有使用query函數(shù)時(shí)?

df[(df['brand']=="Python數(shù)據(jù)之道") & (df['A'] >2) & (df['C'] >4)]

圖片

可以看出上面的表達(dá)式是比較長的,略顯繁瑣。

使用query函數(shù)時(shí)?

df.query(" brand == 'Python數(shù)據(jù)之道' & A>2 & C>4 ")

圖片

相對(duì)來說,使用query 函數(shù)會(huì)顯得更加簡(jiǎn)潔,如果覺得這個(gè)功能不錯(cuò),就趕緊用起來吧~~

責(zé)任編輯:龐桂玉 來源: AI科技大本營
相關(guān)推薦

2011-06-21 11:05:41

內(nèi)聯(lián)函數(shù)

2011-06-20 09:34:17

優(yōu)化函數(shù)

2009-12-10 09:59:49

PHP讀取目錄函數(shù)

2020-10-29 08:35:06

Pandas函數(shù)Python

2011-07-06 11:15:09

ASP.NET

2019-06-12 16:21:52

時(shí)間序列PythonPandas

2011-07-15 01:20:58

C指針函數(shù)函數(shù)指針

2009-12-02 20:15:12

PHP header函

2009-06-25 14:59:39

jQuery.exte

2009-11-09 17:30:20

WCF元數(shù)據(jù)

2020-12-14 13:24:17

PandasSQL數(shù)據(jù)集

2010-07-30 13:58:20

DB2 實(shí)用程序

2022-11-03 10:28:59

PandasSAC機(jī)制

2009-12-11 17:14:43

PHP中文處理函數(shù)

2009-02-24 14:27:55

2020-12-14 14:16:34

Pandas數(shù)據(jù)預(yù)處理

2022-07-26 00:25:57

PandasQuery索引器

2020-08-14 10:57:49

開發(fā)技能代碼

2011-07-20 17:16:50

C++重載函數(shù)

2010-03-11 11:07:37

Python函數(shù)參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)