Python - 基礎練習篇 (pandas-query)

2026-05-31

今天讓我們來學習python 如何操作過濾的方法。可以利用query()的方式,類似 SAS — if 或是 R — filter,可以幫助我們篩選出需要的資料範圍。

  1. 使用到的工具:
  • pandas
  • dataframe
  • print
  • query()
  • sort_value()
  • reset_index()
  • print()
  1. 程式碼範例:
#import pandas as pd — 載入 pandas,取別名 pd
import pandas as pd
 
#建立 DataFrame(表格資料)
students = pd.DataFrame({
    "name" : ["Alice", "Bob", "Carol", "Dave", "Eve"],
    "score": [88, 72, 95, 61, 83],
    "grade": ["A", "B", "A", "C", "B"],
})
 
print(students)
 
 
#     name  score grade
# 0  Alice     88     A
# 1    Bob     72     B
# 2  Carol     95     A
# 3   Dave     61     C
# 4    Eve     83     B
 
# query("score >= 70") — 類似 if,篩掉 Dave(61)
# #.sort_values("score", ascending=False) — 依分數由高到低排
# .reset_index(drop=True) — 重新編號從 0 開始,drop=True 不保留舊編號
result = (
    students
    .query("score >= 70")
    .sort_values("score", ascending=False)
    .reset_index(drop=True)
)
 
#輸出結果
print(result)
 
 
#     name  score grade
# 0  Carol     95     A
# 1  Alice     88     A
# 2    Eve     83     B
# 3    Bob     72     B
  1. 步驟拆解:
  • import pandas — 告訴 Python:「我要引進 Pandas 這個工具箱,等一下我要用它裡面的功能(例如建立表格、篩選資料)。」
  • as.pd — Pandas 取一個「pd 縮寫(別名)。」
  • Dataframe程式建立了一個名為 students 的 DataFrame(表格),裡面有 5 筆資料
  • query("score >= 70") — 條件篩選,這一關負責把不符合條件的資料刷掉。它會檢查 score 欄位,只有大於或等於 70 分的資料才能留下來。
  • .sort_values("score", ascending=False) —排序,這一關負責幫資料重新排座位。 (1) "score":指定要用「分數」來排序。 (2) ascending=False:設定為降冪(由大到小)。如果是 True 就會是由小到大。
  • .reset_index(drop=True) —重置編號,因為前面經過篩選和排序,左邊的索引編號已經亂掉了。這一關的目的就是把編號「洗牌重來」,讓它重新從 0, 1, 2, 3 乖乖排好。
  • print() — 輸出結果
  1. 資料來源:
  • Python
  • Gemini