在Python中使用pandas groupby和numpy where
我是python的新手 我需要在np.where()下使用pd.groupby()函数 以下是我的数据集的屏幕截图: 以下是我的代码:在Python中使用pandas groupby和numpy where,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我是python的新手 我需要在np.where()下使用pd.groupby()函数 以下是我的数据集的屏幕截图: 以下是我的代码: df = pd.read_csv("/Users/gautam/Desktop/data.csv") df.head() grouped = df.groupby('Occupation')['Emp_Code'].count() #Calculating Count of Employees by Occupation np.where(df['Gend
df = pd.read_csv("/Users/gautam/Desktop/data.csv")
df.head()
grouped = df.groupby('Occupation')['Emp_Code'].count() #Calculating Count of Employees by Occupation
np.where(df['Gender']=='M', df.groupby('Occupation')['Emp_Code'].count()/grouped*100,0)
基本上我需要计算每个职业的男性比例
非常感谢您的帮助。使用布尔掩码的平均值,因此获得与原始大小相同的系列
,以便可以传递到np。其中
用于新列:
df = pd.DataFrame({
'Occupation':list('dddeee'),
'Emp_Code':list('aabbcc'),
'Gender':list('MFMFMF')
})
print (df)
Occupation Emp_Code Gender
0 d a M
1 d a F
2 d b M
3 e b F
4 e c M
5 e c F
m = df['Gender'].eq('M')
df['new'] = np.where(m, m.groupby(df['Occupation']).transform('mean').mul(100), 0)
print (df)
Occupation Emp_Code Gender new
0 d a M 66.666667
1 d a F 0.000000
2 d b M 66.666667
3 e b F 0.000000
4 e c M 33.333333
5 e c F 0.000000
如果希望新的数据帧由normlize值填充,一种可能的解决方案是使用andnormalize
参数:
df2 = pd.crosstab(df['Occupation'], df['Gender'],normalize='index')
print (df2)
Gender F M
Occupation
d 0.333333 0.666667
e 0.666667 0.333333
将数据添加为文本,而不是图片。
df['Gender'].eq('M').gropuby(df['occulation']).mean()
df.groupby('occulation')['Gender'])。值计数(normalize=True)
相关:到底是什么问题?您编写的代码需要在np.where()下使用pd.groupby()函数,但您的代码似乎已经在这样做了。