Pandas: 행당 열 수가 다른 csv 가져오기


행당 열 수가 다른 경우 다음 기본 구문을 사용하여 CSV 파일을 Pandas로 가져올 수 있습니다.

 df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 ))

range() 함수 내부의 값은 최대 열 수가 있는 행의 열 수여야 합니다.

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예: 행당 열 수가 다른 Pandas로 CSV 가져오기

even_data.csv 라는 다음과 같은 CSV 파일이 있다고 가정해 보겠습니다.

각 행의 열 개수는 동일하지 않습니다.

read_csv() 함수를 사용하여 이 CSV 파일을 pandas DataFrame으로 가져오려고 하면 오류가 발생합니다.

 import pandas as pd

#attempt to import CSV file with differing number of columns per row
df = pd. read_csv (' uneven_data.csv ', header= None )

ParserError: Error tokenizing data. C error: Expected 2 fields in line 2, saw 4

우리는 Pandas가 2개의 필드(첫 번째 행의 열 수이기 때문에)를 예상했지만 4개 를 확인했음을 알려주는 ParserError를 수신합니다.

이 오류는 주어진 행의 최대 열 수가 4 임을 알려줍니다.

따라서 CSV 파일을 가져오고 이름 인수에 range(4) 값을 제공할 수 있습니다.

 import pandas as pd

#import CSV file with differing number of columns per row
df = pd. read_csv (' uneven_data.csv ', header= None , names=range( 4 )))

#view DataFrame
print (df)

   0 1 2 3
0 to 22 NaN NaN
1 B 16 10.0 12.0
2 C 25 10.0 NaN
3 D 14 2.0 7.0
4 E 20 4.0 NaN

pandas에 4개의 열이 필요하다고 명시적으로 지시했기 때문에 오류 없이 CSV 파일을 pandas DataFrame으로 성공적으로 가져올 수 있습니다.

기본적으로 pandas는 각 행의 모든 누락된 값을 NaN으로 채웁니다.

누락된 값을 0으로 표시하려면 다음과 같이 fillna() 함수를 사용하면 됩니다.

 #fill NaN values with zeros
df_new = df. fillna ( 0 )

#view new DataFrame
print (df_new)

   0 1 2 3
0 to 22 0.0 0.0
1 B 16 10.0 12.0
2 C 25 10.0 0.0
3 D 14 2.0 7.0
4 E 20 4.0 0.0

이제 DataFrame의 각 NaN 값이 0으로 대체되었습니다.

참고 : 여기에서 pandas read_csv() 함수에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Pandas: CSV 파일을 읽을 때 줄을 건너뛰는 방법
Pandas: 기존 CSV 파일에 데이터를 추가하는 방법
Pandas: CSV 파일을 가져올 때 유형을 지정하는 방법
Pandas: CSV 파일을 가져올 때 열 이름 설정

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다