python - filas - seleccionar una fila de un dataframe pandas
Encuentre valores únicos en un marco de datos de Pandas, independientemente de la ubicación de fila o columna (2)
O puede usar:
df.stack().unique()
Entonces no necesita preocuparse si tiene valores NaN
, ya que están excluidos al hacer el apilamiento.
Tengo un marco de datos de Pandas y quiero encontrar todos los valores únicos en ese marco de datos ... independientemente de la fila / columnas. Si tengo un marco de datos de 10 x 10, y supongo que tienen 84 valores únicos, necesito encontrarlos, no el recuento.
Puedo crear un conjunto y agregar los valores de cada fila iterando sobre las filas del marco de datos. Pero, siento que puede ser ineficiente (no puede justificar eso). ¿Hay una manera eficiente de encontrarlo? ¿Hay una función predefinida?
In [1]: df = DataFrame(np.random.randint(0,10,size=100).reshape(10,10))
In [2]: df
Out[2]:
0 1 2 3 4 5 6 7 8 9
0 2 2 3 2 6 1 9 9 3 3
1 1 2 5 8 5 2 5 0 6 3
2 0 7 0 7 5 5 9 1 0 3
3 5 3 2 3 7 6 8 3 8 4
4 8 0 2 2 3 9 7 1 2 7
5 3 2 8 5 6 4 3 7 0 8
6 4 2 6 5 3 3 4 5 3 2
7 7 6 0 6 6 7 1 7 5 1
8 7 4 3 1 0 6 9 7 7 3
9 5 3 4 5 2 0 8 6 4 7
In [13]: Series(df.values.ravel()).unique()
Out[13]: array([9, 1, 4, 6, 0, 7, 5, 8, 3, 2])
Numerarios únicos, por lo que es más rápido hacerlo de esta manera (y luego ordenarlos si es necesario)
In [14]: df = DataFrame(np.random.randint(0,10,size=10000).reshape(100,100))
In [15]: %timeit Series(df.values.ravel()).unique()
10000 loops, best of 3: 137 ᄉs per loop
In [16]: %timeit np.unique(df.values.ravel())
1000 loops, best of 3: 270 ᄉs per loop