Pandas - 3. 데이터 입출력 (I/O)
2025. 1. 24. 19:59ㆍ프로그래밍 (확장)/Python-Pandas
Pandas는 다양한 형식의 데이터를 쉽게 읽고 쓸 수 있는 강력한 데이터 입출력(I/O) 기능을 제공합니다. 이 문서에서는 파일 입출력의 기본적인 사용법과 주요 옵션을 초보자가 이해하기 쉽게 상세히 설명하고, 각 파일 형식에 대한 예제를 포함합니다.
1. 파일 읽기
1.1 CSV 파일 읽기 (read_csv)
CSV 파일은 데이터 저장에 널리 사용되는 형식으로, Pandas의 read_csv 함수는 이를 간단하게 읽을 수 있습니다.
기본 사용법
import pandas as pd
# CSV 파일 읽기
try:
df = pd.read_csv('example.csv')
print(df)
except FileNotFoundError as e:
print(f"에러 발생: {e}")
주요 옵션
- sep: 구분자를 지정합니다. 기본값은 ,입니다.
- encoding: 파일의 인코딩 형식을 지정합니다. (예: utf-8, euc-kr)
- na_values: 결측값으로 처리할 값의 리스트를 지정합니다.
- header: 열 이름이 포함된 행을 지정합니다. 기본값은 첫 번째 행입니다.
예제
# 구분자와 인코딩 지정
try:
df = pd.read_csv('example.csv', sep=',', encoding='utf-8', na_values=['NA', 'missing'])
print(df)
except FileNotFoundError as e:
print(f"에러 발생: {e}")
1.2 Excel 파일 읽기 (read_excel)
Excel 파일은 데이터 분석에서 자주 사용됩니다. Pandas의 read_excel 함수로 이를 쉽게 읽을 수 있습니다.
기본 사용법
# openpyxl 설치 필요 (Excel 파일 읽기 전)
# !pip install openpyxl
# Excel 파일 읽기
try:
df = pd.read_excel('example.xlsx')
print(df)
except FileNotFoundError as e:
print(f"에러 발생: {e}")
주요 옵션
- sheet_name: 읽을 시트의 이름 또는 번호를 지정합니다. 기본값은 첫 번째 시트입니다.
- usecols: 읽을 열을 지정합니다. (예: A:C 또는 [0, 2, 4])
- skiprows: 건너뛸 행의 수를 지정합니다.
예제
# 특정 시트와 열 읽기
try:
df = pd.read_excel('example.xlsx', sheet_name='Sheet1', usecols='A:C', skiprows=2)
print(df)
except FileNotFoundError as e:
print(f"에러 발생: {e}")
1.3 JSON 파일 읽기 (read_json)
JSON은 데이터를 구조화된 방식으로 저장하는 데 사용됩니다. Pandas의 read_json 함수로 이를 읽을 수 있습니다.
기본 사용법
# JSON 파일 읽기
try:
df = pd.read_json('example.json')
print(df)
except ValueError as e:
print(f"JSON 파일 읽기 오류: {e}")
주요 옵션
- orient: JSON 데이터의 구조를 지정합니다. 기본값은 columns입니다. (예: records, index)
- lines: JSON 파일이 줄 단위로 저장된 경우 True로 설정합니다.
예제
# JSON 데이터 읽기
try:
df = pd.read_json('example.json', orient='records', lines=True)
print(df)
except ValueError as e:
print(f"JSON 파일 읽기 오류: {e}")
1.4 SQL 데이터 읽기 (read_sql)
Pandas는 SQL 데이터베이스에서 데이터를 읽을 수 있는 read_sql 함수를 제공합니다.
기본 사용법
from sqlalchemy import create_engine
import pandas as pd
# SQLAlchemy 엔진을 사용하여 안전한 데이터베이스 연결
engine = create_engine('sqlite:///example.db')
try:
df = pd.read_sql('SELECT * FROM table_name', engine)
print(df)
except Exception as e:
print(f"SQL 읽기 오류: {e}")
주요 옵션
- sql: 실행할 SQL 쿼리 문자열을 지정합니다.
- con: 데이터베이스 연결 객체 또는 엔진을 전달합니다.
2. 파일 쓰기 및 대용량 파일 처리
Pandas는 다양한 형식으로 데이터를 저장할 수 있는 to_csv, to_excel, to_json 등 여러 함수를 제공합니다.
2.1 CSV 파일로 저장
기본 사용법
# CSV 파일로 저장
try:
df.to_csv('output.csv', index=False)
print("CSV 파일 저장 완료")
except Exception as e:
print(f"CSV 저장 오류: {e}")
주요 옵션
- index: 인덱스를 저장할지 여부를 지정합니다. 기본값은 True입니다.
- sep: 구분자를 지정합니다. (예: ,, \t)
- encoding: 파일의 인코딩 형식을 지정합니다. (예: utf-8)
2.2 Excel 파일로 저장
기본 사용법
# Excel 파일로 저장 (openpyxl 엔진 지정)
try:
df.to_excel('output.xlsx', index=False, engine='openpyxl')
print("Excel 파일 저장 완료")
except Exception as e:
print(f"Excel 저장 오류: {e}")
주요 옵션
- sheet_name: 저장할 시트의 이름을 지정합니다. 기본값은 Sheet1입니다.
- engine: 사용할 Excel 엔진을 지정합니다. 기본값은 openpyxl입니다.
2.3 JSON 파일로 저장
기본 사용법
# JSON 파일로 저장
try:
df.to_json('output.json', orient='records')
print("JSON 파일 저장 완료")
except Exception as e:
print(f"JSON 저장 오류: {e}")
주요 옵션
- orient: JSON 데이터의 구조를 지정합니다. (예: records, index)
- lines: JSON 파일을 줄 단위로 저장할지 여부를 지정합니다.
2.4 파일 저장 시 옵션 조정 및 대용량 파일 처리
대용량 파일 처리 (chunksize)
chunksize 옵션을 사용하면 대용량 데이터를 한 번에 처리하지 않고, 청크 단위로 나누어 처리할 수 있습니다.
# 대용량 CSV 파일을 청크 단위로 저장
chunk_size = 1000
for i, chunk in enumerate(pd.read_csv('large_file.csv', chunksize=chunk_size)):
chunk.to_csv(f'output_part_{i}.csv', index=False)
압축 파일 처리
Pandas는 압축된 파일 형식도 지원합니다.
# gzip으로 압축된 CSV 파일 읽기
try:
df = pd.read_csv('compressed_file.csv.gz', compression='gzip')
print(df)
except Exception as e:
print(f"압축 파일 처리 오류: {e}")
파일 인코딩 오류 처리
인코딩 문제가 발생할 경우 errors='replace' 옵션을 사용할 수 있습니다.
try:
df = pd.read_csv('file_with_encoding_issues.csv', encoding='utf-8', errors='replace')
print(df)
except UnicodeDecodeError as e:
print(f"인코딩 오류: {e}")
Pandas의 파일 저장 함수는 데이터의 형식에 따라 다양한 옵션을 제공합니다. 아래는 주요 옵션의 예시입니다.
CSV 파일 저장 시 구분자와 인코딩 지정
try:
df.to_csv('output.csv', sep='\t', encoding='utf-8', index=False)
print("CSV 파일 저장 완료")
except Exception as e:
print(f"CSV 저장 오류: {e}")
Excel 파일 저장 시 시트 이름 지정
try:
df.to_excel('output.xlsx', sheet_name='Result', index=False)
print("Excel 파일 저장 완료")
except Exception as e:
print(f"Excel 저장 오류: {e}")
'프로그래밍 (확장) > Python-Pandas' 카테고리의 다른 글
Pandas - 5. 데이터 전처리 (0) | 2025.02.04 |
---|---|
Pandas - 4. 데이터 선택 및 필터링 (0) | 2025.02.04 |
Pandas - 2. 데이터 구조 (0) | 2025.01.24 |
Pandas - 1. 소개와 설치 (0) | 2025.01.24 |
판다스 (Pandas) (Pivot Table) (0) | 2024.08.03 |