我有这个数据框:
列:
Countries
IsVertical
示例:
USA FALSE
USA FALSE
Poland FALSE
Italy TRUE
Italy TRUE
我想创建一个条形图,每个国家/地区有2列(1表示True,1表示false - 来自IsVertical),我需要y轴作为国家/地区出现的标准化次数。
我尝试过这样的事情:
data.groupby("Country").count().plot(kind="bar")
问题是它没有给我2个IsVertical foreach国家的酒吧,并且它只计算IsVertical出现的次数并且不计算IsVertical的总数
解决方案:
result = data.groupby('Country').apply(
lambda group: (group.IsVertical.sum() / float(data.IsVertical.sum()))
).to_frame('Vertical')
result.plot(kind='bar')
答案 0 :(得分:1)
result = df.groupby('Countries').apply(
lambda group: (group.IsVertical == 'TRUE').sum() /
float(group.IsVertical.count())
).to_frame('Vertical')
result['NotVertical'] = 1 - result.Vertical
>>> result
Vertical NotVertical
Countries
Italy 1 0
Poland 0 1
USA 0 1
result.plot(kind='bar')