He heredado un archivo de datos guardado en el formato Stata .dta. Puedo cargarlo con la función scikits.statsmodels
genfromdta()
. Esto coloca mis datos en una matriz NumPy de 1 dimensión, donde cada entrada es una fila de datos, almacenada en 24 tuplas.Construya eficientemente Pandas DataFrame a partir de la lista grande de tuplas/filas
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)
Tengo curiosidad por saber si hay una forma eficiente de organizar esto en un Pandas DataFrame. Por lo que he leído, construir un DataFrame fila por fila parece bastante ineficiente ... ¿pero cuáles son mis opciones?
He escrito una primera pasada bastante lenta que simplemente lee cada tupla como un DataFrame de una sola fila y lo agrega. Me pregunto si se sabe que otra cosa es mejor.
¿Tiene 'pandas.DataFrame (initialload)' devolver lo que está buscando? – eumiro
Wow. Casi. Intentó algunos nombres de columna, pero puedo arreglarlo fácilmente. Loca. Gracias, nunca lo habría adivinado incluso después de leer los documentos de Pandas. Lo siento, esto fue muy simple. – ely