[Python-es] Almacenado de datos

Inigo Aldazabal Mensa inigo_aldazabal en ehu.es
Mar Feb 28 10:12:24 CET 2012


El Martes, 28 de Febrero de 2012 a las 08:36,  Kiko escribió:
> >> On 28/02/2012 1:08, Daπid wrote:
> >>
> >> Hola:
> >>
> >> Estoy haciendo unas simulaciones de Monte Carlo para estudiar la
> >> variación de un parámetro en función de otro u otros dos. En total,
> >> tengo del orden de mil o diez mil datos. ¿Cuál es la forma más
> >> sencilla de almacenarlos y recuperarlos?
> >>
> >> Intentaré explicarme mejor con un ejemplo. Ahora mismo tengo un
> >> fichero de texto plano así:
> >>
> >>   1000 0.363815214388
> >>   1000 0.359016260729
> >>   1151 0.38896507684
> >>   1151 0.388929158895
> >>   1151 0.388769658166
> >>
> >> Donde la primera columna es N y la segunda, C. Quiero, por ejemplo,
> >> poder obtener la media de cada valor de C para cada N. Por supuesto,
> >> programarlo a mano es fácil, pero estoy seguro de que hay algo mejor.


mmm usar una base de datos para mil o diez mil datos de este tipo me parece 
exagerado. La forma *mas sencilla* para almacenarlos y recuperarlos me 
sigue pareciendo un archivo ascii. Como mucho reordenando para facilitar 
el parseo tipo

1000 0.363815214388 0.359016260729
1151 0.38896507684 0.388929158895 0.388769658166

o 

1000  1150 ...
0.363815214388 0.359016260729
0.38896507684 0.388929158895 0.388769658166

de forma que la primera fila te da el N de la fila N.

De esta forma podrías cargarlos directamente del fichero a una matriz de 
numpy por ejemplo con data=numpy.loadtxt[1], donde data[0][i] te daría el 
N de la fila i+1.

Luego podrías hacer estadística sobre las filas también directamente con 
las rutinas de estadística de numpy[2]. Ojo si tienes distinto número de 
datos por fila, tendrías que rellenarlos con numpy.NaN o algo así, o usar 
genfromtxt, pero cuidado con el significado de "missing values" en él.

Iñigo

[1]http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
[2]http://docs.scipy.org/doc/numpy/reference/routines.statistics.html





> >>
> >>
> >> ¡Gracias!
> >>
> >> NetCDF/HDF. Supuestamente, con pytables [1] el acceso podría ser más
>
> rápido que usando una BBDD y el espacio que ocupa también es inferior o
> debería serlo [2].
>
> Como dijo Lasizoillo en algún otro hilo de alguna lista, podría verse
> como una BBDD NoSQL.
>
> [1] http://www.pytables.org/moin
> [2] http://pytables.org/EuroSciPy2010/HighlyEfficientComputations.pdf




Más información sobre la lista de distribución Python-es