跟着Titanic案例学Seaborn之Barplot

简介: 跟着Titanic案例学Seaborn之Barplot

前面的文章里,我们简单介绍了Seaborn的相关知识(Seaborn——让图表更美观、更智能),从本期开始,我将用10个案例来介绍10种Seaborn不同的图,这10种不同的图分别为:

  1. Barplot(柱状图)
  2. Countplots(计数图)
  3. Histograms(直方图)
  4. Catplots (Box, Violin, Swarm, Boxen)分类图表
  5. Multiple Plots using FacetGrid(使用FacetGrid的多个绘图)
  6. Joint Plots(联合图)
  7. KDE Plots(Kernel Density Estimate,核密度估计图
  8. Pairplots(变量关系组图)
  9. Heatmaps(热力图)
  10. Scatter Plots(散点图)


本期,我们就先来介绍第一种Seaborn图,也是Seaborn最常用的图——Barplot(柱状图),我们采用的案例是titanic.csv(泰坦尼克号数据集)。具体链接我放在了如下网址:

通过百度网盘分享的文件:titanic.csv

链接:https://pan.baidu.com/s/1UtcWOhHON5pYs7hqHlPeow

提取码:6666


一、Barplot(柱状图)的基本介绍在Seaborn官方文档中,我们可以看到seaborn.barplot的基本参数为:

seaborn.barplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, estimator='mean', errorbar=('ci', 95), n_boot=1000, seed=None, units=None, weights=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, hue_norm=None, width=0.8, dodge='auto', gap=0, log_scale=None, native_scale=False, formatter=None, legend='auto', capsize=0, err_kws=None, ci=<deprecated>, errcolor=<deprecated>, errwidth=<deprecated>, ax=None,  **kwargs)

其中,这里面参数很多,我挑主要的给大家介绍一下。

    data:数据源,即你需要画图的数据来源,可以是 DataFrame, Series, dict, array, 或者list of arrays; x, y, hue: 在数据集中的变量名 estimator: 用于对每个条形图高度进行估计的统计函数,默认为mean即平均值。 palette: 样式,可以为deep, muted, bright, pastel, dark, colorblind

想要了解更多Barplot的功能可以参考官方文档:

seaborn.barplot — seaborn 0.13.2 documentation (pydata.org)

下面,我们通过一个具体的案例来具体学习一下Barplot的4个不同的图形。

二、Titanic数据集的Seaborn绘图

1. 导入数据集

import pandas as pdimport seaborn as snsimport matplotlib.pyplot as plt
# 设置中文字体plt.rcParams['font.family'] = 'SimHei' 
df=pd.read_csv('titanic.csv')
df.head(10)

d17a61e9a8de1ba30c798daeb1c8e53d.png

导入数据集,我们发现,这个数据集中共有15列,其中一些跟本文相关的字段解释分别为:

PassengerId:用户idsurvival:是否生还,0-否,1-是pclass:舱位,1-头等舱,2-二等,3-三等name:姓名sex:性别Age:年龄sibsp:在船上的兄弟/配偶数parch:在船上父母/孩子数ticket:票号fare:票价cabin:Cabin number;客舱号embarked:登船地点

2. 数据清洗

统计缺失值并补充相关缺失值

#缺失值统计df.isnull().sum()

3fe6b5a36c623a2a709f07f8f093d06b.png

发现,age一列中缺失了177个数据,这个我们用平均值来补充。deck(甲板)这一列缺失了688个数据,不重要,我们把整列删掉;embark_town(出发地点)中缺失了2个数据,我们用southampton来填充;embarked同样缺失了2个数据,我们用S来填充。

df["age"]=df["age"].fillna(df['age'].median())del df["deck"]
df['embark_town']=df['embark_town'].fillna('Southampton')df['embarked']=df['embarked'].fillna('S')
df.isnull().sum()

871f80b795c035ab99a8baf44f357b94.png

数据补充完整

3. Barplot作图

3.1 船上男女小孩平均年龄的barplot图形分析

我们对titanic号上人员年龄做个平均分析并作出相应的Seaborn图。

df['who'].unique()

array(['man', 'woman', 'child'], dtype=object),有三种类型:男人、女人、孩子。

#聚合并统计平均年龄df.groupby('who').agg({'age':'mean'})

dff4e9d435e5d3ded91ae2c1313dfe85.png

# barplot绘图sns.barplot(data=df, x="who", y="age", estimator='mean',             errorbar=None, palette='Blues')plt.title('船上人员的年龄分析')plt.xlabel('人员类型')plt.ylabel('平均年龄')

6291b25db7775ccccf3627d3dc377e60.png

3.2 船上不同舱位等级的乘客平均年龄进行Barplot图形分析

#对class和sex进行聚合df.groupby(['class','sex']).agg({'age':'mean'})

1954c1b1a0e1bbe03b9c0fde6215eb0e.png

Barplot绘制分组条形图

#绘制分组条形图sns.barplot(data=df, x='class', y='age', hue='sex',             estimator='mean', errorbar=None, palette='plasma')plt.title('舱位等级的分组条形图')plt.xlabel('舱位等级')plt.ylabel('平均年龄')

0a2694beb67a2bed7dbf4b85115dcfb6.png

分组条形图中,我们看到,我们使用了hue这个参数作为分组,这点是barplot与众不同的地方。

3.3 船上乘客不同等级舱位的平均票价Barplot图形分析

#聚合df.groupby('class').agg({"fare":'mean'})

35299276afad1893cb3642734dc48886.png

# 水平的barplotsns.barplot(data=df, x="fare", y="class", estimator='mean',             errorbar=None, palette='Blues')plt.title('平均票价的水平柱状图')plt.xlabel('平均票价')plt.ylabel('舱位类型')

159f64239f7df235c355875f29f202ef.png

这是个水平的barplot图,与3.1相比,这是最大的不同。

3.4 从不同城市出发的男性乘客占比的Barplot图形分析

#重新生成数据data = df.groupby('embark_town').agg({'who':'count','sex': lambda x: (x=='male').sum()}).reset_index()data.rename(columns={'who':'total', 'sex':'male'}, inplace=True)data.sort_values('total', inplace=True)data

3d9c14a5ac83442035fb0f853cf8c971.png

# Barplot画出堆叠图sns.set_color_codes("colorblind")sns.barplot(x="total", y="embark_town", data=data,            label="Total", color="b")  # Plot the total crashes
sns.set_color_codes("deep")sns.barplot(x="male", y="embark_town", data=data,            label="Male", color="b",)  # Plot the crashes where alcohol was involvedplt.title('从不同城市出发的乘客中男性比例')plt.xlabel('乘客数量')plt.ylabel('出发城市')plt.legend(loc='upper right')plt.show()

d00d039ba948046cd2fa3c62d1e6bfac.png

3.5 小结

从上面4副Barplot图中,我们可以简单的做如下总结:

  • 从第一张图中,我们发现泰坦尼克号上男性和女性的平均年龄几乎在31-32岁左右,而儿童的平均年龄为6岁;
  • 从第二张聚类条形图中,我们可以看到二等舱的乘客平均年龄大于三等舱的乘客。同样,头等舱的乘客年龄比二等舱的乘客大(男性和女性的趋势相似);
  • 第三张水平图显示一等舱、二等舱和三等舱的平均票价之间的差异。一等舱平均票价是二等舱平均票价的4倍以上
  • 第四张图显示大多数乘客从南安普敦出发。男性比例接近75%。


三、总结Seaborn的Barplot是一种用于比较不同类别数据的平均值或其它统计量的图表。它通过条形的高度来表示数值大小,非常适合于展示分类变量的分布情况或不同类别间的比较。比如:学生成绩、网站访问量统计、销售额统计等等,本文通过titanic数据集对Barplot的4种图形进行了归纳总结,感兴趣的朋友继续通过这个数据集来持续学习Barplot功能吧?

相关文章
|
11天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2514 17
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
7天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1520 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
3天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
9天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
552 14
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
9天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
473 48
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18838 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17528 13
Apache Paimon V0.9最新进展
|
2天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
362 4
叮咚!您有一份六大必做安全操作清单,请查收