본문 바로가기
기타

[Python] PaserError : Error tokenizing data C Error : EOF inside string starting at row 144372

by 딍이 2024. 6. 19.
반응형

안녕하세요.

어제만난 파이썬 에러 해결법을 공유합니다. 

 

0. 데이터 정보 

- 제가 활용하는 데이터는 외부 반출이 불가한 데이터이지만 특별한 보안이 걸려있지는 않은 데이터 입니다. 

- CSV 형식이며 데이터의 크기가 평균 100만행으로 큰편입니다. 

 

1. 데이터 불러오기 

df1= pd.read_csv("data1.csv")

위 코드를 실행하였을때 아래와 같은 에러가 나타났습니다. 

PaserError : Error tokenizing data C Error : EOF inside string starting at row 144372

 

2. 에러 확인 

- 데이터를 직접 열어서 144373 행을 확인했습니다. (첫 행은 Header) 

- 다른 데이터와 다르지 않게 큰 문제가 없었습니다... 

 

3. Github, StackOverFlow 에 나온 방법들 적용 (제가 확인하고 실행했던 모든 방법) 

df1 = pd.read_csv("data1.csv", quote = QUOTE_NONE)
import csv
df1= pd.read_csv("data1.csv", header = None, delimiter="\t", quoting=csv.QUOTE_NONE, encoding='utf-8')
df1 = pd.read_csv("data1.csv", engine = 'python')
df1 = pd.read_csv("data1.csv", engine = "python", quote=QUOTE_NONE)
df1 = pd.read_csv("data1.csv", quoting=3, error_bad_lines=False)
df1 = pd.read_csv("data1.csv", error_bad_lines = False)

-> 모든 데이터가 반드시 필요한 경우 이 방법(error_bad_lines)은 절대 추천하지 않습니다. 이 방법으로 불러와졌던 것 같은데 144371 행 (에러가 나기 바로 이전 행) 까지만 불러와집니다... 

 

그치만 모든 방법이 실패했습니다.. 구글링 해본 결과 error_bad_lines, quoting, engine, header, delimiter를 조합해서 사용하는 방식들이 쏟아졌는데 모두 적지는 않았습니다. 

 

위 코드 중 일부는 입력하면 ParserError는 나지 않았지만 EncodingError가 새로 발생했습니다.. 경험상 인코딩 에러는 절대 아니라고 생각했고 파일 형식쪽으로 문제를 해결하기로 했습니다. 

 

4. 제가 해결한 방식 : 파일 형식 변경 

- 매우 간단하게.. 형식을 변경해봤습니다. 제가 사용하는 내부망/노트북에서 이전에 csv가 읽히지 않는 문제가 몇번 있었는데 그때마다 txt 파일로 변환해서 했을때 성공한 경험이 있었기 때문에....

 

1) csv 파일을 우클릭하여 메모장으로 열어준다

2) 다른이름으로 저장을 클릭

3) .txt를 붙이고 인코딩은 건드리지 않고 저장 

4) read_csv가 아닌 read_table을 활용하여 읽기

-> 성공했습니다.

 

혹시 저와 같이 이 에러로 인해 고통받을 분들을 위해 공유합니다.. ㅠㅠ

반응형

댓글