Python Pandas 라이브러리 사용해보기 ✨

김젼·2021년 4월 29일
0

파이썬에서 ORM 을 사용하다보면 list, dict 데이터 형식을 JSON으로 캐스팅 해야하는 경우가 자주 발생한다. Pandas(판다스)는 캐스팅을 위한 파이썬 라이브러리인데 위키백과에 명확한 설명이 있어서 인용해왔다.

pandas는 데이터 조작 및 분석을 위해 Python 프로그래밍 언어로 작성된 소프트웨어 라이브러리입니다
출처 위키백과

pandas 라이브러리 설치

pip install pandas

파이썬 패키지 매니저를 통해 쉽게 설치가 가능하다.

import 및 사용

import pandas as pd

pandas 라이브러리는 pd 로 사용하는 것이 관례라고 합니다.

사용 예시로, flask_sqlalchemy 라이브러리를 사용해 포스트에 달린 댓글을 가져온다면
(CommentModel 은 미리 선언해뒀다고 가정)

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

comments = db.session.query(CommentModel).filter(CommentModel.post_idx == post_idx).all()

comments 는 리스트형으로 리턴되고, 저는 pandas 라이브러리를 통해 JSON 으로 리턴해보겠습니다.

query = db.session.query(CommentModel).filter(CommentModel.post_idx == post_idx)
pandas_query = pd.read_sql(query.statement, query.session.bind)
comments = json.loads(pandas_query.to_json(orient = 'records'))

SQLAlchemy 로 SQL만 추출한 후, 해당 쿼리를 pd.read_sql() 을 통해 데이터를 셀렉트해옵니다.
to_json() 만으로도 JSON 형태로 변환되지만 아래와 같은 형태로 변환되기 때문에 orient = 'records' 옵션을 추가해주었습니다.

[옵션 제거 시]

{
	"comment_idx": {
            "0": 1,
            "1": 2,
            ...
         }
         "content": {
             "0": "댓글1",
             "1": "댓글2",
             ...
         }
}

[옵션 추가 시]

{
    {
        "comment_idx": 1,
            "content": "댓글1",
    },
    {
        "comment_idx": 2,
            "content": "댓글3",
    }
}

리스트를 딕셔너리 타입으로 바꾸거나, encoder 클래스를 생성해두고 사용하는 방법도 있지만, 데이터 분석 시 테이블형의 데이터를 가공하는데 필수인 라이브러리라 사용해보았습니다.

이 외에도 데이터 캐스팅의 좋은 방법이 있으시다면 코멘트 부탁드립니다 🙏🏻

출처
https://lemontia.tistory.com/844

0개의 댓글