pandas根據(jù)指定條件篩選數(shù)據(jù)的實(shí)現(xiàn)示例
一、pandas庫簡介
pandas是Python中一個(gè)非常流行的數(shù)據(jù)處理庫,它提供了大量的數(shù)據(jù)結(jié)構(gòu)(如Series和DataFrame)以及數(shù)據(jù)分析工具,讓數(shù)據(jù)處理變得既簡單又高效。在數(shù)據(jù)分析的過程中,我們經(jīng)常需要根據(jù)某些條件篩選數(shù)據(jù),這時(shí)pandas提供了非常靈活和方便的篩選功能。
二、條件篩選基礎(chǔ)
在pandas中,我們通常使用布爾索引(Boolean Indexing)來進(jìn)行條件篩選。布爾索引是指根據(jù)條件表達(dá)式的結(jié)果(True或False)來選擇數(shù)據(jù)。
示例1:篩選DataFrame中的特定行
假設(shè)我們有一個(gè)DataFrame df
,其中包含學(xué)生的信息:
import pandas as pd # 創(chuàng)建一個(gè)示例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的學(xué)生 older_students = df[df['Age'] > 23] print(older_students)
輸出:
Name Age Grade
0 Alice 25 A
2 Charlie 28 A
示例2:組合多個(gè)條件
我們也可以使用&
(和)和|
(或)來組合多個(gè)條件:
import pandas as pd # 創(chuàng)建一個(gè)示例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且成績?yōu)锳的學(xué)生 specific_students = df[(df['Age'] > 23) & (df['Grade'] == 'A')] print(specific_students)
輸出:
Name Age Grade
0 Alice 25 A
2 Charlie 28 A
三、高級(jí)篩選技巧
除了基本的布爾索引,pandas還提供了很多高級(jí)篩選技巧,如query()
方法、isin()
方法等。
示例3:使用query()
方法篩選數(shù)據(jù)
query()
方法允許我們使用字符串表達(dá)式來篩選數(shù)據(jù),非常適合處理復(fù)雜的篩選條件。
import pandas as pd # 創(chuàng)建一個(gè)示例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或成績?yōu)锳的學(xué)生 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()
方法篩選數(shù)據(jù)
isin()
方法允許我們根據(jù)一個(gè)值列表來篩選數(shù)據(jù)。
import pandas as pd # 創(chuàng)建一個(gè)示例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的學(xué)生 name_filter = df[df['Name'].isin(['Alice', 'Eve'])] print(name_filter)
輸出:
Name Age Grade
0 Alice 25 A
4 Eve 23 B
四、條件篩選與函數(shù)應(yīng)用
除了直接使用條件表達(dá)式,我們還可以結(jié)合pandas提供的函數(shù)來進(jìn)行更復(fù)雜的篩選操作。
示例5:使用apply()和條件函數(shù)篩選數(shù)據(jù)
import pandas as pd # 創(chuàng)建一個(gè)示例DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'Age': [25, 22, 28, 20, 23], 'Grade': ['A', 'B', 'A', 'C', 'B'] } df = pd.DataFrame(data) # 定義一個(gè)條件函數(shù) def is_elderly(age): return age >= 21 # 使用apply()方法應(yīng)用條件函數(shù) 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
在這個(gè)例子中,我們定義了一個(gè)is_elderly
函數(shù)來判斷年齡是否大于等于21,然后使用apply()
方法將這個(gè)函數(shù)應(yīng)用到Age
列上,得到一個(gè)布爾序列,最后用這個(gè)布爾序列來篩選數(shù)據(jù)。
五、條件篩選的最佳實(shí)踐
在實(shí)際應(yīng)用中,遵循一些最佳實(shí)踐可以讓我們的代碼更加清晰、高效。
示例6:保持代碼清晰
盡量使用具有描述性的列名和條件表達(dá)式,這樣其他人在閱讀你的代碼時(shí)可以更容易理解你的意圖。
# 使用描述性的列名和條件表達(dá)式 high_scoring_students = df[(df['Grade'] == 'A') | (df['Grade'] == 'B')] print(high_scoring_students)
示例7:利用向量化操作
pandas的許多函數(shù)都是向量化(vectorized)的,這意味著它們?cè)谡麄€(gè)數(shù)組上操作而不是在單個(gè)元素上循環(huán)。利用這些向量化操作可以提高代碼的效率。
# 利用向量化操作篩選數(shù)據(jù) 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
在這個(gè)例子中,我們使用了isin()
這個(gè)向量化函數(shù)來創(chuàng)建一個(gè)布爾數(shù)組,然后用這個(gè)數(shù)組來篩選數(shù)據(jù)。
六、 總結(jié)
條件篩選是pandas中非常重要的一個(gè)功能,它允許我們根據(jù)特定條件來快速、高效地篩選數(shù)據(jù)。通過學(xué)習(xí)和實(shí)踐這些條件篩選的技巧和最佳實(shí)踐,我們可以更好地利用pandas來處理和分析數(shù)據(jù)。希望這篇文章能夠幫助你更深入地理解和應(yīng)用pandas的條件篩選功能!
到此這篇關(guān)于pandas根據(jù)指定條件篩選數(shù)據(jù)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)pandas 指定條件篩選內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)調(diào)度算法代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)度場(chǎng)算法代碼詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-12-12Python對(duì)list列表進(jìn)行去重的幾種方法
python?列表就是我們js中的數(shù)組了,我們下文整理幾個(gè)常用的python?列表去重實(shí)現(xiàn)方法,非常的簡單好用,通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-10-10python中利用Future對(duì)象異步返回結(jié)果示例代碼
future是一種對(duì)象,表示異步執(zhí)行的操作。下面這篇文章主要給大家介紹了關(guān)于python中利用Future對(duì)象異步返回結(jié)果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09Python自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù)
這篇文章主要介紹了Python如何自動(dòng)錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀2023-04-04python 三種方法實(shí)現(xiàn)對(duì)Excel表格的讀寫
這篇文章主要介紹了python 三種方法實(shí)現(xiàn)對(duì)Excel表格的讀寫,幫助大家更好的利用python處理表格,感興趣的朋友可以了解下2020-11-11淺析Python 3 字符串中的 STR 和 Bytes 有什么區(qū)別
Python2的str相當(dāng)于Python3的Bytes,而Unicode相當(dāng)于Python3的Bytes。這篇文章主要介紹了Python 3 字符串中的 STR 和 Bytes 究竟有什么區(qū)別?需要的朋友可以參考下2018-10-10