การผสาน Pandas และ SQL
pd.read_sql(), df.to_sql(), กลไก SQLAlchemy และการสืบค้นผลลัพธ์ฐานข้อมูลเข้าสู่ DataFrames โดยตรง
การผสาน Pandas และ SQL เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
Pandas พบกับ SQL
คุณไม่จำเป็นต้องเลือกระหว่าง SQL กับ pandas เพราะทั้งสองอย่างทำงานร่วมกันได้ คุณสามารถสืบค้นฐานข้อมูลเป็น DataFrame แปลงข้อมูลด้วย pandas และเขียนผลลัพธ์กลับไปได้
ตัวเชื่อมคือ SQLAlchemy ร่วมกับฟังก์ชันของ pandas อย่าง read_sql และ to_sql
ทำไมต้องใช้ SQLAlchemy
pandas สื่อสารกับฐานข้อมูลผ่านการเชื่อมต่อหรือกลไกของ SQLAlchemy กลไกนี้ซ่อนรายละเอียดของชนิดฐานข้อมูลไว้ ทำให้โค้ดเดียวกันทำงานกับ SQLite, PostgreSQL, MySQL และฐานข้อมูลอื่น ๆ ได้ เพียงเปลี่ยน URL
การสร้างกลไก
create_engine รับ URL การเชื่อมต่อ ส่วนรูปแบบของ URL จะระบุไดรเวอร์ฐานข้อมูล
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
# Postgres: create_engine("postgresql://user:pass@host:5432/db")การอ่านตารางด้วย pd.read_sql
pd.read_sql เรียกใช้การสืบค้นหรืออ่านตาราง แล้วส่งคืน DataFrame ให้ส่งสตริง SQL และกลไกเข้าไป
import pandas as pd
df = pd.read_sql("SELECT * FROM experiments", engine)
print(df.head())การอ่านด้วยการสืบค้นที่กรองแล้ว
ให้ฐานข้อมูลจัดการการกรองและการรวมข้อมูล จากนั้นจึงส่งผลลัพธ์ที่มีขนาดเล็กกว่าให้ pandas วิธีนี้มีประสิทธิภาพมากกว่าการโหลดข้อมูลทั้งหมด
df = pd.read_sql(
"SELECT name, accuracy FROM experiments WHERE accuracy > 0.85 ORDER BY accuracy DESC",
engine,
)
print(df)การสืบค้นแบบใช้พารามิเตอร์
ส่งพารามิเตอร์การสืบค้นอย่างปลอดภัยด้วยอาร์กิวเมนต์ params แทนการจัดรูปแบบสตริง
from sqlalchemy import text
df = pd.read_sql(
text("SELECT * FROM experiments WHERE name = :n"),
engine,
params={"n": "xgb"},
)การเขียน DataFrame ด้วย df.to_sql
df.to_sql(table, engine) จะเขียน DataFrame ลงในตารางฐานข้อมูล และสร้างตารางจากชนิดข้อมูลของ DataFrame หากจำเป็น
df.to_sql("results", engine, index=False)พารามิเตอร์ดัชนี
โดยค่าเริ่มต้น to_sql จะเขียนดัชนีของ DataFrame เป็นคอลัมน์หนึ่ง โดยทั่วไปคุณไม่ต้องการเช่นนั้น ให้ส่ง index=False เพื่อข้ามดัชนี
df.to_sql("results", engine, index=False) # no extra index columnพารามิเตอร์ if_exists
if_exists ควบคุมการทำงานเมื่อมีตารางอยู่แล้ว:
"fail"— แสดงข้อผิดพลาด (ค่าเริ่มต้น)"replace"— ลบแล้วสร้างตารางขึ้นใหม่"append"— เพิ่มแถวลงในตารางเดิม
df.to_sql("results", engine, if_exists="append", index=False)
# Use "replace" to overwrite, "fail" to be safeกระบวนการทำงานแบบไปกลับ
กระบวนการทั่วไปคือ อ่านข้อมูลดิบจาก SQL แปลงข้อมูลใน pandas แล้วเขียนผลลัพธ์ที่ทำความสะอาดแล้วกลับไปยังตารางใหม่
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("sqlite:///ml.db")
raw = pd.read_sql("SELECT * FROM experiments", engine)
raw["accuracy_pct"] = (raw["accuracy"] * 100).round(1)
raw.to_sql("experiments_clean", engine, if_exists="replace", index=False)การอ่านเป็นกลุ่มสำหรับตารางขนาดใหญ่
สำหรับตารางที่มีขนาดใหญ่เกินกว่าจะเก็บไว้ในหน่วยความจำ ให้ส่ง chunksize ไปยัง read_sql เพื่อวนซ้ำอ่านผลลัพธ์เป็นชุด ๆ
for chunk in pd.read_sql("SELECT * FROM big_table", engine, chunksize=10000):
process(chunk) # handle 10k rows at a timeตรวจสอบอย่างรวดเร็ว: การเพิ่มแถว
คุณต้องการให้ to_sql เพิ่มแถวใหม่ลงในตารางเดิมโดยไม่ลบตารางนั้น
ทบทวน: pandas และ SQL
ขณะนี้คุณสามารถย้ายข้อมูลระหว่าง pandas กับฐานข้อมูลได้แล้ว:
create_engine(url)สำหรับการเชื่อมต่อที่ไม่ขึ้นกับชนิดฐานข้อมูลpd.read_sql(query, engine)เพื่อโหลดผลลัพธ์การสืบค้นลงใน DataFramedf.to_sql(table, engine, index=False, if_exists=...)เพื่อเขียนข้อมูลกลับ- การสืบค้นแบบใช้พารามิเตอร์และ
chunksizeเพื่อความปลอดภัยและการรองรับข้อมูลขนาดใหญ่
ถัดไป: จัดเก็บและสืบค้นผลการทดลองของการเรียนรู้ของเครื่อง
คำถามที่พบบ่อย
บทเรียน “การผสาน Pandas และ SQL” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การผสาน Pandas และ SQL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การผสาน Pandas และ SQL”
pd.read_sql(), df.to_sql(), กลไก SQLAlchemy และการสืบค้นผลลัพธ์ฐานข้อมูลเข้าสู่ DataFrames โดยตรง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การผสาน Pandas และ SQL” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- SQLite ด้วยโมดูล sqlite3 ของ Python
- การผสาน Pandas และ SQL
- การจัดเก็บและสืบค้นผลลัพธ์แมชชีนเลิร์นนิง
- บทนำสู่ฐานข้อมูลเวกเตอร์