การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ
บันทึกเป็น CSV/JSON/Parquet เพิ่มข้อมูลอย่างปลอดภัย ลบข้อมูลซ้ำ และรวบรวมแบบเพิ่มทีละส่วน
การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
จากการตอบกลับดิบสู่ข้อมูลที่จัดเก็บแล้ว
หลังจากรวบรวมข้อมูลแล้ว คุณต้องจัดเก็บข้อมูลไว้เพื่อให้โหลดกลับมา แบ่งปัน และวิเคราะห์ได้ รูปแบบที่เหมาะสมและแนวปฏิบัติบางอย่างสร้างความแตกต่างได้มากทั้งในด้านความเร็วและการใช้พื้นที่ดิสก์
บทเรียนนี้ครอบคลุม CSV, Parquet การเพิ่มชุดข้อมูล และการกำจัดข้อมูลซ้ำ
JSON สู่ DataFrame
การตอบกลับจาก API มักเป็นรายการของพจนานุกรม pd.DataFrameจะแปลงข้อมูลเหล่านั้นเป็นตารางที่พร้อมจัดเก็บได้โดยตรง
import pandas as pd
records = [
{"id": 1, "name": "A", "score": 9.5},
{"id": 2, "name": "B", "score": 8.0},
]
df = pd.DataFrame(records)
print(df)บันทึกเป็น CSV ด้วย df.to_csv
CSVเป็นรูปแบบที่ใช้ได้ทั่วไปและมนุษย์อ่านได้ บันทึกด้วย to_csv และส่งค่า index=False เพื่อไม่ให้เขียนดัชนีแถวเป็นคอลัมน์เกินมา
df.to_csv("data.csv", index=False)
# Reload
df2 = pd.read_csv("data.csv")ข้อจำกัดของ CSV
CSV สะดวก แต่มีข้อเสียสำหรับงานด้านปัญญาประดิษฐ์:
- ไม่มีชนิดข้อมูล — ทุกอย่างจัดเก็บเป็นข้อความ จึงต้องเดาชนิดข้อมูลใหม่เมื่อโหลด
- ไฟล์มีขนาดใหญ่ และไม่มีการบีบอัดมาให้โดยค่าเริ่มต้น
- อ่านได้ช้าสำหรับชุดข้อมูลขนาดใหญ่
สำหรับข้อมูลขนาดใหญ่หรือข้อมูลที่โหลดซ้ำบ่อย Parquet เหมาะกว่า
บันทึกเป็น Parquet ด้วย df.to_parquet
Parquetเป็นรูปแบบไบนารีแบบคอลัมน์ โดยคงชนิดข้อมูลไว้ บีบอัดได้ดี และโหลดได้เร็วกว่ า CSV มาก
จำเป็นต้องติดตั้งกลไก เช่น pyarrow
df.to_parquet("data.parquet", index=False)
df2 = pd.read_parquet("data.parquet")
print(df2.dtypes) # types preserved, no re-guessingCSV เทียบกับ Parquet — ควรใช้แบบใดเมื่อใด
หลักทั่วไปมีดังนี้:
- CSV: ข้อมูลขนาดเล็ก การแบ่งปันกับเครื่องมือที่ไม่ใช่ไพธอน และการตรวจสอบอย่างรวดเร็ว
- Parquet: ข้อมูลขนาดใหญ่ การโหลดซ้ำหลายครั้ง การคงชนิดข้อมูล และกระบวนการวิเคราะห์ข้อมูล
สำหรับงานรวบรวมข้อมูลที่ส่งต่อให้โมเดล ควรเลือกใช้ Parquet
เพิ่มชุดข้อมูลใหม่ด้วย pd.concat
การรวบรวมข้อมูลมักเกิดขึ้นเป็นชุด ๆ รวม DataFrame เดิมกับชุดข้อมูลใหม่ด้วย pd.concat
ignore_index=Trueจะกำหนดหมายเลขดัชนีใหม่ เพื่อให้ดัชนียังคงเป็นระเบียบ
new_batch = pd.DataFrame(new_records)
df = pd.concat([df, new_batch], ignore_index=True)
print(len(df))เพิ่มข้อมูลโดยตรงลงในไฟล์ CSV
หากต้องการเพิ่มข้อมูลลงใน CSV ที่มีอยู่โดยไม่โหลดไฟล์ ให้เปิดไฟล์ในโหมดเพิ่มข้อมูล และข้ามส่วนหัวเมื่อเขียนข้อมูลในครั้งถัดไป
import os
header = not os.path.exists("data.csv")
new_batch.to_csv("data.csv", mode="a", header=header, index=False)เหตุใดต้องกำจัดข้อมูลซ้ำ
การรวบรวมข้อมูลซ้ำ การแบ่งหน้าที่ทับซ้อนกัน หรือการลองใหม่ อาจสร้างแถวซ้ำได้ ข้อมูลซ้ำทำให้จำนวนรายการสูงเกินจริง และอาจรั่วไหลข้ามชุดแบ่งข้อมูลฝึก/ทดสอบ ซึ่งส่งผลเสียต่อการประเมินโมเดล
หลังกระจายชุดข้อมูลย่อยรวมกันแล้ว ให้กำจัดข้อมูลซ้ำเสมอ
drop_duplicates(subset=[id])
ใช้คีย์ไม่ซ้ำที่คงที่ (มักเป็น id) ร่วมกับ drop_duplicates(subset=...) วิธีนี้จะลบรายการที่ซ้ำกัน แม้ว่าช่องข้อมูลอื่นจะเปลี่ยนไปเล็กน้อย
keep="last" จะเก็บเวอร์ชันล่าสุดของแต่ละรหัส
df = df.drop_duplicates(subset=["id"], keep="last").reset_index(drop=True)
print(len(df), "unique rows")ตัวช่วยบันทึกและผสานข้อมูล
นำทุกส่วนมารวมกัน: โหลดไฟล์พาร์เกต์ที่มีอยู่หากพบไฟล์นั้น concat ชุดข้อมูลใหม่ กำจัดข้อมูลซ้ำตามรหัส แล้วบันทึกกลับไป วิธีนี้เรียกใช้ซ้ำได้อย่างปลอดภัย
import os
import pandas as pd
def save_merge(new_df, path="data.parquet", key="id"):
if os.path.exists(path):
old = pd.read_parquet(path)
new_df = pd.concat([old, new_df], ignore_index=True)
new_df = new_df.drop_duplicates(subset=[key], keep="last")
new_df.to_parquet(path, index=False)
return new_dfตรวจสอบด่วน: การเลือกรูปแบบข้อมูล
คุณต้องโหลดชุดข้อมูลขนาดใหญ่ซ้ำ ๆ เพื่อฝึกโมเดล และต้องรักษาชนิดข้อมูลไว้พร้อมการอ่านที่รวดเร็ว
ทบทวน: การจัดเก็บข้อมูลอย่างมีประสิทธิภาพ
ตอนนี้คุณสามารถเก็บข้อมูลที่รวบรวมมาได้อย่างเหมาะสมแล้ว:
pd.DataFrameสำหรับเปลี่ยนระเบียน JSON ให้เป็นตารางto_csv(index=False)สำหรับข้อความที่พกพาได้ และto_parquetสำหรับการจัดเก็บข้อมูลแบบมีชนิดข้อมูลที่รวดเร็วpd.concat(ignore_index=True)หรือโหมด append ของ CSV สำหรับชุดข้อมูลย่อยdrop_duplicates(subset=["id"])เพื่อให้แถวไม่ซ้ำกัน
ถัดไป: การทำงานกับส่วนติดต่อข้อมูลสาธารณะจริง
คำถามที่พบบ่อย
บทเรียน “การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ”
บันทึกเป็น CSV/JSON/Parquet เพิ่มข้อมูลอย่างปลอดภัย ลบข้อมูลซ้ำ และรวบรวมแบบเพิ่มทีละส่วน คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน REST API สำหรับรวบรวมข้อมูล
- การแบ่งหน้าและรวบรวมชุดข้อมูลขนาดใหญ่
- การจัดเก็บข้อมูลที่รวบรวมอย่างมีประสิทธิภาพ
- การใช้งาน API ข้อมูลสาธารณะ