web-dev-qa-db-ja.com

Pandas列の値による割合

Df列の特定の値の割合を取得したい。 (col1、col2、col3、gender)性別の列にMまたはFの値があるdfがあるとします。dfのMとFの値の割合を取得します。

これを試してみましたが、これによりMおよびFインスタンスの数がわかりますが、これらをdfの値の総数に対する割合として求めています。

df.groupby('gender').size()

誰か助けてもらえますか?

17
SANM2009

value_countsnormalize=Trueを使用:

df['gender'].value_counts(normalize=True) * 100
35
cs95

M列以外のFgenderの値を調べる必要がない場合は、次のようにvalue_counts()count()を使用してみてください。

df = pd.DataFrame({'gender':['M','M','F', 'F', 'F']})
# Percentage calculation
(df['gender'].value_counts()/df['gender'].count())*100

結果:

F    60.0
M    40.0
Name: gender, dtype: float64

または、groupbyを使用します。

(df.groupby('gender').size()/df['gender'].count())*100
5
student

ヘンクの不均衡/不均衡に対する目標変動の割合を見つける。

g = data[Target_col_Y]
df = pd.concat([g.value_counts(),              
g.value_counts(normalize=True).mul(100)],axis=1,keys=('counts','percentage'))

print (df)

割合をカウント

0 36548 88.734583

1 4640 11.265417

ここで列の割合の最大値を見つけ、そこに#imbalanceがどれくらいあるかを確認します

df1=df.diff(periods=1,axis=0)
difvalue=df1[[list(df1.columns)[-1]]].max()
0
Ayyasamy

200個の値があり、そのうち120個がM、80個がFに分類されているとします

1)

df['gender'].value_counts()

 output:

 M=120
 F=80

2)

df['gender'].value_counts(Normalize=True)

  output:

  M=0.60
  F=0.40

df['gender'].value_counts(Normalize=True)*100 #will convert output to percentages

  output:

  M=60
  F=40
0
Rohith Gunda