Passive Income/업비트 자동투자

EOF inside string starting at row 2218 에러

Virtuonweb 2022. 5. 30. 21:56

" 안녕하세요 virtuonweb 입니다 "

     

    이번 글에서는 EOF inside string python 에러에 대해 알아볼까 한다.

    amazon aws ec2 무료 서버에서 자동으로 데이터를 수집하고 있는 내 코드를 통해 fail, success csv 파일을 열어 분석하려고 했는데

    한 파일에서 아래와 같은 에러가 발생했다.

     

    [실행코드]

    survive2_df5 = pd.read_csv('online/Pyupbit/autotrade/datasets/dataset_220205/coin_track_succeed_2per.csv')

    [에러]

    pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.read()
    
    pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory()
    
    pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows()
    
    pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()
    
    pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error()
    
    ParserError: Error tokenizing data. C error: EOF inside string starting at row 2218

     

    EOF string error

    [해결책 1] - engine='python'  ?

    https://www.shanelynn.ie/pandas-csv-error-error-tokenizing-data-c-error-eof-inside-string-starting-at-line/

    위 링크에 들어갔더니 engine='python'으로 설정해보라 한다.

    왜냐면 강제로 파일을 열어 일일이 수정하면 또 다른 에러가 뜰 떄마다 다시 수정해줘야 하기 때문이다. 

    이 말이 일리가 있었다

     

    Pandas CSV error: Error tokenizing data. C error: EOF inside string starting at line | Shane Lynn

    Tokenizing Error Recently, I burned about 3 hours trying to load a large CSV file into Python Pandas using the read_csv function, only to consistently run into the following error: ParserError Traceback (most recent call last) in () ... pandas\_libs\parser

    www.shanelynn.ie

     

    [해결책 2] - 파일 직접 열기 feat. 메모장

    해결책 1은 내 파일과 코드에는 먹히지 않았다.

    따라서 2218번째 줄을 직접 보기로 했다

    ==> 용량이 큰 csv 파일은 메모장으로 열면 편하다. 문제는 이렇게 메모장에서 보이는 Line이 실제 csv의 row와 다르다는 점이다.

     

    [해결책3] - nrows

    그래서 python에서 애초에 2217번째 row만큼만 csv에서 여는 방법을 사용하기로 했다.

    이후 2217번째 row의 마지막 숫자를 메모장에서 검색하면 될 것이다.

    survive2_df5 = pd.read_csv('online/Pyupbit/autotrade/datasets/dataset_220205/coin_track_succeed_2per.csv', nrows = 2217)

    원하는 row만큼만 read하고 싶으면 nrows parameter를 추가하면 된다.

    -> 원하는 정보를 얻었다.

     

    이후 숫자를 메모장에서 검색해 확인해보니

    가장 마지막 데이터가 2218번째 row 였다.

     

    간편한 해결책으로 그냥 2218번째 row를 삭제헸고, 문제는 해결되었다.

     

     

    함께 읽으면 좋은 글