Was in einer CSV-Datei und was in einem Datenrahmen ist, sind zwei sehr unterschiedliche Dinge. Beispiel:9.9
und 9.99999999999999
in einer CSV-Datei nimmt in einem Datenrahmen dieselbe Menge Platz ein.
Allerdings nehmen Daten in einem Datenrahmen viel weniger Platz ein als Daten in einer Liste. Das Erstellen einer Liste ist speicherintensiv; und das Anhängen an einen Datenrahmen erfordert, dass Pandas einen neuen (größeren) Datenrahmen erstellen, alles kopieren und dann den ursprünglichen Datenrahmen der Garbage-Collection überlassen.
Sie würden es wahrscheinlich viel besser machen, wenn Sie einen Datenrahmen von 60000 Zeilen vorab zuordnen würden (oder wie viele Zeilen Sie insgesamt haben); zB:
data = pd.DataFrame(np.empty((60000,), dtype=[
('x', np.uint8),
('y', np.float64)
]))
und dann für jede Zeile eingefügte Daten für diese Zeile, ohne sich auf dataset
zu verlassen Liste:
data.values[count,:] = rowdata_at_count
Dies ist nicht typsicher, aber ziemlich schnell (da keine Zuweisungen stattfinden), stellen Sie also sicher, dass rowdata_at_count
ist eine Liste, deren Elemente Spaltentypen entsprechen.
BEARBEITEN
Ja, das Anhängen von 100 Zeilen ist meiner Meinung nach wie 100 Verkettungen einer Zeile (da bei jedem Anhängen die Tabelle neu zugewiesen und kopiert werden muss, genau wie bei Verkettung). Die Vorabzuweisung vermeidet sowohl das Anhängen als auch das Zusammenfügen:Die Tabellengröße ändert sich nicht, es muss keine Neuzuweisung und kein Kopieren durchgeführt werden.