Pandas에서 헤더(열 이름)가 없는 CSV 파일을 다루거나 헤더 처리를 직접 제어하고 싶을 때는 read_csv() 메서드의 names와 header 매개변수를 활용하면 됩니다.
처리 단계
- CSV 파일 경로를 변수 file_path에 저장합니다.
- read_csv() 메서드에 탭(tab) 구분자(
sep='\t')와 새 열 이름(names)을 지정하여 DataFrame을 생성합니다. - 생성된 DataFrame을 출력합니다.
header=0옵션을 추가하면 파일의 첫 번째 행이 헤더로 인식되어 데이터에서 제외되고, 대신names로 지정한 열 이름이 적용됩니다.- 두 경우의 결과 DataFrame을 각각 출력하여 차이를 비교합니다.
예제 코드
import pandas as pd
file_path = 'test.csv'
# names만 지정한 경우
df = pd.read_csv(file_path, sep='\t', names=['x', 'y', 'z'])
print('names만 지정한 DataFrame:\n', df)
# header=0을 함께 지정한 경우
df = pd.read_csv(file_path, sep='\t', header=0, names=['x', 'y', 'z'])
print('header=0을 적용한 DataFrame:\n', df)
예제에서 사용하는 test.csv 파일에는 다음과 같은 데이터가 저장되어 있습니다.
x y z 0 5 4 4 1 2 1 1 2 1 5 5 3 9 10 0
실행 결과
names만 지정한 DataFrame:
x y z
NaN x y z
0.0 5 4 4
1.0 2 1 1
2.0 1 5 5
3.0 9 10 0
header=0을 적용한 DataFrame:
x y z
0 5 4 4
1 2 1 1
2 1 5 5
3 9 10 0
동작 원리
names만 지정하면 Pandas는 파일의 첫 번째 행(x, y, z)을 일반 데이터 행으로 취급합니다. 그 결과 인덱스가 NaN인 행이 생기고, 전체 인덱스가 실수형(float)으로 변경되는 것을 확인할 수 있습니다.
반면 header=0을 함께 지정하면 첫 번째 행이 헤더임을 명시하는 것이므로 해당 행은 데이터에서 제외되고, names로 지정한 열 이름만 깔끔하게 적용됩니다.
참고로 파일에 헤더 행이 아예 없는 경우에는 header=None을 사용하면 됩니다. 이때 Pandas가 0부터 시작하는 정수 값을 열 이름으로 자동 부여하며, 여기에 names를 함께 지정하면 원하는 열 이름을 즉시 설정할 수도 있습니다.