Selecting & Filtering
Selecting & Filtering
Section titled “Selecting & Filtering”การเลือกและกรองข้อมูลคือทักษะที่จะใช้บ่อยที่สุดในการวิเคราะห์ข้อมูล pandas มีหลายวิธี แต่ละวิธีเหมาะกับสถานการณ์ต่างกัน
เลือก Column
Section titled “เลือก Column”import pandas as pd
df = pd.DataFrame({ "product": ["เสื้อ", "กางเกง", "รองเท้า"], "price": [350, 590, 1200], "qty": [10, 5, 3], "category": ["เสื้อผ้า", "เสื้อผ้า", "รองเท้า"]})
# เลือก 1 column → ได้ Seriesprices = df["price"]
# เลือกหลาย columns → ได้ DataFramesubset = df[["product", "price"]]Boolean Masks — กรองข้อมูล
Section titled “Boolean Masks — กรองข้อมูล”# สร้าง mask (True/False สำหรับแต่ละแถว)mask = df["price"] > 400print(mask)# 0 False# 1 True# 2 True
# ใช้ mask กรองexpensive = df[mask]# หรือเขียนรวมบรรทัดเดียวexpensive = df[df["price"] > 400]
# หลายเงื่อนไข — ใช้ & (and), | (or), ~ (not)filtered = df[(df["price"] > 300) & (df["category"] == "เสื้อผ้า")].loc — เลือกด้วย label
Section titled “.loc — เลือกด้วย label”# .loc[row_label, col_label]df.loc[0, "product"] # "เสื้อ"df.loc[0:1, "product"] # แถว 0 ถึง 1 (inclusive!)df.loc[mask, ["product", "price"]] # ใช้ร่วมกับ mask.iloc — เลือกด้วยตำแหน่ง (integer)
Section titled “.iloc — เลือกด้วยตำแหน่ง (integer)”# .iloc[row_position, col_position]df.iloc[0, 1] # 350 (แถวที่ 0, คอลัมน์ที่ 1)df.iloc[0:2, 0:2] # 2 แถวแรก, 2 คอลัมน์แรก (exclusive!)df.iloc[-1] # แถวสุดท้ายString Filtering
Section titled “String Filtering”# กรองด้วยข้อความdf[df["product"].str.contains("เสื้อ")]df[df["category"].isin(["เสื้อผ้า", "รองเท้า"])]- เลือก column: คลิกที่หัวคอลัมน์
- กรอง: Data > Create a filter แล้วเลือกเงื่อนไข
- สูตร:
=FILTER(A:C, B:B > 400) .isin()==FILTER(A:C, MATCH(D:D, {"เสื้อผ้า","รองเท้า"}, 0))
-- เลือก columnSELECT product, price FROM products;-- กรองด้วย WHERESELECT * FROM products WHERE price > 400;-- หลายเงื่อนไขSELECT * FROM productsWHERE price > 300 AND category = 'เสื้อผ้า';-- .isin()SELECT * FROM products WHERE category IN ('เสื้อผ้า', 'รองเท้า');// C ต้อง loop เองfor (int i = 0; i < count; i++) { if (products[i].price > 400) { printf("%s\n", products[i].name); }}