English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ejemplo de operaciones de datos dispersos de Pandas
Cuando se omite el valor específico (NaN /Los valores faltantes, aunque se puede elegir cualquier valor, se 'comprimirán' cuando se coincida con cualquier dato. Un objeto SparseIndex especial rastrea las ubicaciones donde los datos están 'dispersos'. En un ejemplo, esto tendrá más sentido. Todas las estructuras de datos estándar de Pandas aplican el método to_sparse:
import pandas as pd import numpy as np ts = pd.Series(np.random.randn(10)) ts[2:-2] = np.nan sts = ts.to_sparse() print sts
Los resultados de la ejecución son los siguientes:
0 -0.810497 1 -1.419954 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 0.439240 9 -1.095910 dtype: float64 BlockIndex Ubicaciones de bloque: array([0, 8], dtype=int32) Longitudes de bloque: array([2, 2], dtype=int32)
Por razones de eficiencia de memoria, existen objetos dispersos.
Ahora supongamos que tiene un gran DataFrame NA y ejecuta el siguiente código-
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10000, 4)) df.ix[:9998] = np.nan sdf = df.to_sparse() print sdf.density
Los resultados de la ejecución son los siguientes:
0.0001
Se puede convertir cualquier objeto disperso a la forma densa estándar llamando a to_dense
import pandas as pd import numpy as np ts = pd.Series(np.random.randn(10)) ts[2:-2] = np.nan sts = ts.to_sparse() print sts.to_dense()
Los resultados de la ejecución son los siguientes:
0 -0.810497 1 -1.419954 2 NaN 3 NaN 4 NaN 5 NaN 6 NaN 7 NaN 8 0.439240 9 -1.095910 dtype: float64
Los datos dispersos deben tener el mismo dtype que su representación densa. Actualmente, se admite float64,int64Y booldtypes. Dependiendo del dtype original, el valor predeterminado de fill_value cambia-
float64 − np.nan int64 − 0 bool − False
A continuación, ejecutamos el siguiente código para entenderlos:
import pandas as pd import numpy as np s = pd.Series([1, np.nan, np.nan]) print s s.to_sparse() print s
Los resultados de la ejecución son los siguientes:
0 1.0 1 NaN 2 NaN dtype: float64 0 1.0 1 NaN 2 NaN dtype: float64