篩選與排序
每天看報表時,你不會想看全部 5000 筆商品,而是「只看價格超過 1000 的」或「按銷量排名」。pandas 的篩選和排序就像 Excel 的篩選功能,但可以用程式自動化,不用每次手動點。
你會學到什麼
- 用
df[條件]篩選資料 - 用
&(且)和|(或)組合多個條件 - 用
sort_values()排序
條件篩選
用 df[條件] 篩選資料,就像在 Excel 設定「只顯示價格 > 1000 的列」:
小提醒:
df["價格"] > 1000會產生一串 True/False,pandas 用這串布林值決定哪些列要留下。這就是所謂的「布林索引」。
多條件篩選
用 &(且)和 |(或)組合條件。重要的是:每個條件都要用小括號包起來,否則 Python 會搞混運算順序。
小提醒:初學者最常忘記加小括號。
df[df["類別"] == "上衣" & df["價格"] < 900]會報錯,一定要寫成df[(條件A) & (條件B)]。
排序
sort_values() 可以按任意欄位排序,ascending=False 代表由大到小(降冪)。
小提醒:排序後的 index(最左邊的數字)不會重新編號。如果想要乾淨的 0, 1, 2... 序號,可以加上
.reset_index(drop=True)。
AI 協作:學了這個,跟 AI 怎麼配合?
pandas 篩選語法比 Excel 篩選器強大,但條件邏輯要你來定。
你的人類優勢:
- 你知道篩選條件的業務意義(「活躍客戶」= 最近 30 天有訂單?還是 90 天?)
- 你能驗證篩選後的筆數是否合理
可以這樣跟 AI 說:
幫我篩選 2024 年 Q4 的訂單,金額 > 1000 且狀態為「已完成」,按金額從大到小排序。
練習題
互動示範
挑戰任務
建立 DataFrame:商品 ['T恤','牛仔褲','外套','襯衫','短褲']、價格 [590,1290,2490,890,690],印出價格 >= 1000 的商品數量
使用同上資料,找出並印出價格最高的商品名稱
建立 DataFrame 加上類別欄 ['上衣','褲子','外套','上衣','褲子'],篩選「褲子」類別後印出價格總和