บทนำ
Pandas มีความสามารถเลือกข้อมูลย่อยสองวิธี: ด้วยตำแหน่งดัชนี (Position) และด้วยฉลากดัชนี (Labels) บทความนี้สาธิต "Select a Subset Of Data Using lexicographical slicing"
ใช้ข้อมูล Movies Dataset จาก Kaggle
ขั้นตอนการทำงาน
1. นำเข้าข้อมูล
import pandas as pd
import numpy as np
movies = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv",
index_col="title",
usecols=["title", "budget", "vote_average", "vote_count"])
movies.sample(n=5)
2. เรียงลำดับดัชนี (สำคัญมาก)
ดัชนีที่เป็นสตริงควรเรียงลำดับเพื่อประสิทธิภาพ ใช้ sort_index()
movies.index.is_monotonic # False
3. ลอง Lexicographical Slicing ก่อนเรียง (จะล้มเหลว)
movies.loc["Aa":"Bb"]
Error: ValueError: index must be monotonic increasing or decreasing
4. เรียงดัชนีแล้วลองใหม่
movies.sort_index(inplace=True) movies.loc["Aa":"Bb"]
สำเร็จ - ได้ 292 แถว (หนังขึ้นต้น A ถึง B)
5. การตัดแบบ Descending Order
movies.sort_index(ascending=False, inplace=True) movies.loc["Bb":"Aa"] # ต้องสลับ start/stop
ได้ 228 แถว - การ slicing แบบย้อนกลับต้องสลับลำดับพารามิเตอร์
สรุป
- Lexicographical slicing ต้องการดัชนีที่เรียงลำดับแล้ว (monotonic)
- ใช้
sort_index()ก่อนการ slicing - Ascending order: start < stop | Descending order: start > stop
- รองรับ Unicode characters และ special characters