绘制图表 - 数据的伙伴 Pandas | 莫烦Python

绘制图表

作者: 莫烦 编辑: 莫烦 2022-03-05

数据是服务于人的决策的,我们有一大堆数据,如果人没有真正意义上理解这些数据背后的含义, 那即便数据量再大,它也是无意义的。所以我们今天来探讨一种让人与数据之间构建信息传递桥梁的方法 - 数据可视化技术。

我有机会还会专门开一个数据可视化教程,今天我们缩小一下领域和使用的工具,其实在 Pandas 中, 就已经可以实现多种多样的数据可视化方案了。

我们来看看你拥有的数据可以被 Pandas 表达成什么样。

本节内容中将会使用到的功能:

plot

散点图Scatter

散点图实际在很多生活场景上都有运用的。比如你要描绘数据 sample 之间与拟合曲线之间呈现的关系

relationship

又或者在演示算法是如何进化 ,如何运动的。

3-3-0.gif

这些都是我之前做过的散点图案例,所以适用场景还是非常多的。在 Pandas 中,我们有非常方便的办法来直接对 DataFrame 做散点图。

点击运行之后,你会发现可以做出来一幅非常好看的图。当然这里的参数你可以随意搭配,比如试试不写 c=color 或者去掉 cmap="rainbow", 看看会有何影响。

我稍微解释一下几个你可能在乎的参数:

  • c: 对于这组数据中每个(x,y)数据点的颜色值
  • s: 画点的大小(size)
  • alpha:不透明度
  • cmap:colormap,你可以在这里找到非常丰富的案例

折线图Plot

同样在这个拟合关系的图中, 我们其实还绘制了一张折线图。可见,折线图也是非常有用的。

relationship

同样,还有很多机器学习的 loss 变化曲线 案例 1案例 2 也是用折线图绘制出来的。 而在 Pandas 中,折线图的绘制方法很简单。

我用最朴素的方法,绘制了一条歪歪扭扭的折线图,来体现它真的很。你可能很感兴趣,为什么这里的 c 参数传入的数值和上面散点图的不一样? 原来在折线图中,线的颜色最好是一样的,不然当线多了以后,你会发现不同颜色就看不出到底是那条线了。

你肯定会碰到多条线的时候,怎么处理?强大的 Pandas 给你答案。

只要我给多个 y,它就能给出多条线的位置,当然还帮你注明哪个颜色是哪条线。

条形图Bar

做两家公司收入对比,或者是年度值变化的时候,我们也很喜欢用条形图。直接点,我们看看 Pandas 的条形图怎么画。 假设有 abd 四家公司,这 5 年的营收对比可以这么画。

如果把他们放在一起来看占比多少时,我们还能这么干:

横着不好看,想画一个竖着的图,Pandas 也能轻松做到。你只需要把 bar() 换成 barh() 就好。多出来的这个 h 就是 horizontal 的意思。

分布图Hist

分布图在机器学习和统计学中非常重要,我经常画分布图,比如要画 神经网络的参数分布可视化。 又或者是 GAN 生成对抗网络当中的数据分布。

dist

我们用 plot.hist() 就能画出来了,这里的 hist 是 histogram,也就是分布的意思。

当然还会有多个分布重合在一起,你想对比这看看这些分布有无差别的时候,重合度怎么样的时候。

为了使你能轻松辨析出 abc 这几个分布的不同,我把 alpha 不透明度调整了一下,让你能看清楚重叠部分。而且 bins 柱状体的数量也调多了。

饼图Pie

你们的老板是不是喜欢画饼,那你也画一个给他?你在很多人的 ppt 里都可能见得到饼图,当你想给 Excel 批量话饼图的时候, 你就能结合读取 Excel 的教学,和这一节一起用。

如果你有多张大饼,想要对比?当然也没问题。可以多加一个 subpots 来分开画饼。legend 是用来确定要不要输出图例的,我这里嫌弃图例占地方, 就设置 legend=False

面积图Area

面积图偶尔你还是会看见的,比如在我的 进化算法教学中, 就使用了面积图来观看各个种群的占比随时间的变化情况。

4-2-1.png

如果你不想上下堆砌在一起观看,而是有统一的一个起点,那可以用这个参数 stacked=False

总结

好了,这节内容也还挺多的,我就先讲到这里。用 Pandas 画图还可以有很多其他花样, 你可以在这里看到更加细节的官方文档。 每种画图功能里面,也还有更多参数可以调整。记得不懂就要多在网上搜搜,多看官方文档。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。