数据转化成更直观的图片,对于理解数据背后的真相很有帮助。如果你有这方面的需求,而且还在使用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

— 完 —

量子位 · QbitAI

վ'ᴗ' ի 追踪AI技术和产品新动态量子位​www.zhihu.com

欢迎大家关注我们,以及订阅我们的知乎专栏

python编程软件哪个好-有哪些值得推荐的 Python 开发工具?相关推荐

  1. 适合ipad的python编程软件-涨知识!iPad还可以运行Python代码

    其实,不只是iPad,手机也可以. 痛点 我组织过几次线下编程工作坊,带着同学们用Python处理数据科学问题. 其中最让人头疼的,就是运行环境的安装. 实事求是地讲,参加工作坊之前,我已经做了认真准 ...

  2. python开发的软件有哪些-有哪些值得推荐的 Python 开发工具?

    这款开发工具可谓是Python开发者的救星,彻底克服编程开发障碍的神器. ​对于编程语言初学者一个很大的障碍就是无法理解每一段代码的含义是什么?执行这段代码会发生什么? 理解执行每段代码会发生什么至关 ...

  3. 十款值得推荐的php开发工具

    下面介绍10个免费.强大的PHP编辑器/开发工具.这些编辑器拥有调试器.增量执行PHP脚本.查看每一行的所有变量值等功能. 1) Notepad ++ Notepad++是一款非常有特色的编辑器,是开 ...

  4. python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀

    开发者可以将 PYPL 作为一个参考,决定学习何种语言或 IDE,或者在新的软件项目中使用何种语言或数据库. 9 月份的榜单如下: 前五名分别是 Python.Java.JavaScript.C# 与 ...

  5. 手机版python编程软件下载,手机python编程软件

    1.求 python 64位安装包下载 软件介绍: python是一款面向对象.解释型.动态数据类型的高级编程设计语言.它拥有语言上的简洁性.可读性和易维护性,在图形处理.数学处理.文本处理.系统编程 ...

  6. python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版

    Python编程软件(专业电脑编程工具)是一款十分优秀好用的专业电脑编程辅助工具.哪款编程工具比较好用?小编为你推荐这款Python编程软件,功能强大全面,使用后可以帮助用户更轻松高效的进行电脑编程操 ...

  7. 推荐一款手机Python编程软件

    前言 推荐一款手机Python编程软件 最近网友问我有没有手机上运行Python代码的编程软件,所以根据网友们的需求,我介绍一款手机Python编程软件. 具体步骤如下 下载PyDrand3手机编程软 ...

  8. python电脑下载什么软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版

    Python编程软件(专业电脑编程工具)是一款十分优秀好用的专业电脑编程辅助工具.哪款编程工具比较好用?小编为你推荐这款Python编程软件,功能强大全面,使用后可以帮助用户更轻松高效的进行电脑编程操 ...

  9. 学python哪个网站好-有哪些值得推荐的Python学习网站|

    现在那个网站可以学习python爬虫? 为大家分享Python学习经验: 1.寻找一本Python书籍,要求浅显易懂.全面细致程较好,专注于这一本,从头开始研究,把整本书掌握透彻. 2.找一个项目练手 ...

最新文章

  1. 机器学习(18)-- SVM支持向量机(根据身高体重分类性别)
  2. Linux 环境下的高级隐藏技术
  3. Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
  4. React Native debug debugger
  5. matlab 连续显示,请教下MATLAB一个问题啊 我想检测一行数据里面出现连续出现0的次数,...
  6. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题
  7. 【解析】1013 Battle Over Cities (25 分)_31行代码AC
  8. CSS:页脚紧贴底部
  9. html 用svg缩放拉伸,html – 拉伸SVG以适应其父级的100%高度和宽度
  10. 点击list view中一行内容可以在combox中显示_java版飞机大战小游戏详细教程(零基础小白也可以分分钟学会!)...
  11. dubbo注册中心介绍
  12. 蓝桥杯2016年七届C/C++省赛C组第三题-平方怪圈
  13. Java实现Excel文件导出或者下载
  14. 绘画软件:krita for Mac
  15. C++之线程信号量机制
  16. 网页中留言板的制作案例
  17. 长沙理工大学本科毕业论文答辩和论文选题PPT模板
  18. 如何使用基础的conda
  19. P1075 [NOIP2012 普及组] 质因数分解
  20. 【转载】Android 面试总结

热门文章

  1. npm install cracoc 老版本_npmamp;nvmamp;nrmamp;yarn常用的命令和常见的手法
  2. jdk jre jvm的关系
  3. 特征提取与检测(四) : HOG特征
  4. tensorflow中的global_step参数(转)
  5. 有谁做过在C# winform里,显示3D max文件的呢?请赐教了。
  6. 52_并发编程-线程-线程池
  7. Java 疑问自问自答
  8. 微信小程序wx.request请求用POST后台得不到传递数据
  9. 在windows上传一个新的项目到GitHub上
  10. 如何用wdcp面板创建网站(转百度经验)