数据可视化是一种技术,它允许数据科学家将原始数据转换为图表,从而产生有价值的见解。图表降低了数据的复杂性,并使任何用户都更容易理解。
有很多工具可以执行数据可视化,例如 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 的工作原理是捕获包含所有数据的整个数据帧或数组,并执行语义映射和统计聚合所需的所有内部功能,以将数据转换为信息图。
它抽象了复杂性,同时允许你根据自己的要求设计图。
安装 Seaborn
Python如何使用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 = 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=flights_data, x="year", y="passengers")
很容易吧?该函数scatterplot
需要我们想要绘制的数据集以及代表x
和y
轴的列。
线图
如何使用Seaborn绘制图表?此图绘制一条线,表示连续或分类数据的循环。它是一种流行且众所周知的图表类型,而且制作起来非常容易。同样之前,我们使用功能lineplot
与数据集和代表列x
和y
轴。Seaborn
会做剩下的。
sns.lineplot(data=flights_data, x="year", y="passengers")
条形图
Python如何使用Seaborn可视化数据?它可能是最著名的图表类型,正如你可能已经预测的那样,我们可以seaborn
使用函数绘制这种类型的图,就像绘制线条和散点图一样barplot
。
sns.barplot(data=flights_data, x="year", y="passengers")
它非常丰富多彩,我知道,我们稍后将在指南中学习如何自定义它。
使用 matplotlib 扩展
Seaborn 建立在 之上matplotlib
,扩展了其功能并抽象了复杂性。话虽如此,它并没有限制其功能。seaborn
可以使用matplotlib
库中的函数自定义任何图表。它可以在特定操作中派上用场,并允许 seaborn 利用 的力量而matplotlib
无需重写其所有功能。
例如,假设你想使用seaborn
;同时绘制多个图形;那么你可以使用subplot
来自matplotlib
.
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)
使用该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=drinks_df)
用样式制作漂亮的情节
如何使用Seaborn绘制图表?Seaborn 使你能够更改图形界面,并且它提供了五种不同的开箱即用样式:darkgrid、whitegrid、dark、white和ticks。
sns.set_style("darkgrid")
sns.lineplot(data = data, x = "year", y = "passengers")
这是另一个例子
sns.set_style("whitegrid")
sns.lineplot(data=flights_data, x="year", y="passengers")
Python Seaborn数据可视化教程:很酷的用例
我们了解了 的基础知识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)
如何使用Seaborn绘制图表?这很好,我们必须自定义binwidth
属性以使其更具可读性,但现在我们可以快速了解我们对数据的理解。大多数客户会支付 15% 到 20% 的小费,我们也有一些小费超过 70% 的极端情况。这些值是异常值,它们总是值得探索以确定这些值是否错误。
知道小费百分比是否随一天中的时刻而变化也很有趣,
sns.histplot(data=tips_df, x="tip_percentage", binwidth=0.05, hue="time")
这次我们加载了包含完整数据集而不是一列的图表,然后我们将属性hue
设置为 column time
。这将强制图表为每个值使用不同的颜色并为其time
添加图例。
一周中每天的提示总数
Python如何使用Seaborn可视化数据?另一个有趣的指标是了解工作人员根据一周中的哪一天可以获得多少小费。
sns.barplot(data=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)
Python Seaborn数据可视化教程结论
当然,我们可以做的还有很多seaborn
,你可以通过访问官方文档了解更多用例 。
我希望你喜欢这篇文章,就像我喜欢写它一样。
谢谢阅读!