好享学是高下制图推出的关于数据可视化经验分享栏目,我们将定期与您分享各界优秀人士的制图经验,一同学习。
说起数据可视化, Stata 用户想到的可能是 graph命令, R 用户想到的可能是ggplot 命令,而第三库丰富的 Python 则会提供给你更多的选择。对于经济学专业的同学们,在实际学习中比较常用的数据可视化需求,其实有两类情况:一种是在描述性统计中描述数据的概括,为后续的实证分析做支持;另一种是在实证分析中,为了让自己的分析更“出彩”或者是用了某些新的方法(例如机器学习),能够更加形象地展示计量结果而做数据分析的可视化呈现。
对于第一类的可视化需求,一般流程多是通过诸如 Excel 一类的软件完成的,而当你学会了 Python 以后,你可以非常轻松地利用 matplotlib 库,来实现基础的数据可视化。
matplotlib 是 Python 数据可视化的基础,众多的可视化第三包都是基于 matplotlib 派生的。如果你学习了 Pandas,会发现,Pandas 其实也可以做数据呈现,通过 dataframe.plot() 的代码,就能够呈现出数据了。Pandas 的可视化呈现就是在调用 matplotlib。
也许你已经发现了,绝大多数推荐 Python 数据可视化的文章,都会将它写在第一位。这也从侧面反映了其重要性。学好 matplotlib 已经能够满足绝大多数的数据可视化需求了,在学完基础的语法及用法后,推荐去参考下面的官方示例链接,根据示例再进一步地提高自己的代码水平。
官方地址:
https://matplotlib.org/
官方示例:https://matplotlib.org/gallery/index.html
“
官方示例页面的每一张图片,点击后都能看到详细的 Python 代码。还有什么比这样的学习方式更快捷高效的呢?
我们要介绍了的第二个可视化包,同样名声在外,许多 Python 老鸟更倾向于使用 Seaborn 来绘制他们的图表。Seaborn 也是基于 matplotlib ,它对 matplotlib 进行了一定的封装,让你能够更加快速上手的同时绘制出更美观的图表。当然,封装意味着一定自由度的缺失,如果你想更自主地作图,你依然可以选择使用 matplotlib。
同样,下面官方示例的链接中给出了每一种图表具体的 Python 的代码。
官方地址:
https://seaborn.pydata.org/
官方示例:https://seaborn.pydata.org/examples/index.html
ggplot2:什么?ggplot 不是 R 的包吗?是的,ggplot2 是 R 语言上著名的可视化包,但是,现在你可以在 Python 上使用它了。语法结构会让 R 语言的用户倍感亲切。Bokeh:与 ggplot 的代码理念相似的制图包,同样推荐给接触过R语言的用户。Plotly:Plotly 是一个拿过年度10佳的开源项目,但是要使用它,你首先需要在他们的官网:https://plot.ly/python/,拿到一个 API 密钥才能看到你做的图。Plotly 有比较好的用户界面,当你做完图后,可以通过鼠标点点的方式进行颜色、数轴的修改。
科普园地 /Science Park
API:即应用程序编程接口(Application Programming Interface),所谓API就是软件封装后留下了的接口,你可以类比为一个插座,当你用正确的插头插到这个接口(API)时,就成功通电了。上例中,Plotly 这块第三包的使用方式,就是需要你在代码中填入一个从官方获取的密钥,这个密钥标示了你的个人身份,就好像身份证一般。通过这个密钥,Plotly才会开放API给用户绘制图表。不然,仅仅靠代码,是没办法看到可视化的结果的。
pyecharts:来自国内 百度 的良心产品,源自 echarts 项目(一个JavaScript项目)。所以在绘图中的一些定制项会非常类似 JavaScript 的程序理念。相对而言,显得不那么像 Python 的逻辑。但是作为用户,参照文档依然能够实现比较好的数据可视化效果。
接下来要说的是一些在实证分析中可能会用到的可视化包。首先需要明确的是,上述提到的可视化包,都可以在论文的任何地方出现。
Matplotlib 广泛的在许多计量、机器学习包中被使用。因此,在许多情况下,通过计量、机器学习库 + matplotlib 就能够实现很好的可视化效果。例如 statsmodels + matplotlib:
再例如:sklearn + matplotlib:
2. Yellowbrick 机器学习中的可视化呈现
可视化呈现机器学习,帮助你更好地做模型的选择与参数的调整。Yellowbrick 是一个能够帮助你查看机器学习模型训练结果的库,能够呈现:1、特征的可视化
2、分类的可视化
3、回归可视化
4、聚类可视化
5、模型选择可视化
6、文本可视化
在众多的机器学习问题中都帮助到用户,更直观地观察训练结果。你可以通过官方示例的地址,查看 Yellowbrick 是如何呈现这些数据集的。
官方地址:
https://www.scikit-yb.org/
官方示例:https://www.scikit-yb.org/en/latest/gallery.html
3. 地图可视化库:folium 与 Basemp
folium 和 Basemp 都是在python中较多被使用的地图可视化库。Folium 中有较多的地图类型可供使用,例如下图这种风格的地图:
你可以通过 folium 创建热力图、设色图,甚至可以在地图上绘制各种图标。他们的官方示例存放在了 jupyter notebook 中,关于 jupyter notebook,可以参考我们此前的推文(忘记了的小伙伴可以在公众号内发送暗语“复习”查看喔~)。
项目地址:
https://python-visualization.github.io/folium/
官方示例:
https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/
Basemp 提高了成熟的静态地图绘制的功能。在地理信息读写、坐标映射、空间坐标转化与投影等方面做得都比较好。并且它可以使用常规的地图素材数据源(shp)作为底图进行叠加绘图,方便用户的使用。
项目地址:
https://matplotlib.org/basemap/index.html
官方示例:https://matplotlib.org/basemap/users/examples.html
最后简单小结一下,对于经济学专业的学生来说,用 Python 画图,如果只是简单的绘图需求,那么使用 Seaborn 能够快速绘制出好看的图表,当然如果你能够正确地申请到 Plotly 的密钥,我们同样推荐使用 Plotly。而对于想要用 Python 实现更多可视化需求的用户,那么学好 matplotlib 必不可少。
这里是大数据、分析技术与学术研究的三叉路口
作者:王学习(黄胜蓝)审阅:杨奇明、赵建国(赵哲)编辑:青酱