为了一个框架
import pandas as pd
df = pd.DataFrame(
{'group': list("AADABCBCCCD"),
'Values': [1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0]})
字符串
我试图绘制一个条形图,显示A, B, C, D
取零(或一)的次数百分比。
这是有效的:
tempdf = df.groupby(['group', 'Values']).Values.count().unstack().fillna(0)
tempdf['total'] = df['group'].value_counts()
tempdf['percent'] = tempdf[0] / tempdf['total'] * 100
tempdf.reset_index(inplace=True)
print(tempdf)
sns.barplot(x='group', y='percent', data=tempdf)
型
如果它只是绘制平均值,我可以简单地在df
上绘制sns.barplot
,而不是tempdf。如果我对绘制百分比感兴趣,我不知道如何优雅地做到这一点。
5条答案
按热度按时间xzabzqsa1#
您可以将Pandas与seaborn结合使用,使其更容易:
字符串
的数据
1szpjjfi2#
您可以在
sns.barplot
estimator
中使用自己的函数,从docs开始:estimator:可调用,Mapvector -> scalar,可选
统计函数用于在每个分类箱内进行估计。
在这种情况下,你可以将函数定义为lambda:
字符串
x1c 0d1x的数据
umuewwlo3#
您可以按照以下步骤操作,以便在图中的条形图顶部看到计数和百分比。
with_hue函数将在条形图上绘制百分比,如果您在图中有'hue'参数。它将实际图形,特征,特征中的Number_of_categories和hue_categories(色调特征中的类别数)作为参数。
without_hue函数将在条形图上绘制百分比,如果你有一个正常的图。它将实际的图形和特征作为参数。
字符串
的数据
的
czq61nw14#
您可以使用library Dexplot,它能够返回分类变量的相对频率。它具有与Seaborn类似的API。将您想要获取相对频率的列传递给
count
函数。如果您想要将其细分为另一列,请使用split
参数进行操作。以下返回原始计数。字符串
的数据
要获取相对频率,请将
normalize
参数设置为要归一化的列。使用True
对总计数进行归一化。型
的
对
'Values'
列进行归一化将生成以下图形,其中所有“0”条的总和为1。型
的
5f0d552i5#
未来的我:
Seaborn >=0.13.0通过 stat 参数提供了内置功能:
字符串
注意:如果您想要不同颜色的不同类别的细分,
hue
是可选的