So öffnen Sie große CSV- oder Textdateien

Post-Ansichten: 3,861

Das Problem

Wenn Sie mit Excel arbeiten, haben Sie wahrscheinlich irgendwann versucht, große CSV- oder Textdateien zu öffnen, konnten diese jedoch möglicherweise nicht öffnen. Mein Kollege hat einmal eine große CSV-Datei von 8 GB erhalten. Er wollte einen Blick auf den Inhalt werfen, konnte ihn aber mit keinem Programm öffnen, das er ausprobiert hatte, Notepad, Excel usw. Die Datei war einfach zu groß, um das Programm überhaupt starten zu können.

Also bat er mich um Hilfe. Seine Anfrage war relativ einfach: öffnen Sie die 8 GB große CSV-Datei und möglicherweise Blick auf Daten in den ersten paar tausend Zeilen. Diese scheinbar unmögliche Aufgabe ist einfach, wenn Sie das richtige Werkzeug auswählen – Python.

Unser Ansatz

Wir werden zunächst Möglichkeiten untersuchen, den Inhalt der großen CSV zu untersuchen. Dann zerlegen wir die große Datei in kleine Dateien, damit die Daten bearbeitbar werden (öffnbar?) in Excel.

Zu Demonstrationszwecken verwenden wir keine 8 GB große CSV-Datei; Stattdessen verwenden wir eine kleinere Datei mit nur 2.600 Datenzeilen. Wenn Sie folgen möchten, können Sie das Beispiel hier herunterladen.

Die Lösung

Wie immer importieren wir zunächst die erforderlichen Bibliotheken. In dieser Übung benötigen wir nur pandas.

import pandas as pd 
df = pd.read_csv('large_data.csv')
df_small = pd.read_csv('large_data.csv', nrows = 1000)

pd.read_csv() erlaubt uns, irgendwelche zu lesen .CSV-Datei in Python, unabhängig von der Dateigröße – mehr zu diesem Punkt später. Eine CSV-Datei ist eine kommagetrennte Wertedatei, die im Grunde eine Textdatei ist. Diese Pandas-Methode verfügt über ein optionales Argument nrows, das die Anzahl der Zeilen angibt, die Sie laden möchten.

Die erste Variable df hat alles in die CSV-Datei geladen. Während die zweite Variable df_small nur die ersten 1.000 Datenzeilen geladen hat. Wir können dies überprüfen, indem wir das Attribut .shape aufrufen.

größe (# der Zeilen, # der Spalten) der beiden Datenrahmen

Wie oben gezeigt, die „large_data.csv“ Datei enthält 2618 Zeilen und 11 Spalten von Daten insgesamt. Und wir können auch bestätigen, dass wir in der Variablen df_small nur die ersten 1.000 Datenzeilen geladen haben, auch 11 Spalten.

Wenn Sie df_small.head() eingeben, werden die ersten 5 Datenzeilen innerhalb des df_small -Datenrahmens angezeigt. Auf diese Weise können wir einen Blick in die große Datei werfen!

Was ist als nächstes, wenn wir die Datendatei nur mit Excel öffnen möchten? Wissen Sie, die Leute mögen Excel, also müssen wir uns daran halten!

Obwohl wir Excel nicht mit Magie erlauben können, diese 8-GB-Datei zu öffnen, können wir sie „teilen und erobern“, indem wir sie in kleinere Dateien aufteilen. Zum Beispiel 8 Dateien mit jeweils 1 GB oder 16 Dateien mit jeweils 500 MB. Eine moderne Version von Excel kann diese Dateigrößen problemlos verarbeiten.

Dieses Mal laden wir den Datenrahmen etwas anders – mit einem optionalen Argument chunksize . Auch hier verwenden wir zu Demonstrationszwecken eine viel kleinere Datei.

df = pd.read_csv('large_data.csv', chunksize = 900)

Ohne auf zu viele technische Details einzugehen, können wir mit dem Argument chunksize Daten in Blöcken laden, wobei jeder Block in unserem Beispiel eine Größe von 900 Datenzeilen hat. Die Anzahl der Chunks wird automatisch vom Programm bestimmt. Da unsere CSV-Datei 2.618 Zeilen enthält, erwarten wir 2618 / 900 = 2,9, was insgesamt 3 Blöcke bedeutet. Die ersten beiden Blöcke enthalten 900 Zeilen und der letzte Block enthält die verbleibenden 818 Zeilen.

Mal sehen, ob das stimmt.

kleinere Datenrahmengrößen

Wir haben eine Datei erfolgreich geladen und in kleinere Teile zerlegt.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
zerlegen der Originaldatei und Speichern in kleine Dateien

Alles zusammenfügen

import pandas as pd df = pd.read_csv('large_data.csv', chunksize = 900)df_small = pd.read_csv('large_data.csv', nrows = 1000)i = 1for file in df: print(file.shape) file.to_csv(f'file_{i}.csv') i += 1

Wir haben nur 8 Codezeilen verwendet, um das zu lösen, was in Excel unmöglich zu erreichen scheint. Ich hoffe, Sie fangen an, Python zu lieben ❤️🐍!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.