Encuentre los 5 valores principales basados en la suma de la última columna y la última fila

almo:

Me gustaría encontrar los 5 valores más altos y más bajos en función de la suma de la última columna y las últimas filas de un conjunto de tablas que tiene más de 20,000 filas y 200 columnas. (Es un problema de múltiples etiquetas). La tabla original no tiene suma de columnas y filas. Agregué los valores de la suma por mí mismo). Vea el conjunto de datos de juguetes aquí:

 import pandas as pd

 data = {'index': ['0001 ','0002 ','0003 ','0004 ','0005 ','0006 
    ','0007','0008','0009','0010','0011'],
    'factor1': [0,1,0,1,0,0,1,0,0,0,1],
    'factor2': [1,0,0,1,0,0,0,1,1,1,1], 
    'factor3': [1,1,1,1,0,0,0,1,1,0,1],
    'factor4': [0,1,1,1,0,0,1,1,0,0,1],
    'factor5': [1,1,1,1,0,0,0,1,1,1,1], 
    'factor6': [1,0,0,0,0,0,0,1,1,1,1],
    'factor7': [0,1,1,1,1,0,1,1,0,0,1],
    'factor8': [1,1,1,1,1,1,0,1,1,1,1], 
    'factor9': [1,0,0,0,0,0,0,0,0,0,0],
    }

    df = pd.DataFrame(data,columns=['index','factor1','factor2','factor3','factor4','factor5','factor6','factor7','factor8','factor9'])
    count_row = df.count(axis=1)
    df

Aquí está la tabla generada:

index   factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9
0   0001    0     1       1        0      1      1       0       1        1
1   0002    1     0       1        1      1      0       1       1        0
2   0003    0     0       1        1      1      0       1       1        0
3   0004    1     1       1        1      1      0       1       1        0
4   0005    0     0       0        0      0      0       1       1        0
5   0006    0     0       0        0      0      0       0       1        0 
6   0007    1     0       0        1      0      0       1       0        0
7   0008    0     1       1        1      1      1       1       1        0
8   0009    0     1       1        0      1      1       0       1        0
9   0010    0     1       0        0      1      1       0       1        0
10  0011    1     1       1        1      1      1       1       1        0

Usando este código, obtuve la suma de cada columna y cada fila

classSum=df.sum(axis=0) 
df["sum"] =df.sum(axis=1)
df =df.append(classSum,ignore_index=True)
rowSum=df.sum(axis=1)
df.at[11,'index']='Nan'
df

Tabla con sumas en columnas y filas:

    index   factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9 sum
  0  0001     0        1       1       0       1       1       0       1       1    6.0
  1  0002     1        0       1       1       1       0       1       1       0    6.0
  2  0003     0        0       1       1       1       0       1       1       0    5.0
  3  0004     1        1       1       1       1       0       1       1       0    7.0
  4  0005     0        0       0       0       0       0       1       1       0    2.0
  5  0006     0        0       0       0       0       0       0       1       0    1.0
  6  0007     1        0       0       1       0       0       1       0       0    3.0
  7  0008     0        1       1       1       1       1       1       1       0    7.0
  8  0009     0        1       1       0       1       1       0       1       0    5.0
  9  0010     0        1       0       0       1       1       0       1       0    4.0
  10 0011     1        1       1       1       1       1       1       1       0    8.0
  11 Nan      4        6       7       6       8       5       7       10      1    NaN

Nota: la fila 11 es la fila de suma

Me gustaría tener un resultado como este:

Basado en filas: -La salida de los cinco valores principales se ve así:

  factor 8 :10
  factor 5 : 8 
  factor 3 : 7
  factor 7 : 7
  factor 4 : 6

Basado en columnas:

-Los 5 valores principales de salida se ven así:

 0011 :8
 0008 :7
 0004 :7
 0001 :6
 0002 :6

Hay los mismos valores en la suma. Simplemente ignóralo.

Entonces, ¿cómo puedo hacerlo? ¡Gracias!

Erfan:

Comenzando con sus datos sin procesar, por lo que sin las columnas de suma, podemos usar DataFrame.sumpara obtener la suma por columna o fila ( axis=1), luego encadenamos el resultado Series.nlargestpara obtener los 5 primeros.

df = df.set_index('index')

Las 5 columnas principales:

df.sum().nlargest(5)

factor8    10
factor5     8
factor3     7
factor7     7
factor2     6
dtype: int64

5 filas superiores:

df.sum(axis=1).nlargest(5)

index
0011     8
0004     7
0008     7
0001     6
0002     6
dtype: int64

Si realmente desea un diccionario, encadene las soluciones con to_dict:

df.sum().nlargest(5).to_dict()

{'factor8': 10, 'factor5': 8, 'factor3': 7, 'factor7': 7, 'factor2': 6}

Para trazar su resultado, use DataFrame.plot.bar:

df.sum().nlargest(5).plot.bar(figsize=(12,8))

gráfico de barras

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Encuentre la última fila coincidente y verifique si la siguiente fila de la columna está vacía

Encuentre la última fila coincidente y verifique si la siguiente fila de la columna está vacía

Obtener la suma de los valores de la última fila n por identificación de grupo

Encuentre la primera y última columna que no sea cero en cada fila de un marco de datos de pandas

Seleccionar la suma de la primera y la última fila en la tabla relacionada

Reemplace la última fila de la columna con la última fila de otra columna en R

¿La última fila, la última columna obtienen valores extraños?

Encuentre el índice de la última ocurrencia verdadera en una columna por fila

Encuentre la última aparición de valores únicos en una columna y modifique el valor en R

Seleccione la última fila y muévala a la última columna de la fila anterior

Seleccione la última fila y muévala a la última columna de la fila anterior

Apliqué sum () en un groupby y quiero ordenar los valores de la última columna

Recorra hasta la última fila y actualice los valores de celda cuando cambie la fila

Encuentre la suma de los valores en una columna mientras suma <1000 en R

Encuentre los valores mínimos de la columna df basados en otra columna

Encuentre los valores mínimos de la columna df basados en otra columna

Copie los valores de 1 hoja y establezca los valores en la última fila de otra hoja

Cómo agrupar el marco de datos por id y poner los valores del mismo id en una lista y la última fila como columna

Bucle para decidir la primera y la última fila de entradas diferentes en la columna A

Agregar hipervínculo en la última fila de la columna

cómo seleccionar los valores de la última fila de una columna particular sql android

CARGAR ARCHIVO, salida incorrecta en la última fila y columna

Copie una columna de datos desde la segunda fila hasta la última fila con datos y péguela como última fila en una columna en otra hoja VBA

Suma de grupo y condición SQL en la última fila

Encuentre la fila / columna de todos los valores máximos en cada fila de una matriz

R: elimina la última fila y convierte la fila en la columna en marcos de datos dentro de una lista

Sumar valores basados en el valor de la fila y el encabezado de la columna

Los pandas asignan el valor de la suma groupby a la última fila de la tabla original

Los pandas asignan el valor de la suma groupby a la última fila de la tabla original