【发布时间】:2018-12-08 20:15:32
【问题描述】:
我想在 pandas value_counts function() 之后删除计数为 0 的类别
我的数据如下:
categories:
Index(['Average', 'Good', 'Poor', ,'VeryGood', 'VeryPoor'],
dtype='object')
Output of value counts:
score Frequency
VG 21
G 15
A 63
P 27
VP 0
我的结果应该是
score Frequency
VG 21
G 15
A 63
P 27
我想将其存储在数据框中并绘制条形图。我不想在图表中显示 VP,因为它的计数为 0,因此消除了该类别
我的代码:
quality_scores=quality.SCORE.value_counts()
quality_scores=pd.Series.to_frame(quality_scores)
quality_scores=quality_scores.rename(columns={'SCORE':
'Frequency'})
quality_scores['Score']=quality_scores.index
quality_scores=quality_scores.reset_index(drop=True)
quality_scores = quality_scores[quality_scores.Frequency != 0]
quality_scores
我正在根据 cmets 编辑答案:
当我打印数据框时,我得到了正确的答案。但是,当我使用 quality_scores['Score'].cat.categories 检查类别时,我仍然看到不应该显示的 VP 类别。
另外,在图表中,我不希望看到 VP 类别,而是显示在轴上。
以下是图表代码:
plt.figure(figsize=(15,7))
quality_graph=sns.barplot(y=quality_scores["Frequency"],
x=quality_scores["Score"])
quality_graph.set_xlabel('Frequency')
quality_graph.set_title('Score Distribution of Quality
Measure:',fontsize=25)
plt.savefig('graphs\\Quality_Measure.png')
【问题讨论】:
-
你现在做的事情有什么问题,即
quality_scores = quality_scores[quality_scores.Frequency != 0]? -
我没听明白。
-
在您的问题中,您说要过滤掉频率 == 0。这不是您已经在做的吗?
-
是的,但它不起作用。当我绘制 grapg 时,它仍然显示计数为 0 的 VP
-
您能否在您的问题中添加 1) 示例代码和 2) 您得到的结果出乎意料?运行代码中倒数第二行“quality_scores = quality_scores[quality_scores.Frequency != 0]”后,quality_scores 的值是多少?