Pandas SQL 데이터베이스 읽어오기

Pandas SQL 데이터베이스 읽어오기

Pandas
Pandas SQL 데이터베이스 읽어오기
Author

gabriel yang

Published

August 27, 2024

SQL 데이터베이스에 저장된 데이터를 Python에서 분석하려면, pandas 라이브러리를 사용하여 데이터를 불러오는 방법이 유용합니다.

이 글에서는 SQL 데이터베이스에서 데이터를 pandas 데이터프레임으로 읽어오는 방법을 단계별로 설명하겠습니다.

1. SQL 데이터베이스에서 데이터를 읽어와야 하는 이유

SQL 데이터베이스는 데이터를 저장하고 관리하기에 적합한 환경을 제공하지만, Python의 pandas는 데이터를 조작하고 분석하는 데 강력한 도구입니다.

SQL 데이터를 pandas로 가져오면 데이터 분석, 시각화, 머신러닝 등의 작업을 손쉽게 수행할 수 있습니다.

2. 필요 준비 사항

SQL 데이터를 pandas로 불러오기 위해서는 다음과 같은 준비가 필요합니다:

  • SQL 데이터베이스: MySQL, PostgreSQL, SQLite, SQL Server 등 다양한 데이터베이스를 사용할 수 있습니다.
  • Python 환경: pandasSQLAlchemy(또는 sqlite3 등 데이터베이스에 따라 추가 패키지)가 설치되어 있어야 합니다.

3. SQL 데이터베이스에 연결하기

Python에서 SQL 데이터베이스에 연결하기 위해 SQLAlchemy를 사용할 수 있습니다. 이 라이브러리는 다양한 데이터베이스와의 연결을 지원하며, 데이터베이스 URI를 통해 쉽게 연결할 수 있습니다.

3.1. SQLite 예시

SQLite는 파일 기반의 가벼운 데이터베이스로, 간단한 예제에 적합합니다.

from sqlalchemy import create_engine

# SQLite 데이터베이스에 연결
engine = create_engine('sqlite:///your_database.db')

3.2. MySQL 예시

MySQL에 연결하려면, pymysql 또는 mysqlclient와 같은 추가 패키지가 필요합니다.

from sqlalchemy import create_engine

# MySQL 데이터베이스에 연결
engine = create_engine('mysql+pymysql://username:password@localhost/your_database')

3.3. PostgreSQL 예시

PostgreSQL에 연결하려면, psycopg2 패키지가 필요합니다.

from sqlalchemy import create_engine

# PostgreSQL 데이터베이스에 연결
engine = create_engine('postgresql://username:password@localhost/your_database')

4. SQL 데이터 쿼리하기

SQL 데이터베이스에 연결한 후에는 SQL 쿼리를 사용하여 데이터를 가져올 수 있습니다. pandasread_sql 함수를 사용하면, SQL 쿼리 결과를 데이터프레임으로 불러올 수 있습니다.

4.1. SQL 쿼리를 사용한 데이터 가져오기

import pandas as pd

# SQL 쿼리 작성
query = "SELECT * FROM your_table_name"

# SQL 쿼리 실행 및 데이터프레임으로 저장
df = pd.read_sql(query, con=engine)

# 데이터프레임 확인
df.head()
  • read_sql: SQL 쿼리를 실행하여 결과를 데이터프레임으로 반환합니다.
  • query: 실행할 SQL 쿼리입니다.
  • con: 연결된 SQLAlchemy 엔진 객체를 사용합니다.

4.2. SQL 쿼리에서 필터링 및 조인 사용

SQL 쿼리를 사용하여 데이터를 필터링하거나 여러 테이블을 조인한 후, 그 결과를 pandas로 가져올 수도 있습니다.

import pandas as pd

# 필터링된 SQL 쿼리 작성
query = """
SELECT *
FROM your_table_name
WHERE column_name > 100
"""

# SQL 쿼리 실행 및 데이터프레임으로 저장
df = pd.read_sql(query, con=engine)

# 데이터프레임 확인
df.head()
  • WHERE 절을 사용하여 데이터를 필터링합니다.
  • 복잡한 쿼리도 pandas로 쉽게 가져올 수 있습니다.

5. SQLAlchemy 없이 sqlite3를 이용한 간단한 예시

SQLAlchemy를 사용하지 않고, Python의 기본 라이브러리인 sqlite3를 사용하여 SQLite 데이터베이스에서 데이터를 가져오는 방법도 있습니다.

import sqlite3
import pandas as pd

# SQLite 데이터베이스에 연결
conn = sqlite3.connect('your_database.db')

# SQL 쿼리 실행 및 데이터프레임으로 저장
df = pd.read_sql_query("SELECT * FROM your_table_name", conn)

# 데이터프레임 확인
df.head()

# 연결 종료
conn.close()
  • sqlite3.connect: SQLite 데이터베이스에 연결합니다.
  • read_sql_query: SQL 쿼리를 실행하여 결과를 데이터프레임으로 반환합니다.

6. 데이터프레임으로 가져온 데이터 활용

SQL 데이터베이스에서 가져온 데이터를 pandas 데이터프레임으로 변환한 후, 다양한 분석과 처리를 수행할 수 있습니다. 예를 들어, 데이터를 그룹화하거나, 통계 정보를 계산하거나, 시각화할 수 있습니다.

# 데이터 그룹화 및 요약 통계 계산
grouped_df = df.groupby('column_name').mean()

# 결과 출력
grouped_df

7. 결론

SQL 데이터베이스에서 pandas로 데이터를 읽어오면, 데이터를 보다 효율적으로 분석하고 처리할 수 있습니다.

또한 SQLAlchemy를 사용하여 다양한 데이터베이스에 쉽게 연결할 수 있으며, SQL 쿼리를 통해 필요한 데이터를 정확히 가져올 수 있습니다.