Pandas 从布尔值获取条形图?
我面临着一点问题。这是我的数据帧:Pandas 从布尔值获取条形图?,pandas,list,python-2.7,dataframe,seaborn,Pandas,List,Python 2.7,Dataframe,Seaborn,我面临着一点问题。这是我的数据帧: 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
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
我想绘制一个带有四个“条”的条形图,供学生遵守以下四个条件:
- 在“主题”栏中有3个或更多字母
- 在列“标记”中至少有一个3
- 两全其美
- 两全其美
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\u counts()
应用于布尔列
如果你有任何想法,请帮忙 我认为您需要创建包含所有4个掩码的数据帧,然后通过
sum
计算True
s,最后绘制:
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()
如果需要seaborn解决方案:
import seaborn as sns
ax = sns.barplot(x="index", y="val", data=out.reset_index(name='val'))
out.plot.bar()
对于熊猫(matplotlib)解决方案:
import seaborn as sns
ax = sns.barplot(x="index", y="val", data=out.reset_index(name='val'))
out.plot.bar()
非常感谢你!