686 Stimmen

UnicodeDecodeError beim Lesen einer CSV-Datei in Pandas

Ich führe ein Programm aus, das 30.000 ähnliche Dateien verarbeitet. Eine zufällige Anzahl von ihnen stoppt und produziert diesen Fehler...

  File "C:\Importer\src\dfman\importer.py", line 26, in import_chr
    data = pd.read_csv(filepath, names=fields)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 400, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 205, in _read
    return parser.read()
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 608, in read
    ret = self._engine.read(nrows)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 1028, in read
    data = self._reader.read(nrows)
  File "parser.pyx", line 706, in pandas.parser.TextReader.read (pandas\parser.c:6745)
  File "parser.pyx", line 728, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:6964)
  File "parser.pyx", line 804, in pandas.parser.TextReader._read_rows (pandas\parser.c:7780)
  File "parser.pyx", line 890, in pandas.parser.TextReader._convert_column_data (pandas\parser.c:8793)
  File "parser.pyx", line 950, in pandas.parser.TextReader._convert_tokens (pandas\parser.c:9484)
  File "parser.pyx", line 1026, in pandas.parser.TextReader._convert_with_dtype (pandas\parser.c:10642)
  File "parser.pyx", line 1046, in pandas.parser.TextReader._string_convert (pandas\parser.c:10853)
  File "parser.pyx", line 1278, in pandas.parser._string_box_utf8 (pandas\parser.c:15657)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xda in position 6: invalid    continuation byte

Die Quelle/Erstellung dieser Dateien stammt alle vom gleichen Ort. Wie kann ich dies am besten korrigieren, um mit dem Import fortzufahren?

1voto

Himanshu Sharma Punkte 11

Ich benutze Jupyter-Notebook. In meinem Fall wurde die Datei im falschen Format angezeigt. Die Option 'encoding' hat nicht funktioniert. Also habe ich die CSV-Datei im UTF-8-Format gespeichert und es funktioniert.

1voto

Om Rastogi Punkte 528

Manchmal liegt das Problem nur bei der .csv-Datei. Die Datei kann beschädigt sein. Wenn Sie mit diesem Problem konfrontiert sind, speichern Sie die Datei erneut als CSV.

0. Öffnen Sie die xls/csv-Datei
1. Gehen Sie zu -> Dateien
2. Klicken Sie -> Speichern unter
3. Geben Sie den Dateinamen ein
4. Wählen Sie den Dateityp als -> CSV [sehr wichtig] aus
5. Klicken Sie -> OK

0voto

Onur Kirman Punkte 69

In meinem Fall konnte ich dieses Problem mit keiner der zuvor bereitgestellten Methoden überwinden. Eine Änderung des Encoder-Typs zu utf-8, utf-16, iso-8859-1 oder einem anderen Typ hat irgendwie nicht funktioniert.

Aber anstelle von pd.read_csv(filename, delimiter=';') habe ich Folgendes verwendet:

pd.read_csv(open(filename, 'r'), delimiter=';')

und die Dinge scheinen einwandfrei zu funktionieren.

0voto

Fügen Sie einfach die Codierung Ihrer Methode wie folgt hinzu:

import pandas as pd

df = pd.read_csv('sales_data_sample.csv', encoding = "ISO-8859-1")

print(df)

-1voto

ah bon Punkte 8093

Sie können es versuchen mit:

df = pd.read_csv('./file_name.csv', encoding='gbk')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X