Pandas按列中的值百分比

时间:2018-05-28 02:42:58

标签: python pandas dataframe percentage

我想在df列中获取特定值的百分比。假设我有一个df(col1,col2,col3,性别)性别列的值为M或F.我想得到df中M和F值的百分比。

我试过这个,它给了我M和F实例的数量,但我希望这些是df中值总数的百分比。

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

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:26)

value_countsnormalize=True

一起使用
df['gender'].value_counts(normalize=True) * 100

答案 1 :(得分:3)

如果您不需要查看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

答案 2 :(得分:1)

让我们说有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

3)

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

  output:

  M=60
  F=40

答案 3 :(得分:0)

确定目标变化对chenck不平衡/不平衡的百分比。

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()

答案 4 :(得分:0)

import scipy.fftpack
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd

Y = pd.read_excel(r'/Users/0000/Documents/0000/data/accelData1.xls')


y1 = Y['X'].values
y2 = Y['Y'].values
y3 = Y['Z'].values

y = y1 + y2 +y3

N = 1280
T = 0.01
x = np.linspace(0.0, N*T, N)

yf = np.abs(scipy.fft(y))
xf = np.linspace(0.0, 1.0/(2.0*T), N//2)


plt.plot(yf[0:N//2], xf, label = 'signal')