matplotlib python中的行图表,“零值”问题

ruarlubt  于 2022-12-19  发布在  Python
关注(0)|答案(1)|浏览(171)

我有一个包含12个不同检查数据的 Dataframe ;问题类型:A、B、C或D),回答:判断题和检查编号:一,二,...,十二。
我想做的是一个线路图的数量错误(假)答案的问题A只,分组的号码考试(如果它是第一个或第二个等)。
为此,我做了以下操作:

Quest_A = df2[(df2["type_question"] == "A") & (df2["correct"] == False)]

x = Quest_A['n_exam']
y = Quest_A['correct']
df = pd.DataFrame(data = zip(x, y),
                  columns = ['number', 'correct'])

sums = df.where(df['correct'] == False).groupby(['number']).count()

plt.plot(sums)
plt.show()

这里df2是我的 Dataframe ,包含了我所有的数据。
通过这样做,我的输出如下:
https://i.stack.imgur.com/7aLV1.png
我可以看到我的0号考试,我做了6个不好的答案。
但问题是,有一些考试中有0个错误答案的问题A,但由于我的方式创造我的情节,他们没有出现!
伟大的输出,我应该optain是以下,但我不能管理如何得到它:
https://i.stack.imgur.com/flVVe.png
下面是 Dataframe 的图片:
https://i.stack.imgur.com/Ok96O.png
谢谢你的帮忙!

k2fxgqgv

k2fxgqgv1#

所以,我想说几句
1.正如您所说,您不应该仅从选择correct=False行开始,您会丢失其他行的信息,而不会出现错误答案
1.由于您只选择了False行,因此y只是一列false
1.不需要重建 Dataframe df。您的df可以是Quest_A[['n_exam', 'correct']](只是选择列)

  1. .where(df['correct'] == False)是冗余的:所有df行都是correct==False
    所以,我要做的是,保留正确的行,然后使用sum而不是count来计数不是所有的行,而是所有具有True值的行,因为你要计数的是False值,所以只需要一个incorrecterror
    所以
df2['error']=~df2['correct']
df2[df2['type_question']=='A'][['n_exam', 'error']].groupby('n_exam').sum().plot()

df2[df2['type_question']=='A']仅为A类问题的行
df2[df2['type_question']=='A'][['n_exam', 'error']]是由df2行组成的 Dataframe (视图),其中包含类型A的问题,并且只有n_examerror
df2[df2['type_question']=='A'][['number', 'error']].groupby('n_exam').sum()n_exam为单位对前一个 Dataframe 进行分组,在每个组中,用组内的每列之和替换该列(即error,因为它是除分组列n_exam之外的唯一一列),一列布尔值之和就是True的个数。
最小的例子(这就是我在评论中的意思),因为这一个:

df2=pd.DataFrame({'type_question':['A', 'B', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'], 'correct':[True, False, False, False, False, True, True, False, False, True], 'n_exam':[1,2,2,3,4,4,5,6,6,7]})

我得到这个

相关问题