Python3.7 Pandas1.0.1 trama de datos - Calcular la suma de la columna dentro de un rango y reagruparse como una fila nueva?

Visiony10:

Mi primera pregunta en StackOverflow. Por favor se bueno conmigo :)

Hola, acabo de empezar un pequeño proyecto en la ciencia de datos y que quería crear en última instancia, un gráfico circular a través de matplot que muestra el porcentaje del modelo de dispositivo en el tráfico general del sitio (es decir, 30% iPhone, el 20% del iPad, el 10% de Mac, etc.) .

useragent count
iPhone    11298
Mac        3206
iPad        627
SM-N960F    433
SM-N950F    430
...         ...
K330          1
K220          1
SM-J737P      1
SM-J737T1     1
0PFJ50        1
[1991 rows x 2 columns]

A partir de la pantalla, hay 1.991 registros. Estoy preparando los datos para el trazado y quiero sólo para mostrar los 5 AgentesDeUsuario (superior 4 siendo los dispositivos y los 5 primeros sean catalogados como los demás y la suma de los elementos restantes).

El resultado esperado es la siguiente:

useragent count
iPhone    11298
Mac        3206
iPad        627
SM-N960F    433
Others     9000

Muchas gracias!

Jezreel:

Utilizar:

#first sorting data if necessary
df1 = df.sort_values('count', ascending=False)

#then get top 4 rows
df2 = df1.head(4)
#filter column `count` for all values after 4 rows
summed = df1.loc[df1.index[4:], 'count'].sum()

#create DataFrame by another counts
df3 = pd.DataFrame({'useragent':['Other'], 'count':[summed]})

#join together
df4 = pd.concat([df2, df3], sort=False, ignore_index=True)
print (df4)
  useragent  count
0    iPhone  11298
1       Mac   3206
2      iPad    627
3  SM-N960F    433
4     Other    435

EDITAR:

#filter by threshold
mask = df['count'] > 500
#filtered rows by boolean indexing
df2 = df[mask]
#inverted mask - sum by count
summed = df.loc[~mask, 'count'].sum()
#same like above
df3 = pd.DataFrame({'useragent':['Other'], 'count':[summed]})

df5 = pd.concat([df2, df3], sort=False, ignore_index=True)
print (df5)
  useragent  count
0    iPhone  11298
1       Mac   3206
2      iPad    627
3     Other    868

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298838&siteId=1
Recomendado
Clasificación