574 Stimmen

Pandas read_csv: low_memory und dtype Optionen

df = pd.read_csv('somefile.csv')

...gibt einen Fehler:

.../site-packages/pandas/io/parsers.py:1130: DtypeWarning: Spalten (4,5,7,16) haben gemischte Typen. Geben Sie die dtype-Option beim Import an oder setzen Sie low_memory=False.

Warum steht die dtype-Option in Verbindung mit low_memory, und warum könnte low_memory=False helfen?

2voto

Dr Nigel Punkte 29

Ich hatte ein ähnliches Problem mit einer ~400MB Datei. Das Setzen von low_memory=False hat den Trick für mich getan. Mach zuerst die einfachen Dinge, ich würde überprüfen, dass dein Datenrahmen nicht größer ist als dein Systemspeicher, starte neu, lösche den RAM bevor du fortfährst. Wenn du immer noch auf Fehler stößt, lohnt es sich sicherzustellen, dass deine .csv Datei in Ordnung ist, wirf einen schnellen Blick in Excel und stelle sicher, dass es keine offensichtliche Korruption gibt. Beschädigte Originaldaten können Verwüstung anrichten...

2voto

Iain Hunter Punkte 3275

Unter Bezugnahme auf die Antwort von Jerald Achaibar können wir die gemischte Typpenwarnung erkennen und nur den langsameren Python-Engine verwenden, wenn die Warnung auftritt:

import warnings

# Erzwingen Sie, dass die gemischte Datentypwarnung zu einem Python-Fehler wird, damit wir sie abfangen und den Ladevorgang mit dem langsameren Python-Engine erneut versuchen können
warnings.simplefilter('error', pandas.errors.DtypeWarning)
try:
    df = pandas.read_csv(path, sep=sep, encoding=encoding)
except pandas.errors.DtypeWarning:
    df = pandas.read_csv(path, sep=sep, encoding=encoding, engine="python")

1voto

Samuel Calado Punkte 11

Dies hat für mich funktioniert!

dashboard_df = pd.read_csv(p_file, sep=';', error_bad_lines=False, index_col=False, dtype='unicode')

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