차밍이

[Python] SQL 데이터 Pandas DataFrame으로 불러오기 & 저장하기 본문

파이썬/기본 문법 정리

[Python] SQL 데이터 Pandas DataFrame으로 불러오기 & 저장하기

2023. 1. 31. 01:00
반응형

목차

     

    파이썬으로 데이터 분석같은 작업을 수행하다 보면
    판다스 데이터 프레임을 바로 DB로 저장하거나
    DB의 데이터를 DataFrame으로 바로 불러오고 싶은 경우가 많이 있습니다.

    그래서 오늘은 DB와 DF간의 데이터를 저장 혹은 불러오는 방법에 대해 정리하였습니다.

     

    pandas DataFrame을 DB 파일 형식으로 저장하기

    소스코드

    저장하기 소스코드는 아래와 같습니다.
    설명은 코드 아래 내용들을 확인하시면 됩니다~

    import sqlite3
    import pandas as pd
    
    # 1. 데이터 저장하기
    con = sqlite3.connect('example.db')
    cur = con.cursor()
    
    df.to_sql('region_table', con)
    con.close()
    
    # 2. 데이터 불러오기
    con = sqlite3.connect("example.db")
    
    df = pd.read_sql("SELECT * FROM region_table", con, index_col='index')
    con.close()
    
    df

     

    저장용 데이터 생성

    DB에 저장할 DataFrame 데이터를 임시로 만들겠습니다.
    아래 코드를 사용해 주시면 돼요~

    import pandas as pd
    import sqlite3
    
    data = [['A지역', 'B지역', 'C지역', 'D지역', 'E지역', 'F지역', 'G지역', 'H지역', 'I지역'],
        [638, 11, 35, 18, 1, 57, 81, 365, 36],
        [774, 16, 38, 19, 2, 68, 96, 411, 34],
        [807, 16, 58, 26, 2, 62, 99, 415, 20],
        [817, 20, 60, 20, 1, 70, 104, 429, 27],
        [768, 18, 53, 22, 6, 67, 108, 404, 46],
        [898, 24, 63, 27, 2, 64, 119, 431, 46],
        [926, 29, 64, 22, 5, 63, 129, 438, 34],
        [928, 17, 53, 29, 7, 59, 127, 458, 49],
        [891, 19, 53, 24, 6, 61, 138, 458, 69],
        [1029, 20, 58, 37, 11, 69, 149, 492, 62]]
    df = pd.DataFrame(data[1:], columns=data[0])

    다른 방법으로 DataFrame을 만들려면 아래 글도 참고해 보세요~

     

    [Python] 랜덤한 데이터로 DataFrame 만들기

    목차 블로그 글을 작성하거나, 이런저런 예시나 테스트를 할 때 가끔 랜덤한 데이터를 생성할 필요한 경우가 생깁니다. 한 번 알아놓으면, 매번 귀찮게 찾아보지 않아도 되니 천천히 따라 해보

    chancoding.tistory.com

     

    SQL DB 연결하기

    example.db라는 DB 파일과 연결한 Connection 객체를 생성합니다.
    현재 파이썬과 SQL를 연결한 것으로 생각하면 됩니다.

    con = sqlite3.connect('example.db')
    cur = con.cursor()

    SQLite3에 데이터를 저장하는 SQL에 대해서는 아래 글을 참고해 주세요~

     

    [Python] SQlite3 DB에 데이터 저장 및 조회

    목차 파이썬으로 작업하다보면 SQL 데이터 작업을 해야할 때가 생깁니다. SQLite 데이터베이스를 파이썬에서 연결하는 방법에 대해서 알아보겠습니다. 전체적인 Flow 파이썬에서 DB 파일에 연결하

    chancoding.tistory.com

     

    SQL DB에 저장하기 : to_sql

    DataFrame객체의 to_sql method를 사용해서 DB에 저장이 가능합니다.

    해당 메소드는 to_sql(테이블 명, Connection)이렇게 사용합니다.

    첫 번째 인자로 DB에 저장할 테이블 명을 입력합니다.
    두 번째 인자에는 DB와 연결한 Connection 객체를 넣으면 됩니다.

    df.to_sql('region_table', con)
    con.close()

    이렇게 하면 데이터프레임이 SQL에 테이블 형태로 데이터가 저장됩니다.
    SQLite에 직접 들어가서 확인하시면 쉽게 확인할 수 있습니다.

    DataFrame과 SQL DB 데이터 비교

    왼쪽 사진은 DataFrame의 테이블이고 오른쪽은 SQL GUI에서 확인한 테이블의 데이터입니다.
    각 Column의 데이터가 잘 들어갔고
    DataFrame의 index 또한 "index"라는 Column으로 저장된 것을 볼 수 있습니다.

     

    SQL DB에서 판다스 DataFrame으로 데이터 불러오기

    SQL에서 불러오기 : read_sql

    위에서 저장한 example.dbregion_table 테이블의 데이터를 데이터프레임으로 불러오겠습니다.

    저장할 때와 마찬가지로 DB와 연결을 진행합니다.
    그리고 Pandas의 read_sql 메소드를 통해 불러오도록 합니다.
    해당 메소드는 read_sql( SQL문, 연결객체) 형태로 사용합니다.

    import sqlite3
    import pandas as pd
    
    con = sqlite3.connect("example.db")
    
    df = pd.read_sql("SELECT * FROM region_table", con, index_col='index')
    df

    다음과 같이 불러온 데이터를 확인할 수 있습니다.

    read_sql 불러온 데이터

     

    지금까지 판다스의 데이터프레임과 SQL DB에 대해서 데이터를 저장하고 불러오는 방법에 대해서 알아보았습니다.

    파이썬을 활용하는데 있어서 SQL 데이터를 쉽게쉽게 판다스와 연동할 수 있어서 편리한 것 같습니다.

     

    반응형

    관련된 글 보기

    Comments