본문 바로가기
Python

판다스 데이터 추가하기: 파이썬 excel 자동화 openpyxl

by YJHTPII 2022. 5. 26.
반응형

https://blog.naver.com/isc0304/222368084160

 

#10 판다스 데이터 추가하기: 파이썬 excel 자동화 openpyxl

개요 파이썬으로 테이블 형태의 데이터를 처리할 때는 판다스만큼 유용한 기능이 없다. openpyxl이 엑셀의 ...

blog.naver.com

 

 

 

개요

파이썬으로 테이블 형태의 데이터를 처리할 때는 판다스만큼 유용한 기능이 없다. openpyxl이 엑셀의 기능을 잔동화한다고는 하지만 판다스를 대체하기는 어렵다. 판다스는 데이터 분석을 위해 꼭 필요한 라이브러리 중에 하나다. 최근에도 한 프로젝트를 진행하면서 간단한 개념 증명이나 빠르고 쉬운 데이터 처리에 이 라이브러리를 꺼내 사용했다. 그러나 판다스는 엑셀을 세세히 컨트롤할 수 있는 기능이 없기 때문에 이 두 라이브러리간의 조화는 좋은 시너지를 발휘할 것으로 예상한다. 이번 글에서는 판다스의 데이터를 openpyxl에 쉽게 옮기는 방법에 대해 살펴본다.

판다스의 데이터프레임을 openpyxl로 가져오는 함수는 다음과 같다. 이 함수는 데이터 프레임을 워크 시트에 전달하기에 적합한 것으로 변환한다. index가 True이면 헤더 아래에서 한 행부터 시작하여 인덱스가 포함하고, header가 True이면 오른쪽에서 한 열부터 열 헤더가 포함한다.

openpyxl.utils.dataframe.dataframe_to_rows(df, index=True, header=True)

 

판다스 데이터프레임 생성하기

openpyxl에 전달할 데이터프레임을 하나 생성하자. 판다스에 대한 내용은 별도로 학습하기 바란다. 판다스를 사용하려면 별도의 라이브러리 설치가 필요하다.

pip install pandas

다음 코드는 파이썬 dict 데이터를 하나 생성하고 데이터프레임으로 변환하는 과정이다.

import pandas as pd data = { '영희' : {'영어':90, '국어':80, '수학':70}, '철수' : {'영어':100, '국어':70, '수학':80}, } df = pd.DataFrame(data) df.index.name = '과목'

 

데이터프레임을 워크시트로 전달하기

이 데이터를 그대로 워크시트로 가져오도록 해보자. 워크 시트는 로우 데이터를 다수를 가져와서 ws.append를 통해서 하나의 로우씩 더하는 방식이다.

from openpyxl import Workbook from openpyxl.utils.dataframe import dataframe_to_rows wb = Workbook() ws = wb.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) for cell in ws['A'] + ws[1]: cell.style = 'Pandas' wb.save("pandas_openpyxl.xlsx")

모든 작업이 끝나면 다음과 같이 정보를 확인할 수 있다.

옵션으로 들어가는 index와 header를 False로 전달하면 헤더와 인덱스 내용(영희. 철수, 영어, 국어, 수학)이 삭제된다.

for r in dataframe_to_rows(df, index=False, header=False): ws.append(r)

반응형

댓글