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

如何绘制x轴为Partner+Dependents、hue为Churn的Seaborn条形图?

解决方法

你的问题出在数据预处理和绘图参数设置上,以下是修正后的步骤和代码:

问题分析

  1. 你用pivot_table将Churn转为列,导致无法用hue='Churn'区分不同流失状态的条形
  2. x参数只指定了Dependents,没有包含Partner,无法实现两者组合作为x轴
  3. 对customerID用sum不合理,因为它是用户唯一标识,应该统计数量(计数)

修正代码

方法1:合并Partner和Dependents为新列

先将两个字段合并成一个代表组合的列,再直接绘图:

import seaborn as sns
import matplotlib.pyplot as plt

# 合并Partner和Dependents为新列,明确显示组合关系
df['Partner_Dependents'] = df['Partner'] + " - " + df['Dependents']

# 绘制条形图:x为组合列,y为用户数量,hue为Churn
sns.barplot(
    x='Partner_Dependents',
    y='customerID',
    hue='Churn',
    data=df,
    estimator=len  # 统计用户数量,替代sum
)

# 美化图表
plt.xlabel('Partner & Dependents')
plt.ylabel('Number of Customers')
plt.title('Customer Count by Partner-Dependents Combination and Churn')
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.show()

方法2:先分组统计再绘图

先按Partner、Dependents、Churn分组计算用户数,再绘图:

import seaborn as sns
import matplotlib.pyplot as plt

# 分组统计用户数量,得到清晰的统计结果
df_grouped = df.groupby(['Partner', 'Dependents', 'Churn'])['customerID'].count().reset_index(name='Customer_Count')

# 绘制条形图:按Partner分面,x为Dependents,hue为Churn
g = sns.catplot(
    x='Dependents',
    y='Customer_Count',
    hue='Churn',
    col='Partner',
    data=df_grouped,
    kind='bar',
    dodge=True
)
g.set_axis_labels('Dependents', 'Number of Customers')
g.set_titles('Partner: {col_name}')
plt.show()

关键说明

  • 用estimator=len(或直接分组统计count)替代sum,因为customerID是唯一标识,统计数量才是合理需求
  • 合并Partner和Dependents为新列,能让x轴直接显示两者的组合关系
  • 避免用pivot_table转置Churn,保留Churn作为行字段才能用hue参数区分不同流失状态的条形

内容的提问来源于stack exchange,提问作者Raffel Ravionaldo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:40:21