Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用pandas groupby和numpy where_Python_Pandas_Numpy_Dataframe - Fatal编程技术网

在Python中使用pandas groupby和numpy where

在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

我是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['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值填充,一种可能的解决方案是使用and
normalize
参数:

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()函数,但您的代码似乎已经在这样做了。