如何绘制我的列高于某个阈值的值?



我已经被这个问题困扰了一段时间。我有一个数据集,它看起来或多或少像这样:

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

现在,我想用pandas和seaborn创建一个barplot,显示有多少学生:

  • 在<主题>
  • 一栏中再加3个字母
  • 在"标记"栏中至少有一个3
  • 两者都有

I tried with:

n_subject = dataset['Subject'].str.count('w+')
dataset['NumberSubjects']= n_subject
n_over = dataset[dataset.n_subject >= 3.0]

但是它不起作用,我被卡住了。我确信这是一个非常基本的问题,但我不知道该怎么做。

三个或更多主题:

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

有一个或多个3标记:

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

同时:

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

布尔表示:

Students  Subject     Mark    one    two  three
0         1      M F  7 4 3 7  False   True  False
1         2        I      5 6  False  False  False
2         3  M F I S    2 3 0   True   True   True
3         4        M      2 2  False  False  False
4         5    F M I      5 1   True  False  False
5         6    I M F    6 2 3   True   True   True
6         7      I M        7  False  False  False

我真的不确定barplot应该代表什么(Mark的摘要?)但是这里是你需要过滤的东西。同样,字符串计数也计算空格,但是有多种方法来处理这个问题。我只是给你一个主意做这件事。

>>> m1 = df.Subject.apply(lambda x: len(x.split()) >= 3)
>>> m2 = df.Mark.str.contains('3')
>>> m3 = m1|m2
>>> df[m1]
Students  Subject    Mark
2         3  M F I S  2 3 0
4         5    F M I     5 1
5         6    I M F   6 2 3

>>> df[m2]
Students  Subject     Mark
0         1      M F  7 4 3 7
2         3  M F I S   2 3 0
5         6    I M F    6 2 3
>>> df[m3]
Students  Subject     Mark
0         1      M F  7 4 3 7
2         3  M F I S   2 3 0
4         5    F M I      5 1
5         6    I M F    6 2 3

最新更新