Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีเลือกข้อมูลย่อยด้วย Lexicographical Slicing ใน Python Pandas (ฉบับสมบูรณ์)

บทนำ

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