パーセント値を表す新しい列を作成するために、選択するデータフレーム列の値をループするのに失敗しています。再現可能な例:パンダ:パーセント値の多数の列を計算します
data = {'Respondents': [90, 43, 89, '89', '67', '88', '73', '78', '62', '101'],
'answer_1': [51, 15, 15, 61, 16, 14, 15, 1, 0, 16],
'answer_2': [11, 12, 14, 40, 36, 78, 12, 0, 26, 78],
'answer_3': [3, 8, 4, 0, 2, 7, 10, 11, 6, 7]}
df = pd.DataFrame(data)
df
Respondents answer_1 answer_2 answer_3
0 90 51 11 3
1 43 15 12 8
2 89 15 14 4
3 89 61 35 0
4 67 16 36 2
5 88 14 78 7
6 73 15 12 10
7 78 1 0 11
8 62 0 26 6
9 101 16 78 7
目的は、回答者の合計に対する回答の各列の割合を計算することです。たとえば、新しい列の場合 - answer_1_perc
としましょう - 最初の値は46です(51は46の90の90なので)、次の値は35(15は43の35%)になります。次に、answer_2_perc
とanswer_3_perc
の列があります。
私は頭の回転が次のコードの非常に多くの繰り返しを書いています。
for columns in df.iloc[:, 1:4]:
for i in columns:
i_name = 'percentage_' + str(columns)
i_group = ([i]/df['Respondents'] * 100)
df[i_name] = i_group
これを行うにはどのような方法が最適ですか?私の実際のデータは、この例に示した3つではなく25の回答カラムを持っているので、反復的な方法を使用する必要があります。あなたはほとんどそれを持っていた