比 Excel 更强大,Python 的可视化库 Altair 入门
点击上方“码农突围”,马上关注
这里是码农充电第一站,回复“666”,获取一份专属大礼包
真爱,请设置“星标”或点个“在看”
原作者 Parul Pandey
晓查 编译整理
量子位 出品 | 公众号 QbitAI
数据转化成更直观的图片,对于理解数据背后的真相很有帮助。如果你有这方面的需求,而且还在使用Python,那么强烈推荐你试一试Altair。
Altair是一个专为Python编写的可视化软件包,它能让数据科学家更多地关注数据本身和其内在的联系。
Altair由华盛顿大学的数据科学家Jake Vanderplas编写,目前在GitHub上已经收获超过3000星。
最近,Medium上一位小姐姐Parul Pandey分享了Altair的入门教程,希望对从事数据科学的用户有帮助。
使用教程
Parul以汽车数据为例,将一个汽车数据集“cars”载入到Altair中。
cars中包含汽车的生产年份、耗油量、原产国等9个方面的数据,后面将对这些内容进行可视化处理。
安装和导入Altair软件包
除了安装Altair和它的依赖软件外,还需要安装其他前端工具,比如Jupyter Notebook、JupyterLab、Colab等等。
Parul小姐姐推荐安装JupyterLab:
$ pip install -U altair vega_datasets jupyterlab
需要注意的是,由于Altair的教程文档中还包含vega数据集,因此也需要一并安装上。
接着在终端中输入:jupyter lab,就能在你的浏览器中自动打开它啦。
在代码开头别忘了导入Altair:
import altair as alt
完成以上准备工作,我们就可以开始绘图了
开始绘制图表
Altair中的基本对象是Chart,它将数据框作为单个参数。你可以这样定义它:
chart = alt.Chart(cars)
Chart有三个基本方法:数据(data)、标记(mark)和编码(encode),使用它们的格式如下:
alt.Chart(data).mark_point().encode(
encoding_1='column_1',
encoding_2='column_2',# etc.)
数据顾名思义,直接导入cars数据集即可。标记和编码则决定着绘制图表的样式,下面着重介绍这两部分。
标记可以让用户在图中以不同形状来表示数据点,比如使用实心点、空心圆、方块等等。
如果我们只调用这个方法,那么所有的数据点都将重叠在一起:
这显然是没有意义的,还需要有编码来指定图像的具体内容。常用的编码有:
x: x轴数值
y: y轴数值
color: 标记点颜色
opacity: 标记点的透明度
shape: 标记点的形状
size: 标记点的大小
row: 按行分列图片
column: 按列分列图片
以汽车的耗油量为例,把所有汽车的数据绘制成一个一维散点图,指定x轴为耗油量:
alt.Chart(cars).mark_point().encode(
x='Miles_per_Gallon'
)
但是使用mark_point()会让所有标记点混杂在一起,为了让图像更清晰,可以替换成棒状标记点mark_tick():
alt.Chart(cars).mark_tick().encode(
x='Miles_per_Gallon'
)
以耗油量为X轴、马力为Y轴,绘制所有汽车的分布,就得到一张二维图像:
alt.Chart(cars).mark_line().encode(
x='Miles_per_Gallon',
y='Horsepower'
)
给图表上色
前面我们已经学会了绘制二维图像,如果能给不同组的数据分配不同的颜色,就相当于给数据增加了第三个维度。
alt.Chart(cars).mark_point().encode(
x='Miles_per_Gallon',
y='Horsepower',
color='Origin'
)
上面的图中,第三个维度“原产国”是一个离散变量。
使用颜色刻度表,我们还能实现对连续变量的上色,比如在上图中加入“加速度”维度,颜色越深表示加速度越大:
alt.Chart(cars).mark_point().encode(
x='Miles_per_Gallon',
y='Horsepower',
color='Acceleration'
)
数据的分类与汇总
上面的例子中,我们使用的主要是散点图。实际上,Altair还能方便地对数据进行分类和汇总,绘制统计直方图。
相比其他绘图工具,Altair的特点在于不需要调用其他函数,而是直接在数轴上进行修改。
例如统计不同油耗区间的汽车数量,对X轴使用alt.X(),指定数据和间隔大小,对Y轴使用count()统计数量。
alt.Chart(cars).mark_bar().encode(
x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),
y='count()'
)
为了分别表示出不同原产国汽车的油耗分布,前文提到的上色方法也能直方图中使用,这样就构成一幅分段的统计直方图:
alt.Chart(cars).mark_bar().encode(
x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),
y='count()',
color='Origin'
)
如果你觉得上图还不够直观,那么可以用column将汽车按不同原产国分列成3张直方图:
alt.Chart(cars).mark_bar().encode(
x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),
y='count()',
color='Origin',
column='Origin'
)
交互
除了绘制基本图像,Altair强大之处在于用户可以与图像进行交互,包括平移、缩放、选中某一块数据等操作。
在绘制图片的代码后面,调用interactive()模块,就能实现平移、缩放:
Altair还为创建交互式图像提供了一个selection的API:
在选择功能上,我们能做出一些更酷炫的高级功能,例如对选中的数据点进行统计,生成实时的直方图。
叠加多个图层
如果把前面的汽车耗油量按年度计算出平均值:
alt.Chart(cars).mark_point().encode(
x='Miles_per_Gallon',
y='Horsepower',
color='Acceleration'
)
在统计学上,我们还能定义平均值的置信区间,为了让图表更好看,可以分别列出三个不同产地汽车的耗油量平均值置信区间:
alt.Chart(cars).mark_area(opacity=0.3).encode(
x=alt.X(‘Year’, timeUnit=’year’),
y=alt.Y(‘ci0(Miles_per_Gallon)’, axis=alt.Axis(title=’Miles per Gallon’)),
y2=’ci1(Miles_per_Gallon)’,
color=’Origin’
).properties(
width=600
)
最后我们可以用图层API将平均值和置信区间两幅图叠加起来:
spread = alt.Chart(cars).mark_area(opacity=0.3).encode(
x=alt.X('Year', timeUnit='year'),
y=alt.Y('ci0(Miles_per_Gallon)', axis=alt.Axis(title='Miles per Gallon')),
y2='ci1(Miles_per_Gallon)',
color='Origin'
).properties(
width=800
)
lines = alt.Chart(cars).mark_line().encode(
x=alt.X('Year', timeUnit='year'),
y='mean(Miles_per_Gallon)',
color='Origin'
).properties(
width=800
)
spread + lines
更多内容
本文只是介绍了Altair的一些基本使用方法,远远不能涵盖它所有的功能。如果需要了解更多,请参阅GitHub页说明:
https://github.com/altair-viz/altair
教程原文:
https://medium.com/analytics-vidhya/exploratory-data-visualisation-with-altair-b8d85494795c
推荐阅读:
Python基础专题????
1、Python中的线程和进程2、Python多线程实战3、Python中数据深拷贝、浅拷贝4、Python中的作用域5、Python中的内存管理机制Python爬虫和数据分析专题????
1、Python爬取某站上海租房图片2、Python爬取拉勾网数据并进行数据可视化3、Python爬虫小白入门-爬取披头士乐队历年专辑封面-网易云音乐4、Python动手分析天猫内衣售卖数据,得到你想知道的信息5、Python抓取猫眼近10万条评论并分析电影《一出好戏》到底如何?6、Python爬虫实战:利用scrapy,短短50行代码下载整站短视频7、Python 通过采集两万条数据,对《无名之辈》影评分析8、想不想知道充气娃娃到底什么感觉?来!我用Python告诉你9、Python爬虫:动态爬取QQ说说并生成词云,分析朋友状况
10、Python + PyQt5 实现美剧爬虫可视工具
11、Python爬取批量获取高清壁纸12、有趣的一个Python爬虫实例(爬取段子,笑话,情感句子)13、Python爬虫获取电子书资源实战14、面试官问我会用Python爬虫腾讯视频么?我是这样回复的...15、18个Python爬虫实战案例(已开源)16、Python爬虫44万条数据:如何成为网易云音乐评论区的网红段子手?17、深夜,我用Python爬取了整个斗图网站,不服来斗18、再推荐23个Python爬虫开源项目代码:微信、淘宝、豆瓣19、我用Python爬了点你们需要的电影,这些电影真的很不错~20、Python爬取抖音高颜值小姐姐视频Python综合专题????
1、使用 Python 进行微信好友分析2、Python面试题37道(附答案)看完面试不愁了3、Python 利用opencv去除图片水印4、被女朋友三番两次拉黑后,我用 Python 写了个“舔狗”必备神器5、昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码6、东半球最强Python新手100天学习计划开源,这次再学不会算我输!7、向Excel说再见,神级编辑器统一表格与Python8、牛逼,竟然可以用 Python 操作 Word 文档,这么多的骚操作!
更多爬虫,关注“Python技术之巅”公号,后台回复:“爬虫实战”,获取独家整理的一份爬虫汇总。长按二维码识别关注分享Python&AI干货,点亮 在看
比 Excel 更强大,Python 的可视化库 Altair 入门相关推荐
- 再见Excel,这个Python数据可视化库太炫酷了
来源:网络 由下面代码生成 from chord import Chordmatrix = [[0, 5, 6, 4, 7, 4],[5, 0, 5, 4, 6, 5],[6, 5, 0, 4, 5 ...
- qpython3绘图_比Excel制图更强大,Python可视化工具Altair入门教程
比 Excel 制图更强大,Python 可视化工具 Altair 入门教程 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用 Python,那么强烈推荐你试 ...
- python每行输出5个数据_12个流行的Python数据可视化库总结
总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1. matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Pyt ...
- 最近很火的数据动图python_12个流行的Python数据可视化库总结
总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1. matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Py ...
- json树状图可视化_12个流行的Python数据可视化库总结
总结了10个不同领域的 Python 数据可视化库,有常用的,也有比较小众的. 1. matplotlib matplotlib是Python数据可视化库的OG.尽管它已有十多年的历史,但仍然是Pyt ...
- 不会做图表?10个Python数据可视化库来帮你!
1.matplotlib 两个直方图 matplotlib 是Python可视化程序库的泰斗.经过十几年它任然是Python使用者最常用的画图库.它的设计和在1980年代被设计的商业化程序语言MATL ...
- python数据可视化库_python和r中用于数据可视化的前9个库
python数据可视化库 In the rapidly growing world of today, when technology is expanding at a rate like neve ...
- python 交互式可视化库_Python 交互式可视化库
Python 交互式可视化库 所属分类:中间件编程 开发工具:Python 文件大小:12843KB 下载次数:1 上传日期:2018-12-06 18:40:56 上 传 者:孤独的老张 说明: 一 ...
- 视频教程-Python数据可视化库:Matplotlib视频课程-Python
Python数据可视化库:Matplotlib视频课程 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师, ...
最新文章
- 传智168期JavaEE struts2杜宏 day 29~day31笔记(2017年2月4日23:14:00)
- Pycharm报错合集:在pycharm运行anaconda配置的Pytorch环境报错(Environment location diretory is not empty )
- Spring Boot神操作-多个数据源Service层封装
- c语言给定变量a的初始值,2018年9月计算机二级C语言考试冲刺提分试题(一)
- Win7下用IIS发布网站
- Hadoop 02_初学必知
- poj1236 Tarjan算法模板 详解
- android 线程池 怎么用,android中的线程池 怎么用
- transcad安装教程_Transcad基础视频教程
- java的体重_标准体重计算示例代码
- 使用语义分割架构的文档扫描仪 DeepLabV3
- 云计算大数据中心(清明作业)
- python找不到txt_python 打开txt文件
- java基于ssm开发的多商家书店商城系统
- 网站必备之简繁切换功能实现 1
- 迅雷2010校园招聘吉林大学第二次笔试题
- C语言math.h库函数中atan与atan2的区别
- 国产网络分析仪的介绍
- 一个SQL获取某股票连续上涨的天数
- 使用腾讯IP查询-判断IP归属地-Vic's blog