이 글은 데이터프레임을 엑셀 파일(.csv
및 .xlsx
)로 저장하는 방법에 대해 정리한 글이다.
데이터 생성
가상의 데이터프레임을 생성하기 위해 아래의 코드를 이용하여 데이터를 생성하였다.
# 설문 응답 데이터 생성기
import pandas as pd
import numpy as np
import random
# 문항 개수
num_questions = 10
# 응답자 수
num_respondents = 100
# 응답 범주
responses = ['매우 그렇다', '그렇다', '약간 그렇다', '그렇지 않다', '전혀 그렇지 않다']
# 무작위 응답 생성
np.random.seed(0)
survey_data = np.random.choice(responses, size=(num_respondents, num_questions))
# 데이터프레임 생성
columns = [f'Question {i+1}' for i in range(num_questions)]
survey_dataframe = pd.DataFrame(survey_data, columns=columns)
이렇게 만들어진 데이터프레임은 아래와 같이 구성되어 있다.
csv 파일로 저장하기
먼저 csv 파일로 저장하는 방법이다.
csv 파일로 저장하기 위해서는 pandas 라이브러리에 있는 to_csv
함수를 사용하면 된다.
df.to_csv(file_path)
여기서 file_path
에는 파일 경로와 파일명 및 확장자까지 모두 포함되어 있어야 한다. result라는 폴더 내에 설문조사_결과.csv
라는 파일로 저장하고 싶다면 아래와 같이 입력하면 된다.
survey_dataframe.to_csv('./result/설문조사_결과.csv')
그럼 위와 같이 해당 폴더 내에 파일이 생성된 것을 확인할 수 있다.
하지만 데이터프레임에 한글이 포함되어 있다면 아래와 같이 한글이 깨진 상태로 저장될 수 있다.
한글 혹은 그 이외의 언어가 깨진 상태로 저장되는 경우, 해당 언어에 맞는 인코딩 방식을 지정해줘야 한다. 한글의 경우 cp949 방식을 이용하여 저장하면 된다. 인코딩은 to_csv
함수의 encoding
파라미터를 이용하여 지정할 수 있다.
survey_dataframe.to_csv('./result/설문조사_결과.csv', encoding='cp949')
위 코드와 동일하게 파일이 저장된 것을 확인할 수 있으며, 저장 결과 역시 한글이 정상적으로 저장된 것을 확인할 수 있다.
엑셀 파일로 저장하기
csv 파일이 아닌 엑셀 파일로 저장할 때에는 pandas 라이브러리의 to_excel
함수를 사용하면 된다. to_excel
함수를 이용할 때에는 추가로 openpyxl이라는 라이브러리가 필요하다. to_excel
함수를 실행했는데, openpyxl 라이브러리가 없다는 오류가 아래와 같이 발생한다면, pip install openpyxl
명령어를 입력하여 설치하면 된다.
pip install openpyxl
라이브러리를 설치했다면 아래와 같이 to_excel
함수를 사용하여 엑셀 파일로 저장할 수 있다.
df.to_excel(file_path)
여기서도 file_path
에는 저장 경로와 파일명 및 확장자가 모두 포함되어 있어야 한다. 엑셀 파일로 저장하기 위한 확장자는 기본적으로 .xlsx
를 사용한다.
위와 마찬가지로 생성한 데이터프레임(survey_dataframe
)을 result 폴더 내에 설문조사_결과.xlsx
로 저장하고 싶다면 아래와 같이 입력하면 된다.
survey_dataframe.to_excel('./result/설문조사_결과.xlsx')
아까 저장한 csv 파일과 다른 엑셀 파일(.xlsx
)이 저장된 것을 확인할 수 있다. 파일을 확인하면 이번엔 한글이 정상적으로 저장된 것을 확인할 수 있다.
엑셀 파일로 저장하는 to_excel
함수의 경우, openpyxl 라이브러리 등을 통해 엑셀 파일로 변환하는데 openpyxl의 경우 기본적으로 인코딩 방식이 unicode이기 때문에 한글이 정상적으로 저장된다.
요약
- 데이터프레임을 파일로 저장할 때에는
to_csv
함수와to_excel
함수 등을 이용하여 저장할 수 있다. to_csv
함수를 이용하여 저장할 때에는 파일명 및 확장자(.csv
)가 포함된 파일 경로가 필수로 필요하며, 데이터프레임에 한글이 포함되어 있는 경우encoding
파라미터를 이용하여 인코딩 방식을'cp949'
로 지정해야 한다.to_excel
함수를 사용하여 엑셀 파일(.xlsx
)로 저장할 때에는 openpyxl 라이브러리가 설치되어 있어야 하며, csv 파일과 마찬가지로 파일명 및 확장자(.xlsx
)가 포함된 파일 경로가 필수로 필요하다.
'Data Science > pandas' 카테고리의 다른 글
파이썬 | pandas | 데이터프레임의 전체 열(Column) 이름 가져오기 (1) | 2024.04.16 |
---|---|
파이썬 | pandas | replace 함수를 이용해 데이터프레임의 값 변경하기 (0) | 2024.03.26 |
파이썬 | pandas | 한글이 있는 csv 파일 불러올 때 발생하는 UnicodeDecodeError 해결 (0) | 2024.03.24 |
파이썬 | pandas | 데이터 중 필요한 열(Column)만 추출하기 (0) | 2024.03.18 |
파이썬 | pandas | csv, 텍스트(txt), 엑셀(xlsx) 데이터 불러오기 (0) | 2024.03.16 |