Pandas | seaborn | countplot函数的使用

countplot 是 Seaborn 库中的一个函数,用于绘制分类变量的计数或频率条形图。这个函数非常适合用来展示不同类别的频数,或者比较不同组别中的类别分布。

使用 countplot 的基本语法:

sns.countplot(x="分类变量", data=数据集, hue="分组变量")
sns.countplot(x="分类变量",order=['']) # x相当于数据集中的一列数据  order是轴显示顺序
  • x:指定作为x轴的分类变量。
  • data:指定包含数据的DataFrame。
  • hue:可选参数,用于按另一个变量分组,以展示不同组别中的类别分布。

用法一

假设我们有一个名为 tips 的数据集,它包含了关于餐厅小费的信息,我们想要查看不同性别的顾客给小费的比例:

import seaborn as sns
import matplotlib.pyplot as plt
# 加载示例数据集
tips = sns.load_dataset('tips')
print(tips.columns)

Index([‘total_bill’, ‘tip’, ‘sex’, ‘smoker’, ‘day’, ‘time’, ‘size’], dtype=‘object’)

tips.shape

(244, 7)

tips.head(5)

在这里插入图片描述

tips.info()

在这里插入图片描述

# 绘制性别的计数图
sns.countplot(x='sex', data=tips)

# 添加标题
plt.title('顾客性别分布')

# 显示图形
plt.show()

在这里插入图片描述

如果你想要比较不同天的顾客性别分布,可以使用 hue 参数:

# 绘制不同天的顾客性别分布
sns.countplot(x='sex', hue='day', data=tips)

# 添加图例标题
plt.legend(title='星期几')

# 添加标题
plt.title('不同天的顾客性别分布')

# 显示图形
plt.show()

在这里插入图片描述

在这个例子中,countplot 会为每个类别(性别)绘制一个条形图,并且通过颜色区分不同的组别(星期几)。

请注意,countplot 默认情况下会将计数显示在y轴上,条形的高度代表每个类别的频数。如果你想要显示百分比而不是计数,可以使用 sns.catplot 函数,并设置 kind='count'height 参数来创建一个更复杂的图表,其中y轴显示的是百分比。

用法二

display(level.value_counts())
sns.countplot(x=level,order=["一级","二级","三级","四级","五级","六级"])

AQI
二级 136
一级 103
三级 66
四级 14
五级 4
Name: count, dtype: int64

  1. x=level:这里 level 应该是你的数据集中的一个列名,表示你想要按此列的类别来绘制计数图。
  2. order=["一级", "二级", "三级", "四级", "五级", "六级"]:这个参数用于指定条形图中类别的显示顺序。如果不指定 order
    参数,Seaborn 会按照类别在数据集中出现的顺序来绘制条形。
    在这里插入图片描述

重复堆叠柱状图

数值小的柱状图部分会共同使用

fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(12,6), dpi=100)#一行两列
 
# 柱状图
plt.subplot(121)
sns.countplot(x="gender",hue="Churn",data=tcc,palette="Blues", dodge=True)
plt.xlabel("Gender")
plt.title("Churn by Gender")
 
# 柱状堆叠图
plt.subplot(122)
sns.countplot(x="gender",hue="Churn",data=tcc,palette="Blues", dodge=False)
plt.xlabel("Gender")
plt.title("Churn by Gender")

plt.show()

在这里插入图片描述

以下是代码的详细解释:

sns.countplot:这是 seaborn 库中用于绘制计数图的函数。
x="gender":指定 x 参数为 "gender",这意味着 x 轴将显示 gender 列的类别。
hue="Churn":通过 hue 参数,您可以根据 Churn 列的值对 gender 列的类别进行颜色区分。
data=tcc:指定要绘制的数据来源为 tcc DataFrame。
palette="Blues":设置颜色方案为 "Blues",这是一个从浅蓝到深蓝的颜色渐变。
dodge=False:设置 dodge 参数为 False,这意味着不同 hue 值的条形图将堆叠在一起,而不是并排显示。如果设置为 True,则条形图会并排显示,以便更清楚地看到每个 gender 类别中 Churn 的分布。
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(12,6), dpi=100)#一行两列
 
# 柱状图
plt.subplot(121)
sns.countplot(x="gender",hue="Churn",data=tcc,palette="Blues", dodge=True)
plt.xlabel("Gender")
plt.title("Churn by Gender")
 
# 柱状堆叠图
plt.subplot(122)
sns.countplot(x="gender",hue="Churn",data=tcc,palette="Blues", dodge=False)
plt.xlabel("Gender")
plt.title("Churn by Gender")
patches = axes[1].patches
for patch in patches:
    print(patch)
    # 获取当前patch的x和y位置
    x = patch.get_x() + patch.get_width() / 2
    y = patch.get_height()
    # 根据patch的索引确定是堆叠图中的哪一部分
    if patch.get_label() == '_nolegend_'  :

        # 在柱子中间添加文本
        axes[1].text(x, y/2, '{}'.format(int(patch.get_height())), ha='center', va='bottom',fontsize=15 )

plt.tight_layout()
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胜天半月子

打不打商的无所谓,能帮到你就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值