Pandas와 SQL 통합
pd.read_sql(), df.to_sql(), SQLAlchemy 엔진을 사용해 데이터베이스 결과를 DataFrames로 직접 가져옵니다.
Pandas와 SQL 통합은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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 엔진을 통해 데이터베이스와 통신합니다. 엔진이 데이터베이스 종류를 추상화하므로 URL만 바꾸면 같은 코드가 SQLite, PostgreSQL, MySQL 등에서 작동합니다.
엔진 생성하기
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"},
)df.to_sql로 DataFrame 저장하기
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는 표가 이미 있을 때의 동작을 제어합니다.
"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) - 질의 결과를 DataFrame으로 불러오는
pd.read_sql(query, engine) - 결과를 다시 저장하는
df.to_sql(table, engine, index=False, if_exists=...) - 안전성과 확장성을 위한 매개변수화된 질의와
chunksize
다음 단계에서는 머신러닝 실험 결과를 저장하고 조회합니다.
자주 묻는 질문
“Pandas와 SQL 통합” 강의는 무료인가요?
네 — “Pandas와 SQL 통합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“Pandas와 SQL 통합”에서 뭘 배우나요?
pd.read_sql(), df.to_sql(), SQLAlchemy 엔진을 사용해 데이터베이스 결과를 DataFrames로 직접 가져옵니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“Pandas와 SQL 통합” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Python의 sqlite3 모듈과 SQLite
- Pandas와 SQL 통합
- 머신러닝 결과 저장 및 조회
- 벡터 데이터베이스 입문