从Seaborn Boxplot中删除特定类别

时间:2019-06-04 14:28:01

标签: python jupyter-notebook seaborn

我有此代码:

plt.figure(figsize=(12,7))
sns.boxplot(data=resolved_time_length,
x='Time_to_resolve_days',y='Ticket_category',
       linewidth=2.5)#, hue='Priority_level')#,color='pink')

plt.xlim(-1,30)

plt.title('Average Time to Resolve an IoT Ticket in Days',fontsize=20)
plt.xlabel('Resolve Time in Days',fontsize=14)
plt.ylabel('Ticket Category', fontsize=14)
plt.show()

并生成此图:

enter image description here

我要做的就是不显示Y轴上少于5个观察值的任何类别(在这种情况下,它们是“功能”,“内部添加”和“内部数据”类别)。 我尝试通过将y轴设置为:

y=Time_to_resolve_days['Ticket_category']<5 

但是这不起作用,所以请您帮忙!

2 个答案:

答案 0 :(得分:0)

您可以使用pandas.DataFrame.loc¶来过滤Pandas DataFrame:

resolved_time_length.loc[resolved_time_length['Time_to_resolve_days'] < 5]

然后,将过滤后的DataFrame用作输入数据:

sns.boxplot(data=resolved_time_length.loc[resolved_time_length['Time_to_resolve_days'] < 5], 
x='Time_to_resolve_days',
y='Ticket_category', linewidth=2.5)#, 
hue='Priority_level')#,color='pink')

此处有更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html

答案 1 :(得分:0)

编辑:经过测试,以下作品:

plt.figure(figsize=(12,7))


#create a filtered dataframe
data=resolved_time_length.drop(columns=resolved_time_length.apply(pd.Series.nunique, axis=0).index[resolved_time_length.apply(pd.Series.nunique, axis=0)<5])


#plot filtered dataframe
sns.boxplot(data=data,
x='Time_to_resolve_days',y='Ticket_category',
       linewidth=2.5)#, hue='Priority_level')#,color='pink')


plt.xlim(-1,30)

plt.title('Average Time to Resolve an IoT Ticket in Days',fontsize=20)
plt.xlabel('Resolve Time in Days',fontsize=14)
plt.ylabel('Ticket Category', fontsize=14)
plt.show()