Python Pandas nicht Lesen, die erste Zeile der csv-Datei
Ich habe ein problem mit dem Lesen von CSV-oder txt-Datei) auf pandas Modul
Da numpy ist loadtxt-Funktion nimmt zu viel Zeit, beschloss ich, pandas read_csv statt.
Möchte ich ein numpy-array aus txt-Datei mit vier Spalten durch ein Leerzeichen getrennt, und hat eine sehr große Anzahl von Zeilen (wie 256^3. In diesem Beispiel ist es 64^3).
Das problem ist, dass ich weiß nicht warum, aber es scheint, dass pandas ist read_csv immer überspringt die erste Zeile (erste Zeile) der csv (txt) - Datei, was zu weniger Daten.
hier ist der code.
from __future__ import division
import numpy as np
import pandas as pd
ngridx = 4
ngridy = 4
ngridz = 4
size = ngridx*ngridy*ngridz
f = np.zeros((size,4))
a = np.arange(size)
f[:, 0] = np.floor_divide(a, ngridy*ngridz)
f[:, 1] = np.fmod(np.floor_divide(a, ngridz), ngridy)
f[:, 2] = np.fmod(a, ngridz)
f[:, 3] = np.random.rand(size)
print f[0]
np.savetxt('Testarray.txt',f,fmt='%6.16f')
g = pd.read_csv('Testarray.txt',delimiter=' ').values
print g[0]
print len(g[:,3])
f[0] und g[0], die angezeigt werden in der Ausgabe übereinstimmen, aber es funktioniert nicht, was darauf hinweist, dass die pandas ist das überspringen der ersten Zeile der Testarray.txt
.
Auch die Länge der geladenen Datei g
ist kleiner als die Länge des Arrays f
.
Ich brauche Hilfe.
Vielen Dank im Voraus.
- warum sparen Sie in numpy und dann Lesen in pandas? Es könnte langsam sein, stattdessen konvertieren Sie das array in numpy pandas dataframe schreiben Sie dann in csv. Es ist viel viel schneller.
- ach, es ist nur ein Beispiel. Im daran interessiert, Es zu Lesen, nicht speichern. danke!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig
pd.read_csv
verwendetheader=0
(wenn dienames
parameter ist auch nicht angegeben), was bedeutet, dass die erste (also 0-indiziert) Zeile wird interpretiert als Spaltennamen.Falls Ihre Daten ohne Kopfzeile, dann verwenden Sie
Beispielsweise
Ohne
header
die erste Zeile,1 2 3
, legt die Spalte-Namen:Mit
header=None
die erste Zeile wird wie Daten behandelt:Drucke
iterrows
und mitrow[column]
rufen Sie den Wert von Daten-frames.Wenn Sie Ihre Datei nicht über eine header-Zeile, die Sie brauchen, zu sagen, Pandas also mit header=None in Ihrem Aufruf zum pd.read_csv().