[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