¿Crear eficientemente tablas dinámicas dispersas en pandas?
Estoy trabajando convirtiendo una lista de registros con dos columnas (A y B) en una representación matricial. He estado usando la función pivote dentro de los pandas, pero el resultado termina siendo bastante grande. ¿Los pandas admiten pivotar en un formato escaso? Sé que puedo girarlo y luego convertirlo en una especie de representación dispersa, pero no es tan elegante como me gustaría. Mi objetivo final es usarlo como entrada para un modelo predictivo.
Alternativamente, ¿hay algún tipo de capacidad de pivote escaso fuera de los pandas?
editar: aquí hay un ejemplo de un pivote no disperso
import pandas as pd
frame=pd.DataFrame()
frame['person']=['me','you','him','you','him','me']
frame['thing']=['a','a','b','c','d','d']
frame['count']=[1,1,1,1,1,1]
frame
person thing count
0 me a 1
1 you a 1
2 him b 1
3 you c 1
4 him d 1
5 me d 1
frame.pivot('person','thing')
count
thing a b c d
person ,
him NaN 1 NaN 1
me 1 NaN NaN 1
you 1 NaN 1 NaN
Esto crea una matriz que podría contener todas las combinaciones posibles de personas y cosas, pero no es escasa.
http://docs.scipy.org/doc/scipy/reference/sparse.html
Las matrices dispersas ocupan menos espacio porque pueden implicar cosas como NaN o 0. Si tengo un conjunto de datos muy grande, esta función de pivote puede generar una matriz que debería ser dispersa debido a la gran cantidad de NaNs o 0s. Esperaba poder ahorrar mucho espacio / memoria al generar algo que fuera escaso desde el principio en lugar de crear una matriz densa y luego convertirlo en escaso.