Eu tenho um quadro de dados que registra respostas da escolha de 19717 pessoas das linguagens de programação por meio de perguntas de múltipla escolha. A primeira coluna é, obviamente, o sexo do entrevistado, enquanto o restante são as escolhas que eles escolheram. E, portanto, se eu escolher o Python, minha resposta será registrada na coluna Python, e não no bash e vice-versa.
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
O que eu quero é uma tabela que retorne o número de instâncias de cada categoria nos Gender
registros. Portanto, se 5000 homens codificados em Python e 3000 mulheres em JS, então eu deveria obter o seguinte:
Gender Python Bash R JavaScript C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
Eu tentei algumas das opções:
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
E não é o necessário, conforme descrito acima. Isso pode ser feito em pandas?
Gender
índice.Suponha que você
nan
éNaN
(ou seja, não é uma string), podemos tirar vantagemcount
porque ignoraNaN
para obter a saída desejadafonte
Você pode
melt
e usarcrosstab
fonte
Vamos avançar para uma linha
fonte