Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python pandas DataFrame을 CSV 파일로 저장하는 방법 완벽 가이드

Python에서 pandas DataFrame을 CSV 파일로 저장하려면 to_csv() 메서드를 사용하면 됩니다. 이 메서드는 DataFrame의 데이터를 쉼표로 구분된 텍스트 형식(CSV)으로 변환하여 지정한 경로에 파일로 저장해 줍니다.

1. 딕셔너리 준비하기

먼저 예제에 사용할 리스트 형태의 딕셔너리를 생성합니다.

# 리스트 값으로 이루어진 딕셔너리
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']
}

2. DataFrame 생성하기

위에서 만든 딕셔너리를 사용해 pandas DataFrame을 생성합니다.

dataFrame = pd.DataFrame(d)

3. CSV 파일로 저장하기

to_csv() 메서드에 저장할 파일 경로를 전달하면 해당 위치에 CSV 파일이 생성됩니다. 아래 예제에서는 바탕화면(Desktop) 경로에 저장하도록 설정했습니다.

dataFrame.to_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")

전체 예제 코드

지금까지의 과정을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd

# 리스트 값으로 이루어진 딕셔너리
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']
}

# 딕셔너리로부터 DataFrame 생성
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)

# DataFrame을 SalesRecords.csv 파일로 저장
dataFrame.to_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")

# 결과 확인
print("CSV 파일이 성공적으로 작성되고 생성되었습니다...")

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

DataFrame...
        Car   Date_of_purchase
0      BMW         2020-10-10
1    Lexus         2020-10-12
2     Audi         2020-10-17
3 Mercedes         2020-10-16
4   Jaguar         2020-10-19
5  Bentley         2020-10-22
CSV 파일이 성공적으로 작성되고 생성되었습니다...

실행 후 지정한 경로에 "SalesRecords.csv" 파일이 성공적으로 생성되며, 파일 안에는 위 DataFrame의 데이터가 그대로 기록되어 있는 것을 확인할 수 있습니다.

추가 팁: 자주 사용하는 to_csv() 옵션

to_csv() 메서드는 다양한 옵션을 제공하므로 상황에 맞게 활용하면 더욱 편리합니다.

  • index=False: 행 인덱스(0, 1, 2...)를 CSV 파일에 포함하지 않고 저장합니다.
  • encoding='utf-8-sig': 한글 데이터를 Excel에서 열 때 깨짐 현상을 방지합니다.
  • sep=';': 기본 구분자인 쉼표 대신 세미콜론 등 다른 구분자를 지정할 수 있습니다.
  • columns=['Car']: 특정 열만 선택하여 저장할 수 있습니다.
# 인덱스 없이 UTF-8(BOM) 인코딩으로 저장하는 예시
dataFrame.to_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv",
                 index=False,
                 encoding='utf-8-sig')