1. ホーム
  2. python

[解決済み] ある値の頻度を表すパンダシリーズがある場合、その頻度をパーセントに変換するにはどうすればよいですか?

2023-03-20 21:41:12

質問

kaggle.comのタイタニック号のデータセット(タイタニック号に乗ったすべての人のデータ)を使って実験していたところ、このような性別の内訳を思いつきました。

df = pd.DataFrame({'sex': ['male'] * 577 + ['female'] * 314})
gender = df.sex.value_counts()
gender

male   577
female 314 

タイタニック号での各性別の割合を調べたいのですが。

私のやり方は少し理想的ではありません。

from __future__ import division
pcts = gender / gender.sum()
pcts

male      0.647587
female    0.352413

もっと良い(慣用的な)方法はないのでしょうか?

どのように解決するのですか?

この関数はpandasに実装されており、実はvalue_counts()の中にも実装されています。計算する必要はありません :)

を入力するだけです。

df.sex.value_counts(normalize=True)

で、まさに希望通りの出力が得られます。

value_counts()はNA値を除外するため、数値の合計が1にならない可能性があることに注意してください。 ここを参照してください。 http://pandas-docs.github.io/pandas-docs-travis/generated/pandas.Series.value_counts.html (DataFrameのカラムはSeriesです)