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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage