Ich habe einen Datenrahmen, der Antworten von 19717 Personen auf die Wahl der Programmiersprachen durch Multiple-Choice-Fragen aufzeichnet. Die erste Spalte ist natürlich das Geschlecht des Befragten, während der Rest die Auswahl ist, die er ausgewählt hat. Wenn ich also Python auswähle, wird meine Antwort in der Python-Spalte aufgezeichnet und nicht in Bash und umgekehrt.
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
Was ich möchte, ist eine Tabelle, die die Anzahl der Instanzen jeder Kategorie unter Gender
Datensätzen zurückgibt . Wenn also 5000 Männer in Python und 3000 Frauen in JS codiert sind, sollte ich Folgendes bekommen:
Gender Python Bash R JavaScript C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
Ich habe einige der Optionen ausprobiert:
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
Und es ist nicht das, was wie oben beschrieben erforderlich ist. Kann das bei Pandas gemacht werden?
Gender
Index alle Nullen zurückgegeben .Angenommen, Ihr
nan
isNaN
(dh es ist kein String), können wir dies nutzen,count
da es ignoriert wirdNaN
, um die gewünschte Ausgabe zu erhaltenquelle
Sie können
melt
und verwendencrosstab
quelle
Lassen Sie uns zu einer Zeile gehen
quelle