Saya memiliki kerangka data yang mencatat respons dari pilihan bahasa pemrograman 19717 orang melalui pertanyaan pilihan ganda. Kolom pertama tentu saja jenis kelamin responden sementara sisanya adalah pilihan yang mereka pilih. Dan karenanya jika saya memilih Python maka respons saya akan dicatat dalam kolom Python dan bukan bash dan sebaliknya.
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
Yang saya inginkan adalah tabel yang mengembalikan jumlah instance dari masing-masing kategori di bawah Gender
catatan. Oleh karena itu jika 5000 pria berkode Python dan 3000 wanita di JS, maka saya harus mendapatkan ini:
Gender Python Bash R JavaScript C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
Saya sudah mencoba beberapa opsi:
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
Dan bukan itu yang diperlukan seperti dijelaskan di atas. Bisakah ini dilakukan dalam panda?
Gender
indeks.Asumsikan Anda
nan
yaituNaN
(yaitu tidak string), kita dapat mengambil keuntungan daricount
karena mengabaikanNaN
untuk mendapatkan output yang diinginkansumber
Anda bisa
melt
dan menggunakannyacrosstab
sumber
Mari kita dorong ke satu baris
sumber