본문 바로가기

카테고리 없음

파이썬 pandas, openpyxl 대신 csv 라이브러리로 엑셀 파일 만들기

파이썬으로 무언가 작업을 하고 나면 많은 경우 그 결과물을 다른 사람에게 엑셀의 형태로 제공해주곤 합니다. 이때 사용할 수 있는 여러 가지 라이브러리가 있습니다. 가장 쉽다고 생각되는 방법은 pandas dataframe의 to_excel 메서드를 사용하는 것입니다. 그다음으로 고려할만한 방법이 openpyxl과  csv 라이브러리를 사용하는 것입니다.

 

이번 포스팅에서는 csv 라이브러리를 이용해서 엑셀에서 열 수 있는 csv 파일을 만드는 방법을 알아보겠습니다.  

 

csv 라이브러리는 pandas, openpyxl과는 다르게 별도의 설치가 필요하지 않다는 장점이 있습니다. 또한 pandas에 비하면 그 용량이 매우 적습니다. 이는 tkinter 등을 사용해서 엑셀 파일로 결과물을 제공하는 gui 프로그램을 만들 때 도움이 됩니다.

 

아래와 같이 생긴 데이터를 csv 파일로 저장해보겠습니다. 

 

scores = [{'date': '20-04-06', 'name': 'Joel', 'score': 90},
          {'date': '20-04-06', 'name': 'Ato', 'score': 80},
          {'date': '20-04-06', 'name': 'Dina', 'score': 95},
          {'date': '20-04-06', 'name': 'Ivan', 'score': 75},
          {'date': '20-04-06', 'name': 'James', 'score': 88}]

 

csv 파일로 저장하기 

csv 파일로 저장하기 위해서는 우선 파일을 쓰기 모드로 열어야 합니다. 이때 인코딩은 utf-8, 줄 바꿈은 없음으로 옵션을 입력합니다. 이후 writerow 메서드를 사용해서 한 줄 한 줄 저장할 내용을 입력하면 됩니다. 샘플 데이터를 csv 파일로 저장하는 함수를 만들었습니다.

 

import csv

def save_to_file(inputs):
    file = open("outputs.csv", mode="w", encoding="utf-8", newline="")
    writer = csv.writer(file)
    writer.writerow(["date", "name", "score"])
    for i in inputs:
        writer.writerow(list(i.values()))
    file.close()
    return

 

writerow 메서드를 이용해서 컬럼명을 작성한 후, 리스트를 순회하며 개별 딕셔너리의 value 리스트를 가져와서 한 줄 한 줄 추가하는 코드입니다.

 

 

이 함수를 실행하면 아래 사진과 같은 csv 파일을 만들 수 있습니다.

 

save_to_file(scores)

 

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.