溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas查詢數(shù)據df.query如何使用

發(fā)布時間:2022-07-28 10:50:37 來源:億速云 閱讀:162 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Pandas查詢數(shù)據df.query如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Pandas查詢數(shù)據df.query如何使用”吧!

方法對比:
使用df[(df[“a”] > 3) & (df[“b”]<5)]的方式;
使用df.query(“a>3 & b<5”)的方式;

df = pd.read_csv("beijing_tianqi_2018.csv")
df.head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013℃-6℃晴~多云東北風1-2級592
12018-01-022℃-5℃陰~多云東北風1-2級49優(yōu)1
22018-01-032℃-5℃多云北風1-2級28優(yōu)1
32018-01-040℃-8℃東北風1-2級28優(yōu)1
42018-01-053℃-6℃多云~晴西北風1-2級50優(yōu)1
# 替換掉溫度的后綴℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')

使用dataframe條件表達式查詢

最低溫度低于-10度的列表

df[df["yWendu"] < -10].head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
222018-01-23-4-12西北風3-4級31優(yōu)1
232018-01-24-4-11西南風1-2級34優(yōu)1
242018-01-25-3-11多云東北風1-2級27優(yōu)1
3592018-12-26-2-11晴~多云東北風2級26優(yōu)1
3602018-12-27-5-12多云~晴西北風3級48優(yōu)1

復雜條件查詢

注意,組合條件用&符號合并,每個條件判斷都得帶括號

## 查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據
df[
    (df["bWendu"]<=30) 
    & (df["yWendu"]>=15) 
    & (df["tianqi"]=='晴') 
    & (df["aqiLevel"]==1)]
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
2352018-08-243020北風1-2級40優(yōu)1
2492018-09-072716西北風3-4級22優(yōu)1

使用df.query可以簡化查詢

形式:DataFrame.query(expr, inplace=False, **kwargs)

其中expr為要返回boolean結果的字符串表達式

形如:

  • df.query(&lsquo;a<100&rsquo;)

  • df.query(&lsquo;a < b & b < c&rsquo;),或者df.query(&rsquo;(a<b)&(b<c)&rsquo;)

df.query可支持的表達式語法:

  • 邏輯操作符: &, |, ~

  • 比較操作符: <, <=, ==, !=, >=, >

  • 單變量操作符: -

  • 多變量操作符: +, -, *, /, %

df.query中可以使用@var的方式傳入外部變量

df.query支持的語法來自NumExpr,地址:
https://numexpr.readthedocs.io/projects/NumExpr3/en/latest/index.html

查詢最低溫度低于-10度的列表

df.query("yWendu < 3").head(3)
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013-6晴~多云東北風1-2級592
12018-01-022-5陰~多云東北風1-2級49優(yōu)1
22018-01-032-5多云北風1-2級28優(yōu)1

查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據

## 查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據
df.query("bWendu<=30 & yWendu>=15 & tianqi=='晴' & aqiLevel==1")
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
2352018-08-243020北風1-2級40優(yōu)1
2492018-09-072716西北風3-4級22優(yōu)1

查詢溫差大于15度的日子

df.query("bWendu-yWendu >= 15").head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
682018-03-1014-2東南風1-2級171中度污染4
822018-03-24225西南風1-2級119輕度污染3
832018-03-25247南風1-2級782
842018-03-26257多云西南風1-2級151中度污染4
852018-03-272711南風1-2級243重度污染5

可以使用外部的變量

# 查詢溫度在這兩個溫度之間的數(shù)據
high_temperature = 15
low_temperature = 13
df.query("yWendu<=@high_temperature & yWendu>=@low_temperature").head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
1072018-04-182714多云~晴西南風3-4級147輕度污染3
1082018-04-192613多云東南風4-5級170中度污染4
1092018-04-202814多云~小雨南風4-5級164中度污染4
1162018-04-272513西南風3-4級112輕度污染3
1192018-04-302414多云南風3-4級622

感謝各位的閱讀,以上就是“Pandas查詢數(shù)據df.query如何使用”的內容了,經過本文的學習后,相信大家對Pandas查詢數(shù)據df.query如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI