Python 熊猫获得groupby的%价值
我做了一个熊猫团员Python 熊猫获得groupby的%价值,python,pandas,percentage,Python,Pandas,Percentage,我做了一个熊猫团员 grouped = df.groupby(['name','type'])['count'].count().reset_index() 看起来像这样: name type count x a 32 x b 1111 x c 4214 我需要做的是获取这个并生成百分比,所以我会得到这样的结果(我意识到百分比是不正确的): 我能想到一些可能有意义的伪代码,但我还没能得到任何真正有效的东西 差不多 def g
grouped = df.groupby(['name','type'])['count'].count().reset_index()
看起来像这样:
name type count
x a 32
x b 1111
x c 4214
我需要做的是获取这个并生成百分比,所以我会得到这样的结果(我意识到百分比是不正确的):
我能想到一些可能有意义的伪代码,但我还没能得到任何真正有效的东西
差不多
def getPercentage(df):
for name in df:
total = 0
where df['name'] = name:
total = total + df['count']
type_percent = (df['type'] / total) * 100
return type_percent
df.apply(getPercentage)
有没有一个好方法可以让熊猫做到这一点?试试:
df.loc[:,'grouped'] = df.groupby(['name','type'])['count'].count() / df.groupby(['name','type'])['count'].sum()
任何序列都可以通过如下方式传入参数“normalize=False”进行规范化(这比按计数进行偏差更简洁):
Series.value\u计数(normalize=True,sort=True,升序=False)
因此,它将类似于(这是一个系列,而不是一个数据帧):
或者,如果您使用groupby,您可以简单地执行以下操作:
total = grouped['count'].sum()
grouped['count'] = grouped['count']/total * 100
使用
交叉表
+规范化
pd.crosstab(df.name,df.type,normalize='index').stack().reset_index()
你能提供一个简短的输入样本和给定样本的预期输出吗?
total = grouped['count'].sum()
grouped['count'] = grouped['count']/total * 100
pd.crosstab(df.name,df.type,normalize='index').stack().reset_index()