본문 바로가기
Python

[Pandas] 파일 read할 때 Error tokenizing data 에러 해결법

by daewooki 2021. 8. 20.
반응형

pandas에서 read_csv 해서 csv 파일을 읽을 때 아래와 같은 오류를 볼 수 있다. 

 

Error tokenizing data. C error: Expected ... 

 

오류 내용을 보니 예상되는 필드는 12개여야하는데 9437라인에서 17개가 된다고 보인다.

 

오류 원인

- 쉼표로 분리될 때 각 라인마다 분리되는 개수가 달라서 발생하는 것이다.

 

해결하기 전에 분리될 때 개수가 정말 다른지 확인을 해보면 된다.

 

<분리 개수 확인 코드>

from collections import Counter

with open(file_path, encoding="utf-8") as f:
    lines = f.readlines()
print(len(lines))

len_list=[]
for _ in range(len(lines)):
    print(str(_)+":"+str(len(lines[_].split(','))))
    len_list.append(len(lines[_].split(',')))
    
Counter(len_list)

Counter함수를 이용해서 각 라인별로 콤마로 분리된 개수를 세어보았다.

 

총 25,038 개의 데이터인데, 12~24개까지 분리되는 경우가 있었다. 

 

해결 방법

csv 패키지를 import하고, csv 파일을 읽은 후에 pandas DataFrame으로 만들어버리는 방법이다.

 

import csv
import pandas as pd

f=open(file_path, encoding="utf8")
reader = csv.reader(f)
csv_list=[]
for l in reader:
    csv_list.append(l)
f.close()
log_df = pd.DataFrame(csv_list)
log_df

파일을 읽고  list에 append 시킨 후, 해당 리스트를 DataFrame에 넣어주면 오류 없이 데이터프레임이 생성되는 것을 확인할 수 있다.

 

<output>

 

 

 

반응형

댓글