[PYTHON] Der Header ist falsch ausgerichtet mit read_csv () und read_table () von Pandas

Einführung

Als ich versuchte, die im CSV-Format erhaltene Datei mit Pandas zu importieren und zu verarbeiten, waren der Header und die Daten falsch ausgerichtet, aber unerwartet konnte ich die Antwort nicht sofort erreichen, also schrieb ich sie als Artikel. [Zur Lösung springen](# Lösung)

Betriebsumgebung

Ich habe es in der folgenden Umgebung ausgeführt.

Modul version
python 3.8.3
pandas 1.0.5

Problem

Importieren Sie die folgende Datei im CSV-Format als DatFrame.

example.csv


Time  x   y   z
   0  1   2  10
   1  2   2  10
   2  3   2  10
..

Importieren Sie mit "read_csv ()".

read_csv.py


import pandas as pd
path = 'CSV-Dateipfad'
df = pd.read_csv(path)
print(df)

Das Ausgabeergebnis im Terminal ist wie folgt.

#    Time\tx\ty\tz
#  0    1\t1\t2\t10
#  1    2\t2\t2\t10
#  2    3\t3\t2\t10
..

Es gibt ein zusätzliches \ t darin. Es scheint, dass es durch Tabulatoren (tsv-Format) anstatt durch Kommas getrennt war.

Versuchen Sie es mit read_tabel ().

read_tsv.py


import pandas as pd
path = 'CSV-Dateipfad'
df = pd.read_table(path)
print(df)

Das Ausgabeergebnis ist wie folgt. Das \ t ist weg, aber stattdessen sind der Header und die Daten falsch ausgerichtet und alle z-Daten sind jetzt NaN.

#    Time  x   y    z
#  0    1  2  10  NaN
#  1    2  2  10  NaN
#  2    3  2  10  NaN

Lösung

Geben Sie read_csv () ein Argument wie folgt:

read_csv_2.py


import pandas as pd
path = 'CSV-Dateipfad'
df = pd.read_csv(path, sep='\s+')
print(df)

Gemäß der Padas-Dokumentation (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) sind die Argumente für eine Datei durch ein oder mehrere Zeichen getrennt. Wie es scheint. Es scheint, dass die Ursache darin bestand, dass die ursprünglichen Daten durch Tabulatoren und Leerzeichen getrennt wurden ... Bitte vergib mir ... lol.

Zusammenfassung

Ich konnte den Header und die Daten korrekt in einen DataFrame konvertieren, indem ich das Argument "sep =" \ s + "" an "csv_read ()" für die Daten gab, die durch Tabulatoren und Leerzeichen getrennt waren.

Recommended Posts

Der Header ist falsch ausgerichtet mit read_csv () und read_table () von Pandas
UnicodeDecodeError in pandas read_csv
Funktionen von pd.NA in Pandas 1.0.0 (rc0)
Etosetra im Zusammenhang mit Pandas read_csv
# Zeile ignorieren und mit Pandas lesen
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Eine kleine Überprüfung von Pandas 1.0 und Dask
Beurteilung von NaN durch Pandas: Wenn Str-Typ und Float-Typ gemischt werden
Screenshots des Webfischens mit Selen und Chrom.
Trennung von Design und Daten in matplotlib
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Sprechen Sie über die Funktionen, für die Pandas und ich im Projekt verantwortlich waren
Zusammenfassung der 2016 erstellten OSS-Tools und -Bibliotheken
Zusammenfassung dessen, was bei 100 Pandas-Schlägen verwendet wurde (# 1 ~ # 32)
Berechnung der technischen Indikatoren durch TA-Lib und Pandas
Koexistenz von Anaconda 2 und Anaconda 3 in Jupyter + Bonus (Julia)
Fügen Sie mit Pandas Summen zu Zeilen und Spalten hinzu
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Grundlegende Bedienung von Python Pandas Series und Dataframe (1)
"Lineare Regression" und "Probabilistische Version der linearen Regression" in Python "Bayes lineare Regression"
Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Über Importfehler von numpy und scipy in anaconda
Berechnung der Standardabweichung und des Korrelationskoeffizienten in Python
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Unterschied zwischen Ruby und Python in Bezug auf Variablen
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
Beispiel für das Abrufen des Modulnamens und des Klassennamens in Python
Zusammenfassung der Datumsverarbeitung in Python (Datum / Uhrzeit und Datum)
"Typfehler: Nicht erkannter Werttyp: <class'str '>" in to_datetime von Pandas