pandas 从绘图中删除类型类别的数据

9q78igpj  于 2022-12-21  发布在  其他
关注(0)|答案(2)|浏览(131)

假设我们有一个df,其中一列定义为一个类别:

import pandas as pd
df = pd.DataFrame({'Color': ['Yellow', 'Blue', 'Red', 'Red']}, dtype='category') # data type is category

现在假设我们要在移除其中一个分类水平的同时绘制这些数据:

# Exclude Yellow, save in new df    
df2 = df.loc[df.Color != 'Yellow']
# Plot
df2.value_counts().plot(kind='bar')

输出:

虽然未显示黄色条,但黄色记号标签仍然可见。
我的问题:我们怎么才能把黄从阴谋中彻底除掉
我怀疑这个问题是由于数据类型是category。但是我不想转换数据类型。类型category有时候是有用的,例如,重新排序级别或其他操作。
对我来说,理想的解决方案也适用于seaborn,我发现了一个类似的问题:

# Remake a df based on the above and plot with seaborn  
df2=pd.DataFrame(df2.value_counts()).reset_index()
import seaborn as sns
from matplotlib import pyplot as plt
sns.catplot(data=df2, x=0, y='Color', kind='bar')
plt.show()

输出:

Dani Mesejo的答案是有效的,但我相信只能用直方图。而且我需要条形图本身。

vkc1a9a2

vkc1a9a21#

您可以将分类值转换为图的字符串(非就地),您的数据类型在df2中将保持不变:

df2 = df[df['Color'] != 'Yellow']
df2.Color.astype(str).value_counts().plot(kind='bar')

或者你可以用hist

df2 = df[df['Color'] != 'Yellow']['Color']
plt.hist(df2)
plt.xlabel('Color')

hgqdbh6s

hgqdbh6s2#

使用seaborn.histplot,您可以执行以下操作:

sns.histplot(data=df2, x="Color", shrink=.8)
plt.show()
    • 输出**
    • 注:**

别忘了海运进口

import seaborn as sns

相关问题