Was ist die Schnellste Möglichkeit zum hochladen einer großen csv-Datei in die notebook-Arbeit mit python pandas?
Ich versuche zum hochladen einer csv-Datei, die 250MB. Grundsätzlich 4 Millionen Zeilen und 6 Spalten von Zeitreihen-Daten (1min). Das übliche Verfahren ist:
location = r'C:\Users\Name\Folder_1\Folder_2\file.csv'
df = pd.read_csv(location)
Dieser Vorgang dauert etwa 20 Minuten !!!. Sehr vorläufige, die ich untersucht haben, die folgenden Optionen
Ich Frage mich, ob jemand hat im Vergleich dieser Optionen (oder mehr) und es gibt einen klaren Gewinner. Wenn niemand antwortet, In der Zukunft werde ich meine Ergebnisse. Ich habe gerade nicht die Zeit jetzt.
- Es würde helfen, zu verstehen, die Struktur Ihrer Daten, manchmal auch die Angabe im Voraus die dtypes hilft mit
read_csv
- Dies scheint zu sein, a duplicate.
- Auf im HDF5 vs
.read_csv()
Geschwindigkeit und Platz braucht, finden Sie unter stackoverflow.com/questions/16639877/... - es gibt nicht eine Antwort, vergleicht 'Gurke', im HDF5, 'Federn', 'chunking' in einem Beispiel. Es wäre eine gute Referenz, die Frage zu haben, in die Website.
- Mit Ausnahme der Feder, der andere bedeckt erscheinen. Wie dem auch sein mag, ich vermute, Ihr problem könnte tiefer sein als Python. Ist die Lage tatsächlich das kopieren über ein Netzwerk, die möglicherweise die Drosselung der Daten? Oder ist die Maschine, an der dieser code ausgeführt memory verhungert und so, swapping / Prügel? Es scheint unzumutbar, für jede dieser Methoden für 20 Minuten zum laden 250MB Daten.
- ich würde nur überlegen
HDF5
undfeather
(es könnte sein, schwierig und schmerzhaft zu bauen, die es für Windows, OS) - der rest wird definitiv langsamer sein - Vergessen Sie nicht über Blaze. blaze.readthedocs.io/en/latest/index.html
- Gibt es einen Grund, Sie können nicht gzip es?
- ich habe GZIP zu meinem Vergleich
- Es gibt auch andere alternativen: Parkett, asdf, TileDB...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind die Ergebnisse meiner Lesen und schreiben-Vergleich für die DF (Form: 4000000 x 6, Größe im Speicher 183.1 MB, Größe der unkomprimierten CSV - 492 MB).
Vergleich für die Speicherung folgende Formate: (
CSV
,CSV.gzip
,Pickle
,HDF5
[verschiedene Komprimierungs -]):Lesen
schreiben/speichern
Datei-Größe-Verhältnis in Bezug auf unkomprimierte CSV-Datei
RAW-DATEN:
CSV:
CSV.gzip:
Gurke:
HDF (
format='fixed'
) [Standard]:HDF (
format='table'
):HDF (
format='table', complib='zlib', complevel=5
):HDF (
format='table', complib='zlib', complevel=9
):HDF (
format='table', complib='bzip2', complevel=5
):HDF (
format='table', complib='bzip2', complevel=9
):PS ich kann das nicht testen
feather
auf meine Windows notebookDF-info:
Dateigrößen:
Fazit:
Pickle
undHDF5
sind viel schneller, aberHDF5
bequemer ist, können Sie speichern mehrere Tabellen/frames innerhalb, Lesen Sie Ihre Daten bedingt (Blick aufwhere
parameter in read_hdf()), können Sie auch speichern Sie Ihre Daten komprimiert (zlib
- ist schneller,bzip2
- sorgt für eine bessere Verdichtung) usw.PS wenn Sie können, bauen/benutzen
feather-format
- sollte es auch schneller im Vergleich zuHDF5
undPickle
PPS: nicht verwenden Gurke für big data-frames, wie Sie bis Ende Mai mit SystemError: Fehler return ohne Ausnahme gesetzt Fehlermeldung. Es ist auch beschrieben hier und hier.