文章图片
数据可视化是一种技术,它允许数据科学家将原始数据转换为图表,从而产生有价值的见解。图表降低了数据的复杂性,并使任何用户都更容易理解。
有很多工具可以执行数据可视化,例如 Tableau、Power BI、ChartBlocks 等,它们都是无代码工具。它们是非常强大的工具,并且拥有自己的受众。但是,在处理需要转换和良好的数据游乐场的原始数据时,Python 是一个很好的选择。
尽管由于需要编程知识而更加复杂,但 Python 允许你对数据执行任何操作、转换和可视化。它非常适合数据科学家。
Python 是数据科学的最佳选择的原因有很多,但最重要的原因之一是它的库生态系统。许多很棒的库都可用于 Python 来处理诸如
numpy
,
pandas
,
matplotlib
, 之类的数据tensorflow
。Matplotlib
可能是最受认可的绘图库,可用于 Python 和其他编程语言,如R
.
首先是它的定制化和可操作性水平。但是,使用它时可能难以处理某些操作或自定义。开发人员基于 matplotlib 创建了一个名为
seaborn
.
Seaborn
功能强大,matplotlib
同时还提供抽象以简化绘图并带来一些独特的功能。如何使用Seaborn绘制图表?在本文中,我们将重点介绍如何与 Seaborn 合作创建一流的绘图。如果你想继续学习,你可以创建自己的项目,或者直接查看我 在 GitHub 上的seaborn 指南项目。
Python Seaborn数据可视化教程:什么是Seaborn?Seaborn 是一个用 Python 制作统计图形的库。它建立在matplotlib之上, 并与Pandas 数据结构紧密集成 。
Seaborn 设计允许你快速探索和理解你的数据。Seaborn 的工作原理是捕获包含所有数据的整个数据帧或数组,并执行语义映射和统计聚合所需的所有内部功能,以将数据转换为信息图。
它抽象了复杂性,同时允许你根据自己的要求设计图。
安装 SeabornPython如何使用Seaborn可视化数据?安装
seaborn
就像使用你最喜欢的 Python 包管理器安装一个库一样简单。安装时seaborn
,该库将安装其依赖性,包括matplotlib
,pandas
,numpy
,和scipy
。然后让我们安装 seaborn,当然还有包notebook 以访问我们的数据游乐场。
pipenv install seaborn notebook
此外,在开始之前,我们将导入一些模块。
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib
建立你的第一个地块在我们开始绘制任何东西之前,我们需要数据。它的美妙之
seaborn
处在于它直接与pandas
数据帧一起工作,非常方便。更重要的是,该库附带了一些内置数据集,你现在可以从代码中加载这些数据集,无需手动下载文件。让我们通过加载包含航班信息的数据集来看看它是如何工作的。
flights_data = https://www.lsbin.com/sns.load_dataset("flights")
flights_data.head()
编号 | 年 | 月 | 乘客 |
---|---|---|---|
0 | 1949年 | 一月 | 112 |
1 | 1949年 | 二月 | 118 |
2 | 1949年 | 三月 | 132 |
3 | 1949年 | 四月 | 129 |
4 | 1949年 | 五月 | 121 |
load_dataset
,它期望加载数据的名称并返回一个数据帧。所有这些数据集都可以在GitHub 存储库上找到
。Python Seaborn数据可视化教程:散点图
散点图是基于数据集的二维显示点的图表。在 seaborn 库中创建散点图非常简单,只需一行代码。
sns.scatterplot(data=https://www.lsbin.com/flights_data, x="year", y="passengers")
文章图片
scatterplot
需要我们想要绘制的数据集以及代表x
和y
轴的列。线图
如何使用Seaborn绘制图表?此图绘制一条线,表示连续或分类数据的循环。它是一种流行且众所周知的图表类型,而且制作起来非常容易。同样之前,我们使用功能
lineplot
与数据集和代表列x
和y
轴。Seaborn
会做剩下的。sns.lineplot(data=https://www.lsbin.com/flights_data, x="year", y="passengers")
文章图片
Python如何使用Seaborn可视化数据?它可能是最著名的图表类型,正如你可能已经预测的那样,我们可以
seaborn
使用函数绘制这种类型的图,就像绘制线条和散点图一样barplot
。sns.barplot(data=https://www.lsbin.com/flights_data, x="year", y="passengers")
文章图片
使用 matplotlib 扩展Seaborn 建立在 之上
matplotlib
,扩展了其功能并抽象了复杂性。话虽如此,它并没有限制其功能。seaborn
可以使用matplotlib
库中的函数自定义任何图表。它可以在特定操作中派上用场,并允许 seaborn 利用 的力量而matplotlib
无需重写其所有功能。例如,假设你想使用
seaborn
;
同时绘制多个图形;那么你可以使用subplot
来自matplotlib
.diamonds_data = https://www.lsbin.com/sns.load_dataset('diamonds')
plt.subplot(1, 2, 1)
sns.countplot(x='carat', data=https://www.lsbin.com/diamonds_data)
plt.subplot(1, 2, 2)
sns.countplot(x='depth', data=https://www.lsbin.com/diamonds_data)
文章图片
subplot
函数,我们可以在一张图上绘制多个图表。该函数采用三个参数,第一个是行数,第二个是列数,最后一个是绘图编号。我们
seaborn
在每个子图中渲染一个图表,matplotlib
与seaborn
函数混合。Seaborn 喜欢 Pandas我们已经讨论过这一点,但非常
seaborn
喜欢pandas
它的所有功能都建立在pandas
数据框之上。到目前为止,我们看到了使用seaborn
预加载数据的示例,但是如果我们想从我们已经加载的数据中绘制图表pandas
怎么办?drinks_df = pd.read_csv("data/drinks.csv")
sns.barplot(x="country", y="beer_servings", data=https://www.lsbin.com/drinks_df)
文章图片
sns.set_style("darkgrid")
sns.lineplot(data = https://www.lsbin.com/data, x ="year", y = "passengers")
文章图片
sns.set_style("whitegrid")
sns.lineplot(data=https://www.lsbin.com/flights_data, x="year", y="passengers")
文章图片
seaborn
,现在让我们通过在同一数据集上构建多个图表来将它们付诸实践。在我们的例子中,我们将使用数据集“提示”,你可以直接使用seaborn
.首先,加载数据集。
tips_df = sns.load_dataset('tips')
tips_df.head()
total_bill | 提示 | 性别 | 吸烟者 | 日 | 时间 | 尺寸 | |
---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | 女性 | 不 | 太阳 | 晚餐 | 2 |
1 | 10.34 | 1.66 | 男性 | 不 | 太阳 | 晚餐 | 3 |
2 | 21.01 | 3.50 | 男性 | 不 | 太阳 | 晚餐 | 3 |
3 | 23.68 | 3.31 | 男性 | 不 | 太阳 | 晚餐 | 2 |
4 | 24.59 | 3.61 | 女性 | 不 | 太阳 | 晚餐 | 4 |
pandas
函数来修复一些数据问题,例如null
值,并向数据集添加可能有用的信息。你可以在使用 pandas的指南中阅读有关此内容的更多信息
。让我们为数据集创建一个附加列,其中的百分比表示小费金额占账单总额的百分比。
tips_df[
"tip_percentage"] = tips_df[
"tip"] / tips_df[
"total_bill"]
tips_df.head()
现在我们的数据框如下所示:
total_bill | 提示 | 性别 | 吸烟者 | 日 | 时间 | 尺寸 | 小费百分比 | |
---|---|---|---|---|---|---|---|---|
0 | 16.99 | 1.01 | 女性 | 不 | 太阳 | 晚餐 | 2 | 0.059447 |
1 | 10.34 | 1.66 | 男性 | 不 | 太阳 | 晚餐 | 3 | 0.160542 |
2 | 21.01 | 3.50 | 男性 | 不 | 太阳 | 晚餐 | 3 | 0.166587 |
3 | 23.68 | 3.31 | 男性 | 不 | 太阳 | 晚餐 | 2 | 0.139780 |
4 | 24.59 | 3.61 | 女性 | 不 | 太阳 | 晚餐 | 4 | 0.146808 |
了解小费百分比
让我们首先尝试了解小费百分比分布。为此,我们可以使用
histplot
它生成直方图。sns.histplot(tips_df[
"tip_percentage"], binwidth=0.05)
文章图片
binwidth
属性以使其更具可读性,但现在我们可以快速了解我们对数据的理解。大多数客户会支付 15% 到 20% 的小费,我们也有一些小费超过 70% 的极端情况。这些值是异常值,它们总是值得探索以确定这些值是否错误。知道小费百分比是否随一天中的时刻而变化也很有趣,
sns.histplot(data=https://www.lsbin.com/tips_df, x="tip_percentage", binwidth=0.05, hue="time")
文章图片
hue
设置为 column
time
。这将强制图表为每个值使用不同的颜色并为其time
添加图例。一周中每天的提示总数
Python如何使用Seaborn可视化数据?另一个有趣的指标是了解工作人员根据一周中的哪一天可以获得多少小费。
sns.barplot(data=https://www.lsbin.com/tips_df, x="day", y="tip", estimator=np.sum)
文章图片
桌子大小和天数对小费的影响
有时我们想了解如何将变量一起发挥作用来确定输出。例如,星期几和桌子大小如何影响小费百分比?
为了绘制下一个图表,我们将结合
pivot
pandas的功能对信息进行预处理,然后绘制一个热图图表。pivot = tips_df.pivot_table(
index=[
"day"],
columns=[
"size"],
values="tip_percentage",
aggfunc=np.average)
sns.heatmap(pivot)
文章图片
seaborn
,你可以通过访问官方文档了解更多用例
。我希望你喜欢这篇文章,就像我喜欢写它一样。
【Python数据可视化(如何使用Seaborn绘制漂亮的图表())】谢谢阅读!
推荐阅读
- 20个常见的JavaScript面试问题合集(面试必备)
- 15个常见的NodeJS面试问题合集(面试可能遇到的)
- 使用MySQL构建NodeJS、TypeScript Rest API的分布指南
- 如何使用Axios发送HTTP请求(详细分步指南)
- 如何使用Python和Folium在地图上绘制数据()
- Keras用法教程(深入学习深度学习)
- CSS垂直居中内容的所有方法(如何垂直居中())
- AMD+Intel究竟是啥?
- 运用Vmware14虚拟机安装黑苹果MAC OS10.13的办法