摘要
本文主要是关于在pandas中如何画图(柱状图、曲线图等等)的一个简单教程。pandas 中画图其实也是利用了matplotlib库。所以会matplotlib库的下面的内容可以不用看了。
1.如何画柱状图?
1.1情景一
假如我们有一个数据集data,我们想统计data中某一列(feature)中每个值出现的次数,并给出柱状图分布。我们可以这样做:
需要用到的库:
import pandas as pd
import matplotlib.pyplot as plt
data['feature'].value_counts()
统计完后,每个取值的总数就有了,下面我想把这个转化成柱状图。可以在上面那句程序的后面直接实现。
newdata['feature'].value_counts().plot.bar()
把图画出来显示出来
plt.show()
画到这里,我们可以发现,这个图很单调。下面我可以设置每个柱子不同的颜色。也非常简单。
newdata['feature'].value_counts().plot.bar(color=['green','red','tan','blue','black'])
plt.show()
matlib所有颜色的取值都在这个链接里,自行参考: 所有颜色的取值
来这里,好看多了,但是总感觉少了点东西,我们可以考虑加上图例。图例的作用可以补充说明每个柱子代表什么。
我只要输入:
import matplotlib.patches as mpatches
newdata['feature'].value_counts().plot.bar(color=['green','red','tan','blue','black'])
patch=[]
patch.append(mpatches.Patch(color='green', label='sample_1'))
patch.append(mpatches.Patch(color='red', label='sample_2'))
patch.append(mpatches.Patch(color='tan', label='sample_3'))
patch.append(mpatches.Patch(color='blue', label='sample_4'))
patch.append(mpatches.Patch(color='black', label='sample_5'))
plt.legend(handles=patch)
plt.show()
其实到这里信息已经很充足,但是,还是漏了一个直观的信息,就是每个柱子的高度。
具体可以这样实现:
首先把每个柱子的宽度(width)设置成1,在bar()里面添加一个参数即可。
newdata['feature'].value_counts().plot.bar(width=1,color=['green','red','tan','blue','black'])
然后在每个柱子上的0.05高(可以自己设置)上显示柱子的高度。
for i,__ in enumerate(newdata['feature'].value_counts(sort=False).values.tolist()):
plt.text(i,__+0.05, '%.0f' % __, ha='center', va= 'bottom',fontsize=15)
这里简单的解释一下。
plt.text(x,y,s)
x是显示文字的横坐标,y是纵坐标,s是显示的内容。
因此,在上面我们设置每个柱子的宽度是1,故每隔一个单位,就需要显示一次,每次显示的高度即纵坐标就是这个柱子的高度(取值个数)
最后我们得到这个图: