今天讓我們來學習python 如何操作過濾的方法。可以利用query()的方式,類似 SAS — if 或是 R — filter,可以幫助我們篩選出需要的資料範圍。
- 使用到的工具:
- pandas
- dataframe
- query()
- sort_value()
- reset_index()
- print()
- 程式碼範例:
#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- 步驟拆解:
- 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() — 輸出結果
- 資料來源:
- Python
- Gemini