Sort Rows
sort_rows · rows · any
2026-09-23
กำลังประมวลผล…
sort_rows · rows · any
2026-09-23
การเรียงลำดับทำให้ตรวจข้อมูลด้วยตาได้เร็วขึ้นมาก เช่น เรียงยอดขายจากมากไปน้อยเพื่อดูค่าผิดปกติ หรือเรียงตามวันที่เพื่อดูช่วงที่ข้อมูลขาด เทคนิคนี้เรียงได้หลายคอลัมน์พร้อมกัน และยังจำหมายเลขแถวต้นฉบับไว้ให้ตรวจย้อนกลับได้
fill_missing แบบ ffill หรือ interpolate_missing — การเรียงใหม่จะเปลี่ยนความหมายของ "แถวก่อนหน้า"by ทีละข้อจากซ้ายไปขวาห้อง 2 มาก่อน ห้อง 10)nulls โดยไม่ขึ้นกับทิศทางการเรียง| Parameter | Type | Default |
|---|---|---|
by | object[] | — |
nulls | first | last | "last" |
import json
def sort_rows(rows, by, nulls='last'):
indexed = list(enumerate(rows))
for rule in reversed(by):
column, direction = rule['column'], rule.get('direction', 'asc')
null_rank = -1 if nulls == 'first' else 1
def key(item, column=column, null_rank=null_rank):
value = item[1].get(column)
if value is None:
return (null_rank, 0, '')
if isinstance(value, (int, float)):
return (0, value, '')
return (0, 0, str(value))
indexed.sort(key=key, reverse=(direction == 'desc'))
if nulls == 'last':
indexed.sort(key=lambda item, column=column: item[1].get(column) is None)
return [row for _index, row in indexed]
rows = [
{'n': 2, 'label': 'a'},
{'n': None, 'label': 'missing'},
{'n': 1, 'label': 'b'},
{'n': 2, 'label': 'c'},
]
result = sort_rows(rows, [{'column': 'n', 'direction': 'desc'}])
print(json.dumps([row['label'] for row in result], ensure_ascii=False))
หลังทำความสะอาดคอลัมน์ amount ให้เรียงจากมากไปน้อยแล้วดูสิบแถวแรก ค่าที่ใหญ่ผิดปกติจะโผล่ขึ้นมาทันที ถ้าพบ ให้เปิด Outlier Review เพื่อดูว่าค่าเหล่านั้นอยู่นอกช่วงปกติจริงไหม อย่าลืมว่าถ้ามีขั้นตอนที่พึ่งลำดับแถวเดิม ให้วาง sort_rows ไว้หลังขั้นตอนเหล่านั้น
ใช้ filter_rows เพื่อลดจำนวนแถวก่อนตรวจด้วยตา ใช้ remove_duplicate_by_column แบบ first ร่วมกับการเรียงเพื่อเลือกแถวที่ต้องการ และใช้ reorder_columns เพื่อจัดคอลัมน์ให้อ่านง่ายควบคู่กัน