在 Bokeh 中构建可视化
介绍
数据可视化是探索性数据分析的重要组成部分。它使我们能够识别模式、检测异常并为稳健的预测模型创建有意义的特征。Bokeh 是一个用于执行数据可视化的强大库。在本指南中,您将学习如何使用 Python 中的 Bokeh 库创建数据可视化。
数据
在本指南中,我们将使用一个虚构的贷款申请人数据集,其中包含 600 个观测值和 10 个变量,如下所述:
Marital_status:申请人是否已婚(“是”)或未婚(“否”)
Is_graduate:申请人是否已毕业(“是”)或不是(“否”)
收入:申请人的年收入(美元)
Loan_amount:提交申请的贷款金额(美元)
Credit_score:申请人的信用评分是否令人满意
审批状态:贷款申请是否获得批准(“是”)或未获得批准(“否”)
年龄:申请人的年龄(岁)
性别:申请人是男性(“M”)还是女性(“F”)
投资额:申请人申报的股票和共同基金投资总额(美元)
目的:申请贷款的目的
让我们首先加载所需的库和数据。
import pandas as pd
import numpy as np
dat = pd.read_csv("data_vis2.csv")
print(dat.shape)
dat.head(5)
输出:
(600, 10)
| | Marital_status | Is_graduate | Income | Loan_amount | Credit_score | approval_status | Age | Sex | Investment | Purpose |
|--- |---------------- |------------- |-------- |------------- |-------------- |----------------- |----- |----- |------------ |----------- |
| 0 | Yes | No | 30000 | 60000 | Satisfactory | Yes | 25 | F | 21000 | Education |
| 1 | No | Yes | 30000 | 90000 | Satisfactory | Yes | 29 | F | 21000 | Travel |
| 2 | Yes | Yes | 30000 | 90000 | Satisfactory | No | 27 | M | 21000 | Others |
| 3 | No | Yes | 30000 | 90000 | Satisfactory | No | 33 | F | 21000 | Others |
| 4 | Yes | Yes | 89900 | 80910 | Satisfactory | Yes | 29 | M | 62930 | Travel |
输出显示数据的前五个观察值。让我们更深入地了解可视化效果。
使用 Bokeh 进行绘图
Bokeh是一个交互式可视化库,提供简洁的多功能高级图形构建。它还为大数据集提供高性能交互性。它非常适合统计图表,并且不需要任何 JavaScript 的先决知识。
Bokeh 中可视化的基本结构是一次构建一层图形。这意味着我们首先创建一个图形,然后向图形中添加元素。这些元素称为glyphs,类似于R 中 ggplot 库的geoms。我们将在下面的示例中探讨这一概念。
第一步是导入所需的库。由于我们正在使用 Bokeh 库,因此我们使用下面的第一行代码导入它。第二行指定我们将在何处显示输出。我们希望输出显示在笔记本中,我们已在第二行代码中为其导入了所需的模块。第三行从 Bokeh 的绘图实用程序导入图形模块。
有了所需的库后,我们使用第四行和第五行代码创建年龄和收入变量的散点图。第六行代码将输出设置为在笔记本中绘制,而最后一行显示该图。
# Lines 1 - 3
import bokeh
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
# Lines 4 - 5
p = figure(plot_width = 600, plot_height = 600,
title = 'Scatter Plot between Age and Income',
x_axis_label = 'Age', y_axis_label = 'Income')
p.circle(dat['Age'], dat['Income'])
# Lines 6 - 7
output_notebook()
show(p)
输出:
上面的图表也可以在其他绘图库中制作,例如 matplotlib 或 seaborn。但是,使用 Bokeh,我们可以获得一些额外的可配置工具,例如平移、缩放和绘图保存功能。
线条
在 Bokeh 中,可以使用.line()函数绘制线条。下面的示例绘制了两个数组months和Units_sold 的月销售量。以下代码将生成图表。
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
months = [1, 2, 3, 4, 5, 6]
units_sold = [100, 120, 90, 85, 115, 150]
p = figure(x_axis_label='Months', y_axis_label='Units sold')
p.line(months,units_sold)
output_notebook()
show(p)
输出:
我们还可以使用以下代码向上述折线图添加标记。参数fill_color和size指定标记的颜色和大小。
p.circle(months,units_sold, fill_color='black', size=20)
output_notebook()
show(p)
输出:
列数据源
ColumnDataSource是 Bokeh 的基本数据结构。它是一个将字符串列名映射到数据序列的对象,并且可以在字形之间共享以链接选择。我们可以通过将数据框转换为 ColumnDataSource 来向 Bokeh 图添加功能。
首先,我们将使用下面的第一行代码导入ColumnDataSource模块,然后第二行将dat数据框转换为名为source 的ColumnDataSource对象。现在,实际数据保存在字典中,可以使用下面的第三行代码访问。
from bokeh.models import ColumnDataSource
source = ColumnDataSource(dat)
source.data.keys()
输出:
dict_keys(['Marital_status', 'Is_graduate', 'Income', 'Loan_amount', 'Credit_score', 'approval_status', 'Age', 'Sex', 'Investment', 'Purpose', 'index'])
上面的输出显示字典键引用数据框dat的变量名。现在我们将通过引入第三个变量approval_status并用颜色映射它来定制可视化。
下面的第一行代码导入了CategoricalColorMapper模块,而第二行使用Income和Age变量创建了图表。第三行创建了一个颜色映射器对象mapper,它指定了分类标签和相应的调色板。第四行将字形圆添加到图形中,而最后两行代码显示生成的图表。
from bokeh.models import CategoricalColorMapper
p = figure(x_axis_label='Age', y_axis_label='Income')
mapper = CategoricalColorMapper(factors=['Yes', 'No'], palette=['green', 'red'])
p.circle('Age', 'Income', source=source, color=dict(field='approval_status', transform=mapper), legend='approval_status')
output_notebook()
show(p)
输出:
布局
Bokeh 还可用于创建需要灵活布局的分析仪表板。我们将研究布局的功能,但在此之前,让我们使用下面的代码行创建三个图表。
# first plot
plot1 = figure(x_axis_label='Age', y_axis_label='Income')
plot1.circle('Age', 'Income', source=source)
# second plot
plot2 = figure(x_axis_label='Age', y_axis_label='Loan_amount)')
plot2.circle('Age', 'Loan_amount', source=source)
# third plot
plot3 = figure(x_axis_label='Age', y_axis_label='Investment)')
plot3.circle('Age', 'Investment', source=source)
准备好图表后,我们将创建列布局。第一行代码导入列对象,而第二行指定布局。我们将在一列中显示三个图表。最后两行代码创建结果图表。
from bokeh.layouts import column
layout_col = column(plot1, plot2, plot3)
output_notebook()
show(layout_col)
输出:
结论
在本指南中,您学习了使用 Python 中的 Bokeh 库进行可视化的技术。您还学习了如何自定义图表以及如何使用布局功能来构建用于探索性数据分析的高级可视化。
要了解有关使用 Python 进行数据科学的更多信息,请参阅以下指南。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~