一周學會Pandas2 Python數據處理與分析-Pandas2復雜數據查詢操作

鋒哥原創的Pandas2?Python數據處理與分析 視頻教程:??

2025版 Pandas2 Python數據處理與分析 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili

前面我們學了.loc[]等幾個簡單的數據篩選操作,但實際業務需求往 往需要按照一定的條件甚至復雜的組合條件來查詢數據。

邏輯運算操作

類似于Python的邏輯運算,我們以DataFrame其中一列進行邏輯計算,會產生一個對應的由布爾值組成的Series,真假值由此位上的數據是否滿足邏輯表達式決定。

我們看一個最簡單示例,查看語文是否及格:

df.set_index('姓名').語文分數 >= 60

同樣支持多列判斷,查看語文,數據,英語是否及格:

df.set_index('姓名').loc[:, ['語文分數', '數學分數', '英語分數']] >= 60

同時還支持組合條件的邏輯運算,我們來查下數學及格的男生。

~(df.數學分數 < 60) & (df['性別'] == '男')

邏輯篩選數據操作

前面我們邏輯運算返回的是布爾類型的Series結果集,我們現在可以通過切片[],.loc()方法來返回邏輯篩選結果。

我們看幾個切片[]實例:

df[df['語文分數'] >= 60] # 查詢語文及格的人
df[~(df['語文分數'] >= 60)] #查詢語文不及格的人
df[df.語文分數 > df.數學分數] # 查詢語文分數高于數學分數的人

我們在幾個.loc[]實例:

df.loc[df['語文分數'] >= 60, '語文分數'] # 查詢語文及格的人,只顯示索引名稱和語文分數列
df.loc[(df.語文分數 >= 60) & (df.數學分數 >= 60) & (df.英語分數 >= 60)] # 語數英都及格的人
df.loc[(df.語文分數 >= 90) | (df.數學分數 >= 90) | (df.英語分數 >= 90)] # 語數英至少有一個90分的人
df.loc[df.語文分數 == 100] # 語文滿分的人

需要注意的是在進行或(|)、與(&)、非(~)運算時,各個獨 立邏輯表達式需要用括號括起來。

pandas提供了一些比較函數來支持邏輯運算:

df.ne() # 不等于 !=
df.le() # 小于等于 <=
df.lt() # 小于 <
df.ge() # 大于等于 >=
df.gt() # 大于 >

參考示例:

df.loc[df.語文分數.eq(100)] # 語文滿分的人
df.loc[(df.語文分數.ge(60)) & (df.數學分數.ge(60)) & (df.英語分數.ge(60))]  # 語數英都及格的人

查詢函數query()操作

pandasquery() 方法是一種高效且簡潔的 DataFrame 數據過濾工具,允許通過字符串表達式篩選滿足條件的行。它的語法類似于 SQL 的 WHERE 子句,特別適合復雜查詢和動態條件處理。

基本語法

DataFrame.query(expr, inplace=False, **kwargs)
  • expr:字符串形式的查詢條件表達式(支持列名、運算符、邏輯條件等)。

  • inplace:是否直接修改原 DataFrame(默認為 False,返回新 DataFrame)。

  • **kwargs:其他參數(如 engine='python'parser='pandas')。


核心特性

  1. 簡潔性:無需重復寫 DataFrame 名稱,直接使用列名操作。

  2. 動態表達式:支持字符串插值(如 @variable 引用外部變量)。

  3. 性能優化:底層依賴 numexpr 庫,對大數據集查詢效率更高。

  4. 復雜條件支持:靈活組合多條件(and/or/not)。

我們來看下示例:

df.query('數學分數>90') # 數學分數大于90的人
df.query('數學分數+語文分數+英語分數>250') # 總分大于250的人
df.query('(語文分數>90)&(性別=="男")') # 語文分數90分以上的男生
df.query('(語文分數>90)and(性別=="男")') # 語文分數90分以上的男生

還支持使用@符號引入變量,看下下面示例:

avg = df.語文分數.mean()  # 求平均分
df.query('語文分數>@avg')  # 語文分數超過平均分的人
df.query('語文分數>@avg+30')  # 語文分數超過平均分30分的人

篩選函數filter()操作

pandasfilter() 方法用于根據行或列的標簽名稱篩選數據,支持按列名或行名匹配規則快速過濾。它不依賴數據內容,而是基于標簽的規則匹配,適合處理列名或索引有特定規律的場景。

基本語法

DataFrame.filter(items=None,         # 直接指定列名/行名列表like=None,          # 模糊匹配包含指定字符串的標簽regex=None,         # 正則表達式匹配標簽axis=None           # 篩選方向:0(行)或 1(列,默認)
)

核心參數詳解:

  1. items:精確匹配列名或行名

  2. like:模糊匹配包含字符串的標簽

  3. regex:正則表達式匹配標簽

  4. axis:指定篩選方向

具體示例:

df.filter(items=['語文分數', '數學分數']) # 選擇列
df.filter(like='分數')  # 列名包含分數的列
df.filter(regex='孫', axis=0)  # 所有孫姓數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79430.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue bug】:deep()失效

vue 組件中使用了 element-plus 組件 <template><el-dialog:model-value"visible":title"title":width"width px":before-close"onClose"><div class"container" :style"{height:height px}"&g…

Trae 安裝第三方插件支持本地部署的大語言模型

Trae 安裝第三方插件支持本地部署的大語言模型 0. 引言1. 安裝插件 0. 引言 字節發布的 Trae IDE 一直不支持本地部署的的大語言模型。 Qwen3 剛剛發布&#xff0c;想在 Trae 中使用本地部署的 Qwen3&#xff0c;我們可以在 Trae 中安裝其他插件。 1. 安裝插件 我們可以安裝…

JavaScript 中的 Proxy 與 Reflect 教程

目錄 get 和 set 捕獲器詳解 為什么要用 Reflect? 使用語法間接調用內部方法 使用 Reflect 直接調用內部方法 對比總結: Reflect API 及其與 Proxy 的配合 Proxy 的典型應用場景 Proxy 是 ES6 引入的一種元編程特性。它允許創建一個代理對象來包裝目標對象,并攔截對目標…

基于STM32的心電圖監測系統設計

摘要 本論文旨在設計一種基于 STM32 微控制器的心電圖監測系統&#xff0c;通過對人體心電信號的采集、處理和分析&#xff0c;實現對心電圖的實時監測與顯示。系統采用高精度的心電信號采集模塊&#xff0c;結合 STM32 強大的數據處理能力&#xff0c;能夠有效去除噪聲干擾&a…

C語言----操作符詳解(萬字詳解)

目錄 1. 操作符的分類 2. 二進制和進制轉換 3. 原碼 反碼 補碼 4. 移位操作符 4.1 左移操作符 >> 4.2 右移操作符 >> 5. 位操作符 5.1 按位與 & 5.2 按位或 | 5.3 按位異或 ^ 5.4 按位取反 ~ 練習 整數存儲在內存中二進制中1的個數 練習 二進制位…

【進階】C# 委托(Delegate)知識點總結歸納

1. 委托的基本概念 定義&#xff1a;委托是一種類型安全的函數指針&#xff0c;用于封裝方法&#xff08;靜態方法或實例方法&#xff09;。 核心作用&#xff1a;允許將方法作為參數傳遞&#xff0c;實現回調機制和事件處理。 類型安全&#xff1a;委托在編譯時會檢查方法簽…

WebRTC 服務器之Janus視頻會議插件信令交互

1.基礎知識回顧 WebRTC 服務器之Janus概述和環境搭建-CSDN博客 WebRTC 服務器之Janus架構分析-CSDN博客 2.插件使用流程 我們要使?janus的功能時&#xff0c;通常要執?以下操作&#xff1a; 1. 在你的??引入 Janus.js 庫&#xff0c;即是包含janus.js&#xff1b; <…

Go語言中的無鎖數據結構與并發效率優化

1. 引言 在高并發系統開發中&#xff0c;性能瓶頸往往出現在并發控制上。作為一個有著10年Go開發經驗的后端工程師&#xff0c;我見證了無數因鎖競爭導致的性能問題&#xff0c;也親歷了無鎖編程為系統帶來的巨大提升。 傳統的鎖機制就像是十字路口的紅綠燈——雖然能確保安全…

STM32部分:2、環境搭建

飛書文檔https://x509p6c8to.feishu.cn/wiki/DQsBw76bCiWaO4kS8TXcWDs0nAh Keil MDK用于編寫代碼&#xff0c;編譯代碼芯片支持包&#xff0c;用于支持某類芯片編程支持STM32CubeMX用于自動生成工程&#xff0c;減少手動重復工作 STM32F1系列芯片支持包 軟件下載 直接下載&am…

U3D工程師簡歷模板

模板信息 簡歷范文名稱&#xff1a;U3D工程師簡歷模板&#xff0c;所屬行業&#xff1a;其他 | 職位&#xff0c;模板編號&#xff1a;B29EPQ 專業的個人簡歷模板&#xff0c;邏輯清晰&#xff0c;排版簡潔美觀&#xff0c;讓你的個人簡歷顯得更專業&#xff0c;找到好工作。…

Java設計模式: 實戰案例解析

Java設計模式: 實戰案例解析 在軟件開發中&#xff0c;設計模式是一種用來解決特定問題的可復用解決方案。它們是經過實踐驗證的最佳實踐&#xff0c;能夠幫助開發人員設計出高質量、易于維護的代碼。本文將介紹一些常見的Java設計模式&#xff0c;并通過實戰案例解析它們在實際…

Vue3源碼學習5-不使用 `const enum` 的原因

文章目錄 前言? 什么是 const enum? 為什么 Vue 3 不使用 const enum1. &#x1f4e6; **影響構建工具兼容性**2. &#x1f501; **難以做模塊間 tree-shaking**3. &#x1f9ea; **調試困難**4. &#x1f4e6; **Vue 是庫&#xff0c;不掌控用戶配置** ? 官方推薦做法&…

C++學習:六個月從基礎到就業——C++11/14:lambda表達式

C學習&#xff1a;六個月從基礎到就業——C11/14&#xff1a;lambda表達式 本文是我C學習之旅系列的第四十篇技術文章&#xff0c;也是第三階段"現代C特性"的第二篇&#xff0c;主要介紹C11/14中引入的lambda表達式。查看完整系列目錄了解更多內容。 引言 Lambda表達…

AIDC智算中心建設:計算力核心技術解析

目錄 一、智算中心發展概覽 二、計算力核心技術解析 一、智算中心發展概覽 智算中心是人工智能發展的關鍵基礎設施&#xff0c;基于人工智能計算架構&#xff0c;提供人工智能應用所需算力服務、數據服務和算法服務的算力基礎設施&#xff0c;融合高性能計算設備、高速網絡以…

IoTDB時序數據庫V2.0.2大版本更新的一些梳理

一些小知識&#xff1a; 關于事務&#xff1a;時序數據庫是沒有事務的&#xff0c;它和關系數據庫的應用場景不同&#xff0c;通常情況下不需要多點同時操作同一條數據&#xff0c;而且要保證極高的吐出量&#xff0c;事務太消耗資源&#xff0c;并且時序數據庫提供了覆寫的功能…

CSS定位詳解

在前端開發中&#xff0c;CSS 定位&#xff08;positioning&#xff09;是一個核心概念&#xff0c;它決定了元素在頁面上的位置和布局方式。無論是構建復雜的交互界面&#xff0c;還是實現簡單的頁面排版&#xff0c;CSS 定位都是不可或缺的工具。本文將全面介紹 CSS 中的五種…

React 語法擴展

useReducer鉤子函數 不同action類型返回不同處理行為 useState()函數返回解構為兩個值 state當前狀態 dispatch修改狀態函數 dispatch()函數參數為一個actuon對象 如 &#xff1a; 樣例&#xff1a; import { useReducer } from react; import ./App.css;// 定義一個Reduce…

MCP協議與Dify集成教程

一、MCP協議概述 MCP&#xff08;Model Control Protocol&#xff09;是一種新興的開放協議&#xff0c;為大型語言模型&#xff08;LLM&#xff09;與外部應用之間構建了雙向通信通道。它就像是AI的"USB-C"接口&#xff0c;幫助模型發現、理解并安全調用各種外部工…

學習springboot-條件化配置@Conditional(條件注解)

前言 在Spring Boot中&#xff0c;Conditional 注解及其相關注解是用于條件化配置的重要工具。它們允許開發者根據特定條件決定是否加載某個Bean或配置類。 注意&#xff1a;Conditional 相關注解&#xff0c;通常和Bean搭配使用 學習springboot-Bean管理&#xff08;Bean 注…

2025年- H18-Lc126-54.螺旋矩陣(矩陣)---java版

1.題目描述 2.思路* 思路1&#xff1a; 補充2&#xff1a; directions[1][0] // 表示“下”這個方向的行增量&#xff08;1&#xff09; directions[1][1] // 表示“下”這個方向的列增量&#xff08;0&#xff09; int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-…