关于ide:8k-Star基于-Matplotlib-的数据可视化利器

35次阅读

共计 5253 个字符,预计需要花费 14 分钟才能阅读完成。

【导语】:Seaborn 是一个能够实现数据可视化的 Python 库,它是基于 matplotlib 库封装而成的,同时还能兼容 pandas 数据结构。咱们能够应用 Seaborn 来制作丑陋的数据图表,操作简略,易于上手。

提醒:Seaborn 反对 Python 3.7+,已不再反对 Python 2。

简介

1、数据可视化的工具介绍

数据可视化是一种数据科学家将原始数据转化为图表的技术,这些图表能产生许多有价值的信息。图表升高了原始数据的复杂性,使用户更易了解。

有许多实现数据可视化的工具,例如 Tableau、Power BI、ChartBlocks 以及其余的无代码工具。这些工具有着各自的用户,也都很弱小。然而当咱们须要一个良好的平台来解决原始数据时,python 不失为一个好的抉择。

尽管这种办法较为简单,须要的编程常识也更多,但 python 能通过许多操作和转换来实现数据可视化,因而对数据科学家来说是一个现实的抉择。Python 最大的一个长处就是它领有弱小的第三方库,来解决数据,比方 numpy、pandas、matplotlib、tensorflow。

Matplotlib 可能是目前最受认可的绘图库了,不仅实用于 python,还实用于 R 语言 等。它的定制化和可操作性使其坐上了头把交椅。然而当应用 matplotlib 时,有些定制化和操作性能很难实现。

基于 matplotlib,开发者发明了一个叫 seaborn 的库。seaborn 与 matplotlib 一样弱小,在带来一些新个性的同时还能简化绘图。

在本文中,咱们次要关注如何应用 seaborn 绘制高级的图表。你能够根据这些例子创立本人的图表。

### 2. Seaborn 是什么?

Seaborn 是 python 中一个能够制作数据图表的库。它是 matplotlib 库的高级封装,同时还能兼容 pandas 数据结构。

Seaborn 能让你疾速摸索并了解数据。seaborn 的工作形式为:首先捕获蕴含所有数据的整个数据结构或数组,随后通过执行绘图和统计数据须要的所有外部函数,将数据转换为信息图。

当你依据本身需要设计图表时,seaborn 能缩小复杂性。

Seaborn 的 Github 主页:
https://github.com/mwaskom/se…

装置

pip install seaborn

当装置 seaborn 时,也会主动装置其余绘图所须要的库,例如 matplotlib,pandas、numpy 和 scipy。此外,在写代码绘图前,咱们须要导入一些模块。

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

简略应用

### 1. 绘制你的第一个图表

因为网络问题,在国内应用 seaborn 的数据集时,留神启用代理,免得无奈加载数据集。

在咱们开始画图之前,须要应用数据。seaborn 的不便之处在于它兼容 pandas 数据结构。此外,该库自带了
一些内建数据集,你能够间接用代码加载,无需手动下载文件。让咱们一起来看看如何加载一个蕴含航班信息的数据集:

flights_data = sns.load_dataset("flights")
res = flights_data.head()
print(res)

输入后果如下:

  year month passengers
0 1949 Jan 112
1 1949 Feb 118
2 1949 Mar 132
3 1949 Apr 129
4 1949 May 121

当调用 load_dataset 函数并写入数据集的名称后,神奇的事件产生了,控制台返回了一个数据结构。
所有的数据集在这里可见:

Github 链接:

https://github.com/mwaskom/se…

2. 散点图

散点图是一个基于二维数据来显示点的图表。用 seaborn 库来绘制一个散点图只须要几行代码,非常简单。scatterplot 须要的参数是咱们绘图须要的数据集,以及 x,y 轴别离代表什么数据。

flights_data = sns.load_dataset("flights")
sns.scatterplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

3. 线条图

依据间断或分类数据的变动,画出线条图。它是一种风行且广为人知的图表,易于绘制。与之前类似,咱们应用 lineplot 函数,
指定数据集,以及 x,y 轴别离代表哪一列数据。seaborn 会实现残余的工作:

flights_data = sns.load_dataset("flights")
sns.lineplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

4. 条形图

正如你所揣测的那样,条形图可能是最闻名的图表类型了。与散点图和线条一样,咱们能够用 barplot 函数绘制条形图:

flights_data = sns.load_dataset("flights")
sns.barplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

5. 用 matplotlib 扩大

seaborn 建设在 matplotlib 之上,扩大了它的性能,减少了复杂性。如其所述,却并没有限 matplotlib 的性能。任何 seaborn 图表都能够用 matplotlib 的函数绘制。seaborn 在特定的操作中能够提供帮忙,容许 seaborn 利用 matplotlib 的力量而无需重写函数。例如你如果想用 seaborn 来主动绘制多个图表,你就能够利用 matplotlib 中的 subplot 函数:

diamonds_data = sns.load_dataset('diamonds')
plt.subplot(1, 2, 1)
sns.countplot(x='carat', data=diamonds_data)
plt.subplot(1, 2, 2)
sns.countplot(x='depth', data=diamonds_data)
plt.show()

绘制的图表如下:

应用 subplot 性能,咱们能够在一个图上绘制多个图表。该函数有三个参数,第一个是行数,第二个是列数,最初一个是图号。咱们应用 matplotlib 与 seaborn 中的函数,seaborn 在每个 subplot 中绘制一个 seaborn 图表。

6. 绘制不同格调的丑陋图形

seaborn 使咱们能够更改图形界面,它提供了五种不同的格调:darkgrid,whitegrid,dark,white, 和 ticks.

第一个例子深色网格图:

flights_data = sns.load_dataset("flights")
sns.set_style("darkgrid")
sns.lineplot(data = flights_data, x = "year", y = "passengers")
plt.show()

绘制的图表如下:

另一个例子红色网格图:

flights_data = sns.load_dataset("flights")
sns.set_style("whitegrid")
sns.lineplot(data=flights_data, x="year", y="passengers")
plt.show()

绘制的图表如下:

很酷的用法

. 下载小费数据集

咱们理解 seaborn 的基本知识后,当初让咱们通过在同一数据集上构建多个图表,来进行练习。在咱们的例子中,咱们将
应用数据集“tips”,你能够应用 seaborn 间接下载。首先,加载数据集:

tips_df = sns.load_dataset('tips')
res = tips_df.head()
print(res)

输入后果如下:

  total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Male No Sun Dinner 4

我想打印出数据集的前几行,来理解列和数据自身。通常我会用一些 pandas 函数修复一些数据问题,比方 null 值,还可
以退出一些对数据集有用的信息。你能够在上面的链接中浏览更多信息:

pandas 使用指南:

https://livecodestream.dev/po…

让咱们在数据集中创立新的一列,以示意小费占总费用的百分比:

tips_df = sns.load_dataset('tips')
tips_df.head()
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
res = tips_df.head()
print(res)

新的数据结构如下:

  total_bill tip sex smoker day time size tip_percentage
0 16.99 1.01 Female No Sun Dinner 2 0.059447
1 10.34 1.66 Male No Sun Dinner 3 0.160542
2 21.01 3.50 Male No Sun Dinner 3 0.166587
3 23.68 3.31 Male No Sun Dinner 2 0.139780
4 24.59 3.61 Male No Sun Dinner 4 0.146808

2. 了解 tip_percentage

让咱们首先看看 tip_percentage 的散布。鉴于此,应用 hisplot 来产生柱状图:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.histplot(tips_df["tip_percentage"], binwidth=0.05)
plt.show()

绘制的图表如下:

咱们必须自定义 binwidth 属性以使其更具可读性,当初咱们能够疾速了解数据了。大多数客户会给 15%至 20%的小费,而有些状况下,小费超过 70%。这些值是异样的,应该进行查看,以确定这些值是否出错。

3. 察看 tip_percentage 是否与每天的不同时刻是否无关,也将会很乏味:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.histplot(data=tips_df, x="tip_percentage", binwidth=0.05, hue="time")
plt.show()

绘制的图表如下:

这次咱们加载了所有数据集到图表中,而不仅仅是一列,而后给 time 列设置了 hue 属性。这将会使图表给每一个 time 值设置不同的色彩,并为其增加图例。

4. 一周中某天的小费数

另一个乏味的度量规范是依据一周中的某天,晓得能够失去小费的总数:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
sns.barplot(data=tips_df, x="day", y="tip", estimator=np.sum)
plt.show()

绘制的图表如下:

看起来星期五很适宜待在家里。

5. 桌子尺寸和日期对小费的影响

有时候咱们想要晓得多个变量如何独特影响输入。例如,星期几和桌子尺
寸怎么独特影响小费百分比?为了画出最终的图表,咱们首先用 pandas 中的 pivot 函数预处理数据,随后绘制一个热点图:

tips_df = sns.load_dataset('tips')
tips_df["tip_percentage"] = tips_df["tip"] / tips_df["total_bill"]
pivot = tips_df.pivot_table(index=["day"],
    columns=["size"],
    values="tip_percentage",
    aggfunc=np.average)
sns.heatmap(pivot)
plt.show()

绘制的图表如下:

论断

当然,咱们还能够用 seaborn 做很多事件,通过查看官网文档能看到更多例子。感激你的浏览!

官网文档地址:http://seaborn.pydata.org/

开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

正文完
 0