Tengo un marco de datos que registra las respuestas de la elección de lenguajes de programación de 19717 personas a través de preguntas de opción múltiple. La primera columna es, por supuesto, el género del encuestado, mientras que el resto son las opciones que eligieron. Y, por lo tanto, si elijo Python, mi respuesta se registrará en la columna de Python y no en bash y viceversa.
ID Gender Python Bash R JavaScript C++
0 Male Python nan nan JavaScript nan
1 Female nan nan R JavaScript C++
2 Prefer not to say Python Bash nan nan nan
3 Male nan nan nan nan nan
Lo que quiero es una tabla que devuelva el número de instancias de cada categoría en los Gender
registros. Por lo tanto, si 5000 hombres codificaron en Python y 3000 mujeres en JS, entonces debería obtener esto:
Gender Python Bash R JavaScript C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
He probado algunas de las opciones:
df.iloc[:, [*range(0, 13)]].stack().value_counts()
Male 16138
Python 12841
SQL 6532
R 4588
Female 3212
Java 2267
C++ 2256
Javascript 2174
Bash 2037
C 1672
MATLAB 1516
Other 1148
TypeScript 389
Prefer not to say 318
None 83
Prefer to self-describe 49
dtype: int64
Y no es lo que se requiere como se describe anteriormente. ¿Se puede hacer esto en pandas?
Gender
índice.Supongamos que su
nan
esNaN
( es decir, no es una cadena), podemos aprovecharcount
porque ignoraNaN
para obtener la salida deseadafuente
Puedes
melt
y usascrosstab
fuente
Pasemos a una línea
fuente