一、基礎條件篩選
Pandas是Python中非常常用的數據處理庫,對於數據篩選和清洗也非常方便,條件篩選就是其中一項重要的功能。
當需要從DataFrame中選擇滿足某些條件的數據,可以使用基礎條件篩選。這種篩選方式使用Boolean Indexing進行數據的選取。
import pandas as pd
#創建示例DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 35, 17, 28],
'sex': ['F', 'M', 'M', 'M']})
#使用條件篩選獲取DF中年齡大於25歲的數據
df[df['age'] > 25]
以上代碼通過Boolean indexing,實現了從DataFrame中篩選出年齡大於25歲的數據。篩選條件[df[‘age’] > 25]返回了一列布爾值,對DF進行篩選時,只選取布爾值為True的行。
二、複合條件篩選
在數據處理中,可能需要使用多個條件進行篩選。使用符號”&”、”|”、”~”實現多個條件的組合篩選。
import pandas as pd
#創建示例DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 35, 17, 28],
'sex': ['F', 'M', 'M', 'M']})
#使用複合條件篩選獲取DF中年齡大於25歲且性別為男性的數據
df[(df['age'] > 25) & (df['sex'] == 'M')]
以上代碼使用”&”進行了年齡大於25且性別為男性的複合條件篩選。根據Python運算優先級,使用圓括號括起每個條件的部分提高了代碼的可讀性。
三、使用isin進行多項匹配篩選
在某些情況下,需要在列表或Series中使用多項來篩選DataFrame中的數據,這時可以使用isin方法。
import pandas as pd
#創建示例DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 35, 17, 28],
'sex': ['F', 'M', 'M', 'M']})
#使用isin篩選DF中sex 為 F 或 M的行
df[df['sex'].isin(['F', 'M'])]
以上代碼使用isin進行了多項條件的匹配,提高了代碼的可讀性和精簡性。
四、使用query方法進行條件篩選
在某些情況下,多個篩選條件的集成可能會使代碼變得非常複雜。這時可以使用query方法簡化代碼。
import pandas as pd
#創建示例DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 35, 17, 28],
'sex': ['F', 'M', 'M', 'M']})
#使用query方法篩選DF中age大於25歲或者sex為F的行
df.query("sex=='F' or age>25")
以上代碼中,query方法將子字符串”sex == ‘F’ or age > 25″作為條件篩選,運行結果與使用&、|和()的幾乎相同。
五、使用eval方法進行高性能篩選
當需要在DataFrame中進行高性能篩選時,Pandas提供了一個eval方法。eval方法可以將表達式字符串傳遞給DataFrame.eval()方法,它會使用numexpr庫和覆蓋的算術運算符處理表達式,以獲得更快的計算結果。
import pandas as pd
#創建示例DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie', 'David'],
'age': [25, 35, 17, 28],
'sex': ['F', 'M', 'M', 'M']})
#使用eval方法篩選DF中age大於25歲或者sex為F的行
df.eval("age > 25 or sex=='F'")
以上代碼中,使用eval()方法對包含我們要篩選的表達式字符串進行操作,得到一個符合條件的Series。
結論
通過這篇文章,我們對Pandas條件篩選的基礎知識、複合條件篩選、多項匹配篩選、query方法和eval方法進行了詳細闡述。通過掌握這些篩選技巧,我們可以更加高效地選擇和清洗數據。
原創文章,作者:HJWG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146727.html