pandas - 从布尔值中获取条形图?
问题描述
我面临一个问题。这是我的数据框:
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_counts()
布尔列。
如果您有任何想法,请帮助!
解决方案
我认为您需要使用所有 4 个掩码创建 DataFrame,然后True
按sum
和最后一个图计数:
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()
推荐阅读
- sql - 如何获取最后日期和最接近的日期
- php - 如何在 PHP 中使用 dueDate 变量计算罚金
- keras - LSTM 自动编码器顶部的注意力层出现不兼容错误
- node.js - 连接副本集时出现“MongoError:没有可用的 mongos 代理”
- webpack - webpack 可以将源文件编译成输出路径
- c++ - 如何用 const 变量初始化类的 const 成员变量?
- c# - 如何为堆栈视图中的右对齐定义 NSLayoutConstraint?
- c# - 如何在一个信封中包含多个模板?
- c# - 如何从 C# 控制器重定向到 URL(带有自定义标头)
- swift - 有没有办法为结构定义协议属性,具体取决于它在哪个平台上使用?