90

私は kaggle.com の Titanic データ セット (Titanic のすべての人物に関するデータ) を試していて、次のような性別の内訳を見つけました。

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

より良い(より慣用的な)方法はありますか?

4

4 に答える 4

202

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

次のように入力します。

df.sex.value_counts(normalize=True)

これにより、目的の出力が正確に得られます。

value_counts() は NA 値を除外するため、数値の合計が 1 にならない場合があることに注意して ください DataFrame の列は Series です)

于 2014-06-11T16:20:07.420 に答える
19

カウントをパーセンテージとマージする場合は、次を使用できます。

c = df.sex.value_counts(dropna=False)
p = df.sex.value_counts(dropna=False, normalize=True)
pd.concat([c,p], axis=1, keys=['counts', '%'])
于 2018-12-08T03:53:20.007 に答える
15

私はおそらくこれを一度に行うと思います(部門をインポートせずに):

1. * df.sex.value_counts() / len(df.sex)

または、パーセンテージが必要であることを思い出してください。

100. * df.sex.value_counts() / len(df.sex)

本当に多くのこと、あなたのやり方もうまく見えます。

于 2013-01-12T05:52:47.133 に答える