Wie kann ich eine tsv-Datei mit großen Datenmengen vorverarbeiten und in einen Python-Datenrahmen laden?
Ich versuche gerade, die folgende große tabulatorgetrennte Datei in eine datenrahmenähnliche Struktur in Python zu importieren --- natürlich verwende ichpandas
Datenrahmen, obwohl ich offen für andere Optionen bin.
Diese Datei hat eine Größe von mehreren GB und ist kein Standardtsv
file --- es ist kaputt, d. h. die Zeilen haben eine unterschiedliche Anzahl von Spalten. Eine Zeile kann 25 Spalten haben, eine andere 21.
Hier ist ein Beispiel für die Daten:
Col_01: 14 .... Col_20: 25 Col_21: 23432 Col_22: 639142
Col_01: 8 .... Col_20: 25 Col_22: 25134 Col_23: 243344
Col_01: 17 .... Col_21: 75 Col_23: 79876 Col_25: 634534 Col_22: 5 Col_24: 73453
Col_01: 19 .... Col_20: 25 Col_21: 32425 Col_23: 989423
Col_01: 12 .... Col_20: 25 Col_21: 23424 Col_22: 342421 Col_23: 7 Col_24: 13424 Col_25: 67
Col_01: 3 .... Col_20: 95 Col_21: 32121 Col_25: 111231
ie Sie sehen können, sind einige dieser Spalten nicht in der richtigen Reihenfolge ...
Now, ich denke, die richtige Art, diese Datei in einen Datenrahmen zu importieren, besteht darin, die Daten so vorzuverarbeiten, dass Sie einen Datenrahmen mit @ ausgeben könneNaN
-Werte, z. B.
Col_01 .... Col_20 Col_21 Col22 Col23 Col24 Col25
8 .... 25 NaN 25134 243344 NaN NaN
17 .... NaN 75 2 79876 73453 634534
19 .... 25 32425 NaN 989423 NaN NaN
12 .... 25 23424 342421 7 13424 67
3 .... 95 32121 NaN NaN NaN 111231
Um dies noch komplizierter zu machen, handelt es sich um eine sehr große Datei mit einer Größe von mehreren GB.
ormalerweise versuche ich, die Daten in Blöcken zu verarbeiten,
import pandas as pd
for chunk in pd.read_table(FILE_PATH, header=None, sep='\t', chunksize=10**6):
# place chunks into a dataframe or HDF
Ich sehe jedoch keine Möglichkeit, die Daten zuerst in Blöcken "vorzuverarbeiten" und dann mit Blöcken die Daten in @ zu lesepandas.read_table()
. Wie würdest du das machen? Welche Art von Vorverarbeitungswerkzeugen gibt es --- vielleichtsed
? awk
?
Dies ist aufgrund der Größe der Daten und der Formatierung, die vor dem Laden in einen Datenrahmen vorgenommen werden muss, ein herausforderndes Problem. Für jede Hilfe dankbar.