日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pandas简明教程:六、Pandas条件查询

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pandas简明教程:六、Pandas条件查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 1、基本方法
          • 2、高級查詢
          • 3、 可用于修改內容的`where`方法
          • 4、條件檢索進階:快速的查詢方法`query`
          • 5、其它檢索方法簡述
          • 本系列教程教程完整目錄:

目前大家公認的一個說法是:Python的用戶主要集中在數據分析和機器學習這兩類人群。數據分析人員之所以喜歡用它就是因為Python的各種數據處理工具的查詢檢索方式都非常簡單易用。這篇教程就主要介紹Pandas的數據查詢方法,借此可以感受一下Pandas的便利。

1、基本方法

首先,數據仍然用我們一直以來用的張三團伙表。

df月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 1 2 張三 男 2000 1000 主犯 2 3 張三 女 2000 15000 主犯 3 4 張三 女 2000 1500 主犯 4 5 張三 女 2000 1500 主犯 5 2 李四 男 1800 1300 從犯 6 3 李四 男 1800 1300 從犯 7 4 李四 男 1800 1300 從犯 8 5 李四 男 1800 1300 從犯 9 1 王五 女 1800 1300 龍套 10 2 王五 女 1800 1300 龍套 11 3 王五 女 1800 1300 龍套 12 4 王五 女 1800 1300 龍套

比如此時我們只想查看性別為男的人員信息:(等式條件)

df[df['性別'] == '男']月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 1 2 張三 男 2000 1000 主犯 5 2 李四 男 1800 1300 從犯 6 3 李四 男 1800 1300 從犯 7 4 李四 男 1800 1300 從犯

或者工資大于2000的信息:(不等式條件)

df[df['實發工資']>2000]月份 姓名 性別 應發工資 實發工資 職位 2 3 張三 女 2000 15000 主犯

或者所有人員中實發工資大于1400且性別為男的信息:(多條件)

df[(df['實發工資']>1000) & (df['性別'] == '男')]月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 5 2 李四 男 1800 1300 從犯 6 3 李四 男 1800 1300 從犯 7 4 李四 男 1800 1300 從犯 8 5 李四 男 1800 1300 從犯

這里簡單小結一下,基本的查詢規則即是在df后加入查詢條件,而這個條件可以是df任意位置的數據。 明白這一點之后,其實就很容易理解其條件查詢功能了。

2、高級查詢

比如我想找到所有姓張的人的信息:

df[[x.startswith('張') for x in df['姓名']]]月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 1 2 張三 男 2000 1000 主犯 2 3 張三 女 2000 15000 主犯 3 4 張三 女 2000 1500 主犯 4 5 張三 女 2000 1500 主犯

這里stratswith方法是Python自帶的字符串方法,點這里查看詳細說明。

還有一種方法:

criterion = df['姓名'].map(lambda x: x.startswith('張'))df[criterion]月份 姓名 性別 應發工資 實發工資 職位 0 1 張三 男 2000 1500 主犯 1 2 張三 男 2000 1000 主犯 2 3 張三 女 2000 15000 主犯 3 4 張三 女 2000 1500 主犯 4 5 張三 女 2000 1500 主犯

官方稱第二種方法更快,我們來測試一下:

# 第一種方法 %timeit df[[x.startswith('張') for x in df['姓名']]] 203 μs ± 8.92 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)# 第二種方法 %timeit criterion = df['姓名'].map(lambda x: x.startswith('張')) 93.2 μs ± 6.21 μs per loop (mean ± std. dev. of 7 runs, 10000 loops each)%timeit df[criterion] 201 μs ± 2.44 μs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

可以看到,第二種方法實際上并沒有明顯快多少。并且如果加上添加檢索規則的時間反而更慢。

很明顯作者只考慮了檢索的時間,并沒有計算制定規則的時間。所以在具體使用時還是需要自己多做一些測試。(這也就是免費工具的不好之處)。

類似地,還可以利用上述方式實現更為復雜的查詢。

3、 可用于修改內容的where方法

先看用法:

df.where(df['性別'] == '男')月份 姓名 性別 應發工資 實發工資 職位 0 1.0 張三 男 2000.0 1500.0 主犯 1 2.0 張三 男 2000.0 1000.0 主犯 2 NaN NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN NaN 5 2.0 李四 男 1800.0 1300.0 從犯 6 3.0 李四 男 1800.0 1300.0 從犯 7 4.0 李四 男 1800.0 1300.0 從犯 8 5.0 李四 男 1800.0 1300.0 從犯 9 NaN NaN NaN NaN NaN NaN 10 NaN NaN NaN NaN NaN NaN 11 NaN NaN NaN NaN NaN NaN 12 NaN NaN NaN NaN NaN NaN

這里where的使用和直接訪問標簽的方式就有所不同了,這是將所有滿足條件的項保持原狀,而其它項全部設為NaN。如果要替換數據的話,需要比較復雜的表達式,這里只看一個簡單的例子:

dates = pd.date_range('1/1/2000', periods=8)df = pd.DataFrame(np.random.randn(8, 4),index=dates, columns=['A', 'B', 'C', 'D'])df.where(df < 0, -df)A B C D 2000-01-01 -2.843891 -0.140803 -1.816075 -0.248443 2000-01-02 -0.195239 -1.014760 -0.621017 -0.308201 2000-01-03 -0.773316 -0.411646 -1.091336 -0.486160 2000-01-04 -1.753884 -0.596536 -0.273482 -0.685287 2000-01-05 -1.125159 -0.549449 -0.275434 -0.861960 2000-01-06 -1.059645 -1.600819 -0.085352 -0.406073 2000-01-07 -1.692449 -1.767384 -0.266578 -0.593165 2000-01-08 -0.163517 -1.645777 -1.509307 -0.637490

這里插一句:實際上numpy也有where方法,用法類似,可參考:Python Numpy中返回下標操作函數-節約時間的利器

4、條件檢索進階:快速的查詢方法query
df.query('姓名>性別')月份 姓名 性別 應發工資 實發工資 職位 2 3 張三 女 2000 15000 主犯 3 4 張三 女 2000 1500 主犯 4 5 張三 女 2000 1500 主犯 9 1 王五 女 1800 1300 龍套 10 2 王五 女 1800 1300 龍套 11 3 王五 女 1800 1300 龍套 12 4 王五 女 1800 1300 龍套

這里,字符串的比較可以查看Python的字符串比較。當然,這里可以看到,query方法主要還是用于列的比較。

5、其它檢索方法簡述

除了上述方法之外,還有:

query方法的條件處理

MultiIndex情況下的處理

get方法

lookup方法

等等

本系列教程教程完整目錄:

一、Pandas簡介與安裝

二、Pandas基本數據結構-DataFrame與Series

三、Pandas文件讀寫

四、Pandas數據索引方式

五、Pandas簡單統計操作及通用方式

六、Pandas條件查詢

七、Pandas缺失數據的處理(數據清洗基礎)

八、Pandas數據透視表

九、表的合并、連接、拼接(數據聚合基礎)

總結

以上是生活随笔為你收集整理的Pandas简明教程:六、Pandas条件查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。