J'ai une base de données qui enregistre les réponses du choix des langues de programmation par 19717 personnes à travers des questions à choix multiples. La première colonne est bien sûr le sexe du répondant tandis que les autres sont les choix qu'ils ont choisis. Et donc si je choisis Python, ma réponse sera enregistrée dans la colonne Python et non bash et 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
Ce que je veux, c'est un tableau qui renvoie le nombre d'instances de chaque catégorie sous les Gender
enregistrements. Par conséquent, si 5000 hommes codés en Python et 3000 femmes en JS, je devrais obtenir ceci:
Gender Python Bash R JavaScript C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
J'ai essayé certaines des options:
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
Et ce n'est pas ce qui est requis comme décrit ci-dessus. Cela peut-il être fait chez les pandas?
Gender
index.Supposons que votre
nan
estNaN
(c'est-à-dire qu'il ne s'agit pas d'une chaîne), nous pouvons en profitercount
car il l'ignoreNaN
pour obtenir la sortie souhaitéela source
Vous pouvez
melt
et utilisezcrosstab
la source
Poussons à une seule ligne
la source