You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas删除指定行后绘制countplot仍显示被删值,操作错在哪里?

问题原因及解决方案

1 核心逻辑错误

你删除行的筛选条件逻辑运算符使用错误:

  • 代码中使用的&代表逻辑与,要求market_segment列的取值同时等于Undefined和Aviation,该条件不可能成立,因此最终筛选出的待删除行是空的,等于没有做任何删除操作,对应取值自然会在统计图中保留。
  • 你需要将&替换为|(逻辑或),匹配满足任意一个取值的行进行删除。

2 分类数据残留问题

如果修正逻辑后对应取值仍然显示,是因为market_segment列为category数据类型:

  • 分类类型的列会保留所有原始类别标签的元数据,哪怕对应取值的行已经全部删除,seaborn绘图时仍会读取所有类别标签进行展示,需要手动移除未使用的类别。

修正后的完整代码

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 修正逻辑运算符删除目标行
df = df.drop(df[(df['market_segment'] == 'Undefined') | (df['market_segment'] == 'Aviation')].index)

# 若为分类类型,移除无数据的类别
if pd.api.types.is_categorical_dtype(df['market_segment']):
    df['market_segment'] = df['market_segment'].cat.remove_unused_categories()

# 绘图
plt.figure(figsize=(12,8))
sns.countplot(x='market_segment',data=df,hue='hotel')
plt.show()

内容的提问来源于stack exchange,提问作者Ruslan Pylypiuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:02