【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的條件篩選功能!
🤝七、期待與你共同進步
??🌱 親愛的讀者,非常感謝你每一次的停留和閱讀!你的支持是我們前行的最大動力!🙏
??🌐 在這茫茫網海中,有你的關注,我們深感榮幸。你的每一次點贊👍、收藏🌟、評論💬和關注💖,都像是明燈一樣照亮我們前行的道路,給予我們無比的鼓舞和力量。🌟
??📚 我們會繼續努力,為你呈現更多精彩和有深度的內容。同時,我們非常歡迎你在評論區留下你的寶貴意見和建議,讓我們共同進步,共同成長!💬
??💪 無論你在編程的道路上遇到什么困難,都希望你能堅持下去,因為每一次的挫折都是通往成功的必經之路。我們期待與你一起書寫編程的精彩篇章! 🎉
??🌈 最后,再次感謝你的厚愛與支持!愿你在編程的道路上越走越遠,收獲滿滿的成就和喜悅!祝你編程愉快!🎉