【Python】進階學習:pandas--如何根據指定條件篩選數據

【Python】進階學習:pandas–如何根據指定條件篩選數據
在這里插入圖片描述

🌈 個人主頁:高斯小哥
🔥 高質量專欄:Matplotlib之旅:零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程👈 希望得到您的訂閱和支持~
💡 創作高質量博文(平均質量分92+),分享更多關于深度學習、PyTorch、Python領域的優質內容!(希望得到您的關注~)


🌵文章目錄🌵

  • 📚 一、pandas庫簡介
  • 🔍 二、條件篩選基礎
    • 📋 示例1:篩選DataFrame中的特定行
    • 📋 示例2:組合多個條件
  • 🎯 三、高級篩選技巧
    • 📋 示例3:使用`query()`方法篩選數據
    • 📋 示例4:使用`isin()`方法篩選數據
  • 📘 四、條件篩選與函數應用
    • 📋 示例5:使用`apply()`和條件函數篩選數據
  • 🌈 五、條件篩選的最佳實踐
    • 📋 示例6:保持代碼清晰
    • 📋 示例7:利用向量化操作
  • 🎉六、 總結
  • 🤝七、期待與你共同進步

📚 一、pandas庫簡介

??pandas是Python中一個非常流行的數據處理庫,它提供了大量的數據結構(如Series和DataFrame)以及數據分析工具,讓數據處理變得既簡單又高效。在數據分析的過程中,我們經常需要根據某些條件篩選數據,這時pandas提供了非常靈活和方便的篩選功能。

🔍 二、條件篩選基礎

??在pandas中,我們通常使用布爾索引(Boolean Indexing)來進行條件篩選。布爾索引是指根據條件表達式的結果(True或False)來選擇數據。

📋 示例1:篩選DataFrame中的特定行


假設我們有一個DataFrame df,其中包含學生的信息:

import pandas as pd# 創建一個示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 篩選年齡大于23的學生
older_students = df[df['Age'] > 23]
print(older_students)

輸出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例2:組合多個條件


我們也可以使用&(和)和|(或)來組合多個條件:

import pandas as pd# 創建一個示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 篩選年齡大于23且成績為A的學生
specific_students = df[(df['Age'] > 23) & (df['Grade'] == 'A')]
print(specific_students)

輸出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

🎯 三、高級篩選技巧

??除了基本的布爾索引,pandas還提供了很多高級篩選技巧,如query()方法、isin()方法等。

📋 示例3:使用query()方法篩選數據

??query()方法允許我們使用字符串表達式來篩選數據,非常適合處理復雜的篩選條件。

import pandas as pd# 創建一個示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 篩選年齡大于23或成績為A的學生
complex_filter = df.query('Age > 23 or Grade == "A"')
print(complex_filter)

輸出:

      Name  Age Grade
0    Alice   25     A
2  Charlie   28     A

📋 示例4:使用isin()方法篩選數據

??isin()方法允許我們根據一個值列表來篩選數據。

import pandas as pd# 創建一個示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 篩選名字是Alice或Eve的學生
name_filter = df[df['Name'].isin(['Alice', 'Eve'])]
print(name_filter)

輸出:

    Name  Age Grade
0  Alice   25     A
4    Eve   23     B

📘 四、條件篩選與函數應用

??除了直接使用條件表達式,我們還可以結合pandas提供的函數來進行更復雜的篩選操作。

📋 示例5:使用apply()和條件函數篩選數據

import pandas as pd# 創建一個示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'Age': [25, 22, 28, 20, 23],'Grade': ['A', 'B', 'A', 'C', 'B']
}
df = pd.DataFrame(data)# 定義一個條件函數
def is_elderly(age):return age >= 21# 使用apply()方法應用條件函數
elderly_students = df[df['Age'].apply(is_elderly)]
print(elderly_students)

輸出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

??在這個例子中,我們定義了一個is_elderly函數來判斷年齡是否大于等于21,然后使用apply()方法將這個函數應用到Age列上,得到一個布爾序列,最后用這個布爾序列來篩選數據。

🌈 五、條件篩選的最佳實踐

??在實際應用中,遵循一些最佳實踐可以讓我們的代碼更加清晰、高效。

📋 示例6:保持代碼清晰

??盡量使用具有描述性的列名和條件表達式,這樣其他人在閱讀你的代碼時可以更容易理解你的意圖。

# 使用描述性的列名和條件表達式
high_scoring_students = df[(df['Grade'] == 'A') | (df['Grade'] == 'B')]
print(high_scoring_students)

📋 示例7:利用向量化操作

??pandas的許多函數都是向量化(vectorized)的,這意味著它們在整個數組上操作而不是在單個元素上循環。利用這些向量化操作可以提高代碼的效率。

# 利用向量化操作篩選數據
high_grades = df['Grade'].isin(['A', 'B'])
high_scoring_students = df[high_grades]
print(high_scoring_students)

輸出:

      Name  Age Grade
0    Alice   25     A
1      Bob   22     B
2  Charlie   28     A
4      Eve   23     B

在這個例子中,我們使用了isin()這個向量化函數來創建一個布爾數組,然后用這個數組來篩選數據。

🎉六、 總結

??條件篩選是pandas中非常重要的一個功能,它允許我們根據特定條件來快速、高效地篩選數據。通過學習和實踐這些條件篩選的技巧和最佳實踐,我們可以更好地利用pandas來處理和分析數據。希望這篇文章能夠幫助你更深入地理解和應用pandas的條件篩選功能!

🤝七、期待與你共同進步

??🌱 親愛的讀者,非常感謝你每一次的停留和閱讀!你的支持是我們前行的最大動力!🙏

??🌐 在這茫茫網海中,有你的關注,我們深感榮幸。你的每一次點贊👍、收藏🌟、評論💬和關注💖,都像是明燈一樣照亮我們前行的道路,給予我們無比的鼓舞和力量。🌟

??📚 我們會繼續努力,為你呈現更多精彩和有深度的內容。同時,我們非常歡迎你在評論區留下你的寶貴意見和建議,讓我們共同進步,共同成長!💬

??💪 無論你在編程的道路上遇到什么困難,都希望你能堅持下去,因為每一次的挫折都是通往成功的必經之路。我們期待與你一起書寫編程的精彩篇章! 🎉

??🌈 最后,再次感謝你的厚愛與支持!愿你在編程的道路上越走越遠,收獲滿滿的成就和喜悅!祝你編程愉快!🎉

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

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

相關文章

2024第二次培訓:win11系統下使用nginx、JDK、mysql搭建基于vue2、java前后端分離的web應用運行環境

一.背景 公司安排了帶徒弟的任務,給培訓寫點材料。前面分開介紹了mysql、jdk、nginx的安裝,都只是零星的介紹,只能算零散的學習。學習了有什么用呢?能解決什么問題?能完成什么工作? 今天我們要用之前的幾篇…

為什么要在業務系統中引入大寬表?

在高度系統化驅動的業務中,查看業務報表已經是一個很常見的需求了。在分工非常明確的大型企業里,往往有專門的數據分析團隊 BI 或者數據開發團隊,他們能夠勝任此類需求(但也未必是輕松的,或者說高效的)。 …

中國電子學會(CEIT)2023年05月真題C語言軟件編程等級考試二級(含解析答案)

中國電子學會(CEIT)考評中心歷屆真題(含解析答案) C語言軟件編程等級考試二級 2023年05月 編程題五道 總分:100分一、數字放大(20分) 給定一個整數序列以及放大倍數x,將序列中每個整數放大x倍后輸出。 時間限制: 1000 內存限制: 65536 輸入 包含三行:第一行為N,…

Stable Diffusion 模型分享:AAM XL (Anime Mix)(動漫截屏風格 XL)

本文收錄于《AI繪畫從入門到精通》專欄,專欄總目錄:點這里。 文章目錄 模型介紹生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下載地址 模型介紹 AAM XL (Anime Mix) 是一個動漫截屏風格的模型,是 AAM - AnyLoRA Anime Mix 模…

【yolov8部署實戰】VS2019環境下使用C++和OpenCV環境部署yolo項目|含詳細注釋源碼

一、前言 之前一陣子一直在做的就是怎么把yolo項目部署成c項目,因為項目需要嵌套進yolo模型跑算法。因為自己也是本科生小白一枚,基本上對這方面沒有涉獵過,自己一個人從網上到處搜尋資料,寫代碼,調試,期間…

黑馬JavaWeb開發跟學(三)Web前端開發Vue-Element

黑馬JavaWeb開發跟學三.Web前端開發Vue-Element 1 Ajax1.1 Ajax介紹1.1.1 Ajax概述1.1.2 Ajax作用1.1.3 同步異步 1.2 原生Ajax1.3 Axios1.3.1 Axios的基本使用1.3.2 Axios快速入門1.3.3 請求方法的別名1.3.4 案例 2 前后臺分離開發2.1 前后臺分離開發介紹2.2 YAPI2.2.1 YAPI介…

CNN文本分類(tensorflow實現)

前言 實現步驟 1.安裝tensorflow2.導入所需要的tensorflow庫和其它相關模塊3.設置隨機種子4.定義模型相關超參數5.加載需要的數據集6.對加載的文本內容進行填充和截斷7.構建自己模型8.訓練構建的模型9.評估完成的模型 CNN(卷積神經網絡)在文本分類任務中…

【GPU驅動開發】-mesa簡介

前言 不必害怕未知,無需恐懼犯錯,做一個Creator! 一、mesa介紹 Mesa 是一個開源的3D圖形庫,它實現了多種圖形API,包括 OpenGL、Vulkan 和 OpenCL。Mesa 的目標是提供一個開源、跨平臺的圖形庫,使得開發者…

ABAP - SALV教程08 列設置熱點及綁定點擊事件

實現思路:將列設置成熱點,熱點列是可點擊的,再給SALV實例對象注冊點擊事件即可,一般作用于點擊單號跳轉到前臺等功能 "設置熱點方法METHODS:set_hotspot CHANGING co_alv TYPE REF TO cl_salv_table...."事件處理方法M…

SMART原則

在軟件研發領域,項目管理和目標設定尤為關鍵。一個成功的軟件項目不僅需要先進的技術支持,還需要一個清晰、明確且可實現的目標。SMART原則,作為一種高效的目標設定和管理方法,為軟件研發提供了有力的指導。SMART是五個英文單詞首…

合宙esp32-c3 進入深度睡眠無法喚醒解決一例

手賤,昨天收到了嘉立創最新的esp32 s3,想測試一下電流功耗,于是順便測試了一下以前的合宙esp32 c3 無串口芯片的版本 打算對比一下c3和s3的功耗相差多少,結果把自己玩死了: void setup() {esp_deep_sleep_start();// esp_light_s…

oppo手機備忘錄記錄怎么轉移到華為手機?

oppo手機備忘錄記錄怎么轉移到華為手機?使用oppo手機已經有三四年了,因為平時習慣,在手機系統的備忘錄中記錄了很多重要的筆記,比如工作會議的要點、讀書筆記、購物清單、朋友的生日提醒等。這些記錄對我來說非常重要,我可以通過…

STM32 HAL庫 串口使用問題記錄

文章目錄 STM32 HAL庫 串口使用問題記錄情況一:串口導致程序假死機情況二:其它程序正常運行,串口不再接收數據 STM32 HAL庫 串口使用問題記錄 情況一:串口導致程序假死機 多數應該出現在未開啟DMA模式使用中斷方式接收數據的情況…

鉀是人體內重要的電解質之一

鉀是人體內重要的電解質之一,是維持細胞生理活動的主要陽離子,在保持機體的正常滲透壓及酸堿平衡,維持內環境的穩定性,參與糖及蛋白質代謝,保證神經肌肉的正常功能,在興奮性等方面具有重要的作用。人體內的…

2000-2021年300+地級市進出口總額數據

2000-2021年300地級市進出口總額數據 1、時間:2000-2021年 2、指標:進出口總額 3、單位:萬美元 4、來源:城市年鑒、各省年鑒、城市公報、2021年為城市統計年鑒中進口額出口額加總之后換算成萬美元,已盡最大可能進行…

20240303

1.在優勢、劣勢、機會與威脅(SWOT)的分析期間,團隊發現另一個項目通過與該團隊合作可能從規模經濟中獲益。兩個項目的成本都可能大幅降低,并可能實現公司的利益,項目經理應該怎么做? A.在風險登記冊中記錄該發現 B.詢問項目發起人的意見 …

1.億級積分數據分庫分表:總體方案設計

項目背景 以一個積分系統為例,積分系統最核心的有積分賬戶表和積分明細表: 積分賬戶表:每個用戶在一個品牌下有一個積分賬戶記錄,記錄了用戶的積分余額,數據量在千萬級積分明細表:用戶每次積分發放、積分扣…

數據結構——Top-k問題

Top-k問題 方法一:堆排序(升序)(時間復雜度O(N*logN))向上調整建堆(時間復雜度:O(N * logN) )向下調整建堆(時間復雜度:O(N) )堆排序代碼 方法二&…

LeetCode---386周賽

題目列表 3046. 分割數組 3047. 求交集區域內的最大正方形面積 3048. 標記所有下標的最早秒數 I 3049. 標記所有下標的最早秒數 II 一、分割數組 這題簡單的思維題,要想將數組分為兩個數組,且分出的兩個數組中數字不會重復,很顯然一個數…

Redis 的哨兵模式配置

1.配置 vim sentinel.conf# mymaster 給主機起的名字 # 192.168.205.128 主機的ip地址 # 6379 端口號 # 2 當幾個哨兵發現主觀宕機,則判定為客觀宕機。 原則上是大于一半。比如三個哨兵,則設置為 2 sentinel monitor mymaster 192.168.205.128 63…