python之pandas中的绘图函数

pandas中的绘图函数

matplotlib实际上是一种比较低级的工具。要组装一张图表,你得用它的各种基础组件才行:数据展示(即:图表类型:线型图、柱状图、盒形图、散布图、等值线图等)、图例、标签、刻度标签以及其他注解型信息。根据数据制作一张完整图表通常都需要用到多个对象。在pandas中,我们有行标签、列标签以及分组信息(可能有)。原本利用matplotlib,制作完整图表,需要大量代码,但现在只需一两条简洁的语句就可以了。pandas有许多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

一、线型图

Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,它们生成的是线型图。

Series对象的索引会被传给matplotlib,并用以绘制X轴。

DataFrame的plot方法会在一个subplot中为各列绘制一条线,并自动创建图例。

Series.plot方法的参数:

DataFrame还有一些对列的灵活处理的选项:

代码:

from pandas import Series,DataFrame
import pandas as pd
import numpy as np
s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10))
s.plot()
df = pd.DataFrame(np.random.randn(10, 4).cumsum(0),
                  columns=['A', 'B', 'C', 'D'],
                  index=np.arange(0, 100, 10))
df.plot()

线型图结果:

     

                   Series对象                                                    DataFrame对象

二、柱状图

在生成线型图的代码中加上kind='bar'(垂直柱状图)或kind='barh'(水平柱状图),即可生成柱状图。此时,Series和DataFrame

的索引会被用作X(bar)或Y(barh)刻度:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#bar plots(柱状图)
fig, axes = plt.subplots(2, 1)
data = pd.Series(np.random.rand(16), index=list('abcdefghijklmnop'))
data.plot(kind='bar', ax=axes[0], color='k', alpha=0.7)
data.plot(kind='barh', ax=axes[1], color='k', alpha=0.7)
#对于DataFrame对象,柱状图会将每一行的值分为一组
df = pd.DataFrame(np.random.rand(6, 4),

                  index=['one', 'two', 'three', 'four', 'five', 'six'],
                  columns=pd.Index(['A', 'B', 'C', 'D'], name='Genus'))
#柱状图
df.plot(kind='bar')
#堆积柱状图
df.plot(kind='bar',stacked=True)


结果:

对于 Series对象:    

      

                       柱状图

对于DataFrame对象:

                    

                   柱状图                                                     堆积柱状图

                                                                   

三、直方图和密度图

直方图(histogram)是一种可以对值频率进行离散化显示的柱状图。数据点被拆分到离散的、间隔均匀的面元中,绘制的是各面元中数据点的数量。

与直方图相关的一种图表是密度图,它是通过计算“可能会产生观测数据的连续概率分布的估计”而产生的。一般的过程是将该分布近似为一组核(即诸如正态(高斯)分布之类较为简单的分布)。因此,密度图也称作KDE(Kernel Density Estimate,核密度估计)图。调用plot时加上kind='kde'即可生成一张密度图。

import matplotlib.pyplot as plt
import pandas as pd
#直方图和密度图
tips = pd.read_csv('tips.csv')
tips['tip_pct'] = tips['tip'] / (tips['total_bill'] - tips['tip'])
#直方图
plt.figure()
tips['tip_pct'].plot(kind='hist',bins=50)
#密度图
plt.figure()
tips['tip_pct'].plot(kind='kde')

结果显示:

  

                     直方图                                                 密度图

四、散点图

散点图(scatter  plot)是观察两个一维数据序列之间的关系的有效手段。matplotlib的scatter方法是绘制散点图的主要方法。

import numpy as np
import matplotlib.pyplot as plt
#散点图
data=DataFrame({'x':np.random.randn(100),'y':np.random.randn(100)})
plt.scatter(data['x'],data['y'])
plt.title("random scatter plot")

结果:


猜你喜欢

转载自blog.csdn.net/lzh_12345/article/details/79846058