十、 DataFrame 绘图

  1. matplotlib是一种比较低级的工具,pandas中有许多利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。

  2. Series/DataFrame.plot():绘制图形。

    1. Series.plot(kind='line', ax=None, figsize=None, use_index=True, title=None, grid=None,
    2. legend=False, style=None, logx=False, logy=False,loglog=False,xticks=None,yticks=None,
    3. xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None,
    4. xerr=None, label=None, secondary_y=False, **kwds)
    5. DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None,
    6. sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None,
    7. legend=True, style=None, logx=False, logy=False, loglog=False, xticks=None,
    8. yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None,
    9. table=False, yerr=None, xerr=None, secondary_y=False, sort_columns=False, **kwds)
    • kind:绘制的类型。可以为:'line''bar''barh'(水平的bar)、'hist''box''kde'(核密度估计)、'density'(类似kde)、'area''pie'
    • ax:一个Axes实例对象。如果为空,则是plt.gca()的返回值(当前Axes
    • figsize:一个元组,指定图片大小(单位为英寸)
    • use_index:一个布尔值。如果为True,则使用index作为X轴。
    • title:图形的标题
    • grid:一个布尔值。如果为True,则开启网格
    • legend:一个布尔值,如果为True,则放置图例
    • style:一个列表或者字典,给出了每一列的线型
    • logx:一个布尔值,如果为True,则x轴为对数型
    • logy:一个布尔值,如果为True,则y轴为对数型
    • loglog:一个布尔值,如果为True,则x轴和y轴都为对数型
    • xticks:一个序列,用于给出xticks
    • yticks:一个序列,用于给出yticks
    • xlim:一个二元的元组或者序列,给出x轴范围
    • ylim:一个二元的元组或者序列,给出y轴范围
    • rot:一个整数,给出了x轴和ytick旋转角度(不是弧度)。
    • fontsize:一个整数,给出了xtick/ytick的字体大小
    • colormap:一个字符串或者colormap对象,给出了colormap
    • colorbar:一个布尔值。如果为True,则绘制colorbar(只用于scatterhexbin图中)
    • position:一个浮点数。给出了bar图中,各bar的对其位置(0表示bar的左侧与它的坐标 对其;1表示bar的右侧与它的坐标对其)
    • layout:一个元组。给出了(rows,columns)
    • table:一个布尔值或者Series/DataFrame。如果为True,则将本Series/DataFrame绘制为一个表格;如果为Series/DataFrame,则将该参数绘制为表格
    • yerr:用于绘制Error Bar
    • xerr:用于绘制Error Bar
    • labelplotlabel参数
    • secondary_y:一个布尔值或者一个整数序列。如果为True,则y轴绘制在右侧
    • mark_right:一个布尔值,如果为Truesecondary_y=True,则在图例中标记为right
    • kwds:传递给matplotlib中的plot函数的其他关键字参数

    DataFrame.plot中,下面的参数意义为:

    • xlabel或者position
    • ylabel或者position
    • subplots:一个布尔值,如果为True,则将每一列作为一个子图来绘制
    • sharex:一个布尔值。如果为True,且subplots=True,则子图共享x
    • sharey:一个布尔值。如果为True,且subplots=True,则子图共享y
    • stacked:一个布尔值。在bar中,如果为True,则将柱状图堆积起来
    • sort_columns:一个布尔值。如果为True,则根据列名来决定绘制的先后顺序。

    它们返回的是AxesSubplot对象,或者AxesSubplotndarray

    plot0 plot1 plot2 plot3 plot4 plot5 plot6 plot7 plot8

  3. 给出一组序列,我们可以手工绘制每个序列的散布图,以及各自的核密度估计。我们可以使用scatter_matrix函数:

    1. pandas.tools.plotting.scatter_matrix(frame, alpha=0.5, figsize=None, ax=None,
    2. grid=False, diagonal='hist', marker='.', density_kwds=None, hist_kwds=None,
    3. range_padding=0.05, **kwds)
    • frame:为DataFrame对象
    • diagonal:选择对角线上的图形类型。可以为'hist'/'kde'
    • hist_kwds:绘制hist的参数
    • density_kwds:绘制kde的参数
    • range_padding:一个浮点数,用于延伸x/y轴的范围。如果它为0.1,表示x轴延伸x_max-xmin的0.1倍 每一个子图是这样生成的:以DataFrame中某一列为横坐标,另一列为纵坐标生成的散点图。

    scatter_matrix