Pandas를 사용하면 하나의 CSV 파일을 특정 기준에 따라 여러 개의 파일로 손쉽게 분할할 수 있습니다. 이 글에서는 기존 CSV 파일을 불러온 뒤, groupby() 함수를 이용해 차종(Car)별로 데이터를 그룹화하고 각각 별도의 CSV 파일로 저장하는 방법을 단계별로 살펴보겠습니다.
예제 입력 파일
다음과 같은 CSV 파일이 있다고 가정해 보겠습니다.
SalesRecords.csv

이 파일에서는 차종 이름을 기준으로 BMW.csv, Lexus.csv, Jaguar.csv 총 3개의 CSV 파일을 생성하는 것이 목표입니다.
1단계: 입력 CSV 파일 읽기
먼저 pandas의 read_csv() 함수를 사용해 원본 파일을 DataFrame으로 불러옵니다.
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")
2단계: groupby()로 차종별 CSV 파일 생성
groupby()를 활용하면 'Car' 열의 값을 기준으로 데이터를 그룹화할 수 있습니다. 각 그룹을 반복문으로 순회하면서 to_csv()로 개별 파일에 저장하면 됩니다.
for (car), group in dataFrame.groupby(['Car']):
group.to_csv(f'{car}.csv', index=False)
여기서 index=False 옵션은 DataFrame의 인덱스가 CSV 파일에 불필요한 추가 열로 저장되지 않도록 합니다.
전체 코드 예제
아래는 지금까지의 과정을 모두 포함한 완성된 코드입니다.
import pandas as pd
# 원본 CSV 파일을 DataFrame으로 읽기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv")
print("\n입력 CSV 파일 = \n", dataFrame)
# 'Car' 열의 차종 이름을 기준으로 groupby하여 CSV 생성
for (car), group in dataFrame.groupby(['Car']):
group.to_csv(f'{car}.csv', index=False)
# 생성된 CSV 파일들의 내용 확인
print("\nCSV 1 = \n", pd.read_csv("BMW.csv"))
print("\nCSV 2 = \n", pd.read_csv("Lexus.csv"))
print("\nCSV 3 = \n", pd.read_csv("Jaguar.csv"))
실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
입력 CSV 파일 =
Unnamed: 0 Car Date_of_Purchase
0 0 BMW 10/10/2020
1 1 Lexus 10/12/2020
2 2 BMW 10/17/2020
3 3 Jaguar 10/16/2020
4 4 Jaguar 10/19/2020
5 5 BMW 10/22/2020
CSV 1 =
Unnamed: 0 Car Date_of_Purchase
0 0 BMW 10/10/2020
1 2 BMW 10/17/2020
2 5 BMW 10/22/2020
CSV 2 =
Unnamed: 0 Car Date_of_Purchase
0 1 Lexus 10/12/2020
CSV 3 =
Unnamed: 0 Car Date_of_Purchase
0 3 Jaguar 10/16/2020
1 4 Jaguar 10/19/2020
실행 결과에서 확인할 수 있듯이 총 3개의 CSV 파일이 생성되었으며, 각 파일에는 해당 차종에 해당하는 행만 포함되어 있습니다. 즉, BMW.csv에는 BMW 관련 데이터가, Lexus.csv에는 Lexus 데이터가, Jaguar.csv에는 Jaguar 데이터가 각각 정리되어 저장됩니다.
생성된 파일의 위치
생성된 CSV 파일들은 프로젝트 디렉터리에 저장됩니다. PyCharm IDE에서 실행한 경우 세 개의 파일은 다음과 같은 경로에 생성됩니다.
C:\Users\amit_\PycharmProjects\pythonProject\BMW.csv C:\Users\amit_\PycharmProjects\pythonProject\Jaguar.csv C:\Users\amit_\PycharmProjects\pythonProject\Lexus.csv