python - example - Construya eficientemente Pandas DataFrame a partir de una gran lista de tuplas/filas
df itertuples() example (2)
La versión 0.12 de pandas en adelante debe admitir la carga del formato Stata directamente ( Reference ).
De la documentación:
La función de nivel superior read_stata leerá un archivo de formato dta y devolverá un DataFrame: la clase StataReader leerá el encabezado del archivo dta dado en la inicialización. Su método data () leerá las observaciones, convirtiéndolas en un DataFrame que se devuelve:
pd.read_stata(''stata.dta'')
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 1-dimensional, donde cada entrada es una fila de datos, almacenada en un 24-tuple.
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, 19901231.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 si hay una manera eficiente de organizar esto en un DataFrame de Pandas. Por lo que he leído, crear un DataFrame fila por fila parece bastante ineficiente ... pero ¿cuáles son mis opciones?
He escrito un primer paso bastante lento que solo lee cada tupla como un DataFrame de una sola fila y lo agrega. Solo me pregunto si algo se sabe que es mejor.
pandas.DataFrame(initialload, columns=list_of_column_names)