Saltar al contenido

¿Cómo hacer una tabulación cruzada de pandas con porcentajes?

Intenta comprender el código correctamente previamente a utilizarlo a tu trabajo y si tdeseas aportar algo puedes dejarlo en la sección de comentarios.

Solución:

Desde Pandas 0.18.1 en adelante, hay un normalize opción:

In [1]: pd.crosstab(df.A,df.B, normalize='index')
Out[1]:

B              A           B           C
A           
one     0.333333    0.333333    0.333333
three   0.333333    0.333333    0.333333
two     0.333333    0.333333    0.333333

Donde puede normalizar a través de cualquiera all, index (filas), o columns.

Más detalles están disponibles en la documentación.

pd.crosstab(df.A, df.B).apply(lambda r: r/r.sum(), axis=1)

Básicamente solo tienes la función que hace row/row.sum()y usas apply con axis=1 para aplicarlo por hilera.

(Si hace esto en Python 2, debe usar from __future__ import division para asegurarse de que la división siempre devuelva un flotante).

Podemos mostrarlo como porcentajes multiplicando por 100:

pd.crosstab(df.A,df.B, normalize='index')
    .round(4)*100

B          A      B      C
A                         
one    33.33  33.33  33.33
three  33.33  33.33  33.33
two    33.33  33.33  33.33

Donde he redondeado por conveniencia.

Te mostramos las comentarios y valoraciones de los usuarios

Finalizando este artículo puedes encontrar las crónicas de otros sys admins, tú igualmente tienes el poder mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *