Es fiel mir schwer, die CSV-Datei mit Tabulatoren und Kommas zu bearbeiten. Notieren Sie sich daher die Korrespondenz zu diesem Zeitpunkt. Als ich die CSV-Datei mit einem Texteditor öffnete, sah es so aus:
txt
0.2, 1.01, 0.60, -0.68
0.4, 1.00, 0.67, -0.69
0.6, 1.01, 0.61, -0.72
Lesen Sie zuerst die Datei mit read_csv von Pandas. Der Dateiname lautet sample.csv und es befinden sich Dateien im selben Verzeichnis.
In
import pandas as pd
df = pd.read_csv_("sample.csv",header = None)
#Überprüfen Sie den Inhalt von DataFrame
print(df)
print(df.dtypes)
Hier
df = pd.read_csv_("sample.csv",sep="\t", header = None)
Ich hätte es tun sollen, aber weil ich das nicht getan habe, wurden die Daten mit gemischten Registerkarten so gelesen, dass sie in der ersten Spalte stehen würden.
#### **`Out`**
```ruby
0
0 0.2\t1.01\t0.60\t-0.68
1 0.4\t1.00\t0.67\t-0.69
2 0.6\t1.01\t0.61\t-0.72
0 object
dtype: object
Gehen Sie wie folgt vor, um die Spalten durch Tabulatortrennzeichen zu trennen.
In
df = df[0].apply(lambda x: pd.Series(x.split('\t')))
#Überprüfen Sie den Inhalt von DataFrame
print(df)
print(df.dtypes)
Out
0 1 2 3
0 0.2 1.01 0.60 -0.68
1 0.4 1.00 0.67 -0.69
2 0.6 1.01 0.61 -0.72
0 object
1 object
2 object
3 object
dtype: object
Da ich danach eine Berechnung durchführen möchte, werden alle in den Float-Typ konvertiert.
Ermitteln Sie die Anzahl der Spalten im DataFrame mit df.shape [1], erstellen Sie eine Liste der Anzahl der Spalten mit der Bereichsfunktion und drehen Sie die for-Anweisung um.
In
for i in range(df.shape[1]):
df[i] = df[i].astype(float)
#Überprüfen Sie den Inhalt von DataFrame
print(df.dtypes)
Out
0 float64
1 float64
2 float64
3 float64
dtype: object
Das ist es.
** Ergänzung 1 Wenn Sie die unter dem Ordner abgelegten Dateien lesen möchten, können Sie wie folgt vorgehen.
In
import pandas as pd
import os
#Sie müssen das Verzeichnis in den Ordner ändern, der die Dateien enthält.
os.chdir("./Ordnernamen")
#Holen Sie sich eine Liste der Dateien.
file = os.listdir("./")
# file[0]Holen Sie sich den Dateinamen mit (vorausgesetzt, es existiert nur eine Datei)
df = pd.read_csv(file[0],header=None)
** Ergänzung 2 Es scheint, dass das Astype-Argument auch ein Wörterbuchtyp sein kann. Es scheint praktisch zu sein, wenn Sie zu einem anderen Typ konvertieren.
In
df.astype({'a': int, 'c': str}).dtypes
** Ergänzung 3 Führen Sie die folgenden Schritte aus, um den Spaltennamen einzugeben und die Spalte hinzuzufügen.
In
from pandas import DataFrame
#Spaltennamen einfügen
df.columns=['a','b','c','d']
#Fügen Sie eine Spalte hinzu, indem Sie den Spaltennamen angeben
df = DataFrame(df, columns=['a','b','c','d','e'])
** 20170410 Nachtrag
Wie Sie im Kommentar betont haben, habe ich versucht, "sep =" \ t "" als Argument von read_csv zu verwenden, aber es wurde mit Kommas gelesen.
Out
0 1 2 3
0 0.2, 1.01, 0.60, -0.68
1 0.4, 1.00, 0.67, -0.69
2 0.6, 1.01, 0.61, -0.72
Wenn ich jedoch die Beschreibung von "sep =" \ t "" löschte und read_csv ausführte, wurde sie normalerweise als Float-Typ ohne Split- oder Astype-Verarbeitung gelesen.
Ich laufe mit pycharm, aber wenn ich das sep-Argument zurücksetze und von vorne beginne, wird das Tool es automatisch ermitteln? Ich verstehe nicht.
In
import pandas as pd
import os ##Zum Lesen von Dateien
#Lesen Sie die CSV-Datei unter dem Beispielordner
os.chdir("./sample")
file = os.listdir("./")
df = pd.read_csv(file[0],header=None)
os.chdir("../")
#Überprüfen Sie den Inhalt von DataFrame
print(df)
print(df.dtypes)
Out
0 1 2 3
0 0.2 1.01 0.60 -0.68
1 0.4 1.00 0.67 -0.69
2 0.6 1.01 0.61 -0.72
0 float64
1 float64
2 float64
3 float64
dtype: object
Bisher wurden vier Arten von Ereignissen bestätigt, und die Ursache ist unbekannt.
Lesen Sie gemischte Komma-Tab-Daten mit Pycharm_Beim Lesen mit csv
① Wenn es mit float richtig gelesen wird, ohne etwas zu tun
(2) Wenn es mit gemischten Registerkarten gelesen wird, wenn nichts getan wird
③sep="\t"Wann wird von float korrekt gelesen, wenn angegeben
④sep="\t"Wenn Sie angeben, wird es mit Kommas gelesen
Recommended Posts