跟着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功能吧?

相关文章
|
5天前
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
15 2
|
5天前
|
数据采集 自然语言处理 API
Python反爬案例——验证码的识别
Python反爬案例——验证码的识别
14 2
|
6天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
13 1
|
8天前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
18 2
|
2天前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
10 0
|
6天前
|
人工智能 API iOS开发
ChatGPT编程Python小案例(拿来就用)—解压zip压缩文
ChatGPT编程Python小案例(拿来就用)—解压zip压缩文
17 0
|
6天前
|
人工智能 小程序 Python
Python编程小案例——编一个事件提醒弹窗小程序
Python编程小案例——编一个事件提醒弹窗小程序
10 0
|
5月前
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
237 2
Python爬虫案例:抓取猫眼电影排行榜
|
4月前
|
数据采集 前端开发 Java
Python简单爬虫案例
用pyhton从网页中爬取数据,是比较常用的爬虫方式。网页一般由html编写,里面包含大量的标签,我们所需的内容都包含在这些标签之中,除了对python的基础语法有了解之外,还要对html的结构以及标签选择有简单的认知,下面就用爬取fl小说网的案例带大家进入爬虫的世界。
|
4月前
|
数据采集 前端开发 Java
Python简单爬虫案例
用pyhton从网页中爬取数据,是比较常用的爬虫方式。网页一般由html编写,里面包含大量的标签,我们所需的内容都包含在这些标签之中,除了对python的基础语法有了解之外,还要对html的结构以及标签选择有简单的认知,下面就用爬取fl小说网的案例带大家进入爬虫的世界。