绘制图表
数据是服务于人的决策的,我们有一大堆数据,如果人没有真正意义上理解这些数据背后的含义, 那即便数据量再大,它也是无意义的。所以我们今天来探讨一种让人与数据之间构建信息传递桥梁的方法 - 数据可视化技术。
我有机会还会专门开一个数据可视化教程,今天我们缩小一下领域和使用的工具,其实在 Pandas 中, 就已经可以实现多种多样的数据可视化方案了。
我们来看看你拥有的数据可以被 Pandas 表达成什么样。
本节内容中将会使用到的功能:
散点图Scatter¶
散点图实际在很多生活场景上都有运用的。比如你要描绘数据 sample 之间与拟合曲线之间呈现的关系,
又或者在演示算法是如何进化 ,如何运动的。
这些都是我之前做过的散点图案例,所以适用场景还是非常多的。在 Pandas 中,我们有非常方便的办法来直接对 DataFrame 做散点图。
点击运行之后,你会发现可以做出来一幅非常好看的图。当然这里的参数你可以随意搭配,比如试试不写 c=color
或者去掉 cmap="rainbow"
, 看看会有何影响。
我稍微解释一下几个你可能在乎的参数:
- c: 对于这组数据中每个(x,y)数据点的颜色值
- s: 画点的大小(size)
- alpha:不透明度
- cmap:colormap,你可以在这里找到非常丰富的案例
折线图Plot¶
同样在这个拟合关系的图中, 我们其实还绘制了一张折线图。可见,折线图也是非常有用的。
同样,还有很多机器学习的 loss 变化曲线 案例 1, 案例 2 也是用折线图绘制出来的。 而在 Pandas 中,折线图的绘制方法很简单。
我用最朴素的方法,绘制了一条歪歪扭扭的折线图,来体现它真的很折
。你可能很感兴趣,为什么这里的 c
参数传入的数值和上面散点图的不一样? 原来在折线图中,线的颜色最好是一样的,不然当线多了以后,你会发现不同颜色就看不出到底是那条线了。
你肯定会碰到多条线的时候,怎么处理?强大的 Pandas 给你答案。
只要我给多个 y
,它就能给出多条线的位置,当然还帮你注明哪个颜色是哪条线。
条形图Bar¶
做两家公司收入对比,或者是年度值变化的时候,我们也很喜欢用条形图。直接点,我们看看 Pandas 的条形图怎么画。 假设有 abc 三家公司,这 5 年的营收对比可以这么画。
如果把他们放在一起来看占比多少时,我们还能这么干:
横着不好看,想画一个竖着的图,Pandas 也能轻松做到。你只需要把 bar()
换成 barh()
就好。多出来的这个 h 就是 horizontal 的意思。
分布图Hist¶
分布图在机器学习和统计学中非常重要,我经常画分布图,比如要画 神经网络的参数分布可视化。 又或者是 GAN 生成对抗网络当中的数据分布。
我们用 plot.hist()
就能画出来了,这里的 hist 是 histogram,也就是分布的意思。
当然还会有多个分布重合在一起,你想对比这看看这些分布有无差别的时候,重合度怎么样的时候。
为了使你能轻松辨析出 abc 这几个分布的不同,我把 alpha
不透明度调整了一下,让你能看清楚重叠部分。而且 bins
柱状体的数量也调多了。
饼图Pie¶
你们的老板是不是喜欢画饼,那你也画一个给他?你在很多人的 ppt 里都可能见得到饼图,当你想给 Excel 批量话饼图的时候, 你就能结合读取 Excel 的教学,和这一节一起用。
如果你有多张大饼,想要对比?当然也没问题。可以多加一个 subpots
来分开画饼。legend
是用来确定要不要输出图例的,我这里嫌弃图例占地方, 就设置 legend=False
。
面积图Area¶
面积图偶尔你还是会看见的,比如在我的 进化算法教学中, 就使用了面积图来观看各个种群的占比随时间的变化情况。
如果你不想上下堆砌在一起观看,而是有统一的一个起点,那可以用这个参数 stacked=False
。
总结¶
好了,这节内容也还挺多的,我就先讲到这里。用 Pandas 画图还可以有很多其他花样, 你可以在这里看到更加细节的官方文档。 每种画图功能里面,也还有更多参数可以调整。记得不懂就要多在网上搜搜,多看官方文档。