Ich habe eine Datendatei geerbt im Stata .dta-Format gespeichert. Ich kann es mit scikits.statsmodels
genfromdta()
Funktion laden. Dies bringt meine Daten in ein 1-dimensionales NumPy-Array, wobei jeder Eintrag eine Zeile von Daten ist, die in einem 24-Tupel gespeichert sind.Erstellen Sie effizient Pandas DataFrame aus einer großen Liste von Tupeln/Zeilen
In [2]: st_time = time.time(); initialload = sm.iolib.genfromdta("/home/myfile.dta"); ed_time = time.time(); print (ed_time - st_time)
666.523324013
In [3]: type(initialload)
Out[3]: numpy.ndarray
In [4]: initialload.shape
Out[4]: (4809584,)
In [5]: initialload[0]
Out[5]: (19901130.0, 289.0, 1990.0, 12.0, 199.0, 18.0, 40301000.0, 'GB', 18242.0, -2.368063, 1.0, 1.7783716290878204, 4379.355, 66.17669677734375, -999.0, -999.0, -0.60000002, -999.0, -999.0, -999.0, -999.0, -999.0, 0.2, 371.0)
Ich bin gespannt, ob es eine effiziente Möglichkeit gibt, dies in einen Pandas DataFrame zu arrangieren. Nach dem, was ich gelesen habe, scheint der Aufbau eines DataFrame Zeile für Zeile ziemlich ineffizient zu sein ... aber was sind meine Optionen?
Ich habe einen ziemlich langsamen First-Pass geschrieben, der jedes Tupel als Single-Row-Datenframe liest und anfügt. Ich frage mich nur, ob etwas anderes als besser bekannt ist.
Hat 'pandas.DataFrame (initialload)' zurückgeben, was Sie suchen? – eumiro
Wow. Fast. Es hat ein paar Spaltennamen vermasselt, aber das kann ich leicht beheben. Verrückt. Danke, das hätte ich mir auch nach dem Lesen der Pandas-Dokumente nie erraten. Entschuldigung, das war so einfach. – ely