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.