首页 > 解决方案 > 从布尔值中获取条形图?

问题描述

我面临一个问题。这是我的数据框:

Students     Subject       Mark
1            M F           7 4 3 7
2            I             5 6 
3            M F I S       2 3 0 
4            M             2 2 
5            F M I         5 1
6            I M F         6 2 3
7            I M           7

我想为尊重以下四个条件的学生绘制一个带有四个“条”的条形图:

起初我被卡住了,但有人建议我这样做:

df["Subject"].str.count("\w+") >= 3

df["Mark"].str.count("3") >= 1

(df["Subject"].str.count("\w+") >= 3) & (df["Mark"].str.count("3") >= 1)

我得到的是三个布尔列,但我不知道如何从这里开始绘制条形图。我正在考虑计算每列中的值,但我似乎没有找到这样做的方法,因为看起来我无法应用于value_counts()布尔列。

如果您有任何想法,请帮助!

标签: pandaslistpython-2.7dataframeseaborn

解决方案


我认为您需要使用所有 4 个掩码创建 DataFrame,然后Truesum和最后一个图计数:

m1 = df["Subject"].str.count("\w+") >= 3
m2 = df["Mark"].str.count("3") >= 1

df1 = pd.concat([m1, m2, m1 & m2, ~m1 & ~m2], axis=1, keys=('a','b','c','d'))

out = df1.sum()

如果需要海运解决方案:

import seaborn as sns

ax = sns.barplot(x="index", y="val", data=out.reset_index(name='val'))

对于熊猫(matplotlib)解决方案:

out.plot.bar()

推荐阅读