Ich versuche, 3GB Datei in Pandas Datenrahmen mit read_csv Funktion und erhalten Fehler zu lesen: der SpeicherPandas - aus der Erinnerung
Ich bin auf dem PC mit 16 GB RAM, Ubuntu 16.04 und Pandas 0,18 Version. Ich weiß, dass ich dtype bereitstellen kann, um das Hochladen zu erleichtern, aber es gibt zu viele Spalten in meinem Datensatz und ich möchte es zuerst laden und dann über den Datentyp entscheiden.
Update: Dies ist keine doppelte Frage. 3 GB sollte leicht auf 16 GB-Maschine passen.
Ein weiteres Update: Hier ist Traceback.
Traceback (most recent call last):
File "/home/a/Dropbox/Programming/Python/C and d/main.com.py", line 9, in <module>
preprocessing()
File "/home/a/Dropbox/Programming/Python/C and d/main.com.py", line 5, in preprocessing
df = pd.read_csv(filepath_or_buffer = file_path, sep ='\t', low_memory = False)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 498, in parser_f
return _read(filepath_or_buffer, kwds)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 285, in _read
return parser.read()
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 747, in read
ret = self._engine.read(nrows)
File "/usr/lib/python3/dist-packages/pandas/io/parsers.py", line 1197, in read
data = self._reader.read(nrows)
File "pandas/parser.pyx", line 769, in pandas.parser.TextReader.read (pandas/parser.c:8011)
File "pandas/parser.pyx", line 857, in pandas.parser.TextReader._read_rows (pandas/parser.c:9140)
File "pandas/parser.pyx", line 1833, in pandas.parser.raise_parser_error (pandas/parser.c:22649)
pandas.parser.CParserError: Error tokenizing data. C error: out of memory
Leider kann ich nicht ganze Datendatei schreiben, aber es hat in etwa 2,5 mil Zeilen und meist kategorisch (string) Daten
Hoffentlich letzte Update:
Hier ist mein Original-Code zu lese daten in datenframe:
import pandas as pd
def preprocessing():
file_path = r'/home/a/Downloads/main_query.txt'
df = pd.read_csv(filepath_or_buffer = file_path, sep ='\t', low_memory = False)
Der obige Code produziert Fehlermeldung, die ich oben gepostet.
ich dann low_memory = False
zu entfernen versucht, und alles funktionierte, gab es nur Warnung:
sys:1: DtypeWarning: Columns (17,20,23,24,33,44,58,118,134,
135,137,142,145,146,147) have mixed types.
Specify dtype option on import or set low_memory=False.
Sie können versuchen, [diese Methode ] (http://stackoverflow.com/a/37845530/5741205) – MaxU
@MaxU Vielen Dank für den Vorschlag. Es ist auch möglich, 'dtype' anzugeben, um den Speicherverbrauch zu reduzieren. Würden Sie bitte das doppelte Tag entfernen? Die Frage, auf die Sie sich beziehen, ist schlecht formuliert. Nirgendwo in Pandas-Dokumenten können Sie ein Limit für die Dateigröße finden, egal ob Sie 6 GB oder 600 TB groß sind, und auch genügend RAM, um damit fertig zu werden. Es könnte langsam sein, aber das ist nicht der Punkt. Zuvor gab es Bugs in Pandas mit Memory-Handling und diese wurden behoben. Dieser scheint ebenfalls ein Fehler zu sein, also braucht er die richtige Aufmerksamkeit. – user1700890
könnten Sie bitte eine vollständige Fehlerrückverfolgung posten? Sicher können Sie 'dtype' verwenden, aber wir sehen Ihre Daten nicht, daher können wir Ihnen nicht die Werte für den' dtype' Parameter vorschlagen ... – MaxU