pandas.plotting.boxplot#

pandas.plotting.boxplot(data, column=None, by=None, ax=None, fontsize=None, rot=0, grid=True, figsize=None, layout=None, return_type=None, **kwargs)[源代码][源代码]#

从 DataFrame 列中生成箱形图。

从 DataFrame 列中生成一个箱线图,可以选择按其他列分组。箱线图是一种通过四分位数图形化表示数值数据组的方法。箱子从数据的 Q1 到 Q3 四分位数值延伸,中间有一条线表示中位数(Q2)。须从箱子的边缘延伸,显示数据的范围。默认情况下,它们在箱子边缘的 1.5 * IQR(IQR = Q3 - Q1) 范围内延伸,终止于该区间内的最远数据点。离群值绘制为单独的点。

欲了解更多详情,请参见维基百科关于 箱线图 的条目。

参数:
数据DataFrame

要可视化的数据。

str 或 str 列表,可选

列名或名称列表,或向量。可以是任何有效的 pandas.DataFrame.groupby() 输入。

通过str 或类数组,可选

DataFrame 中的列用于 pandas.DataFrame.groupby()。每个 by 中的列值将生成一个箱形图。

axmatplotlib.axes.Axes 类的对象,可选

用于箱线图的 matplotlib 轴。

字体大小浮点数或字符串

刻度标签字体大小(以点为单位或作为字符串,例如 large)。

rotfloat, 默认 0

标签相对于屏幕坐标系的旋转角度(以度为单位)。

网格布尔值, 默认为 True

将此设置为 True 将显示网格。

figsize一个以英寸为单位的元组 (宽度, 高度)

在 matplotlib 中创建图形的大小。

布局tuple (行, 列), 可选

例如,(3, 5) 将使用 3 行和 5 列显示子图,从左上角开始。

return_type{‘axes’, ‘dict’, ‘both’} 或 None, 默认 ‘axes’

要返回的对象类型。默认是 axes

  • ‘axes’ 返回绘制箱线图的 matplotlib 轴。

  • ‘dict’ 返回一个字典,其值是箱线图的 matplotlib 线条。

  • ‘both’ 返回一个包含轴和字典的命名元组。

  • 当使用 by 进行分组时,会返回一个映射列到 return_type 的 Series。

    如果 return_typeNone,则返回一个与 layout 形状相同的轴的 NumPy 数组。

**kwargs

所有其他要传递给 matplotlib.pyplot.boxplot() 的绘图关键字参数。

返回:
result

查看备注。

参见

Series.plot.hist

制作一个直方图。

matplotlib.pyplot.boxplot

Matplotlib 等效图。

备注

返回类型取决于 return_type 参数:

  • ‘axes’ : matplotlib.axes.Axes 类的对象

  • ‘dict’ : matplotlib.lines.Line2D 对象的字典

  • ‘both’ : 一个具有结构 (ax, lines) 的 namedtuple

对于使用 by 分组的数据,返回上述内容的一个 Series 或一个 numpy 数组:

  • Series

  • array (对于 return_type = None)

当你想在绘图后调整线条的外观时,使用 return_type='dict'。在这种情况下,返回一个包含构成箱形图、帽、离群值、中位数和须的线条的字典。

例子

箱线图可以通过 df.boxplot() 为数据框中的每一列创建,或者指定要使用的列:

>>> np.random.seed(1234)
>>> df = pd.DataFrame(np.random.randn(10, 4),
...                   columns=['Col1', 'Col2', 'Col3', 'Col4'])
>>> boxplot = df.boxplot(column=['Col1', 'Col2', 'Col3'])  
../../_images/pandas-plotting-boxplot-1.png

通过使用选项 by,可以创建按第三个变量的值分组的变量分布箱线图。例如:

>>> df = pd.DataFrame(np.random.randn(10, 2),
...                   columns=['Col1', 'Col2'])
>>> df['X'] = pd.Series(['A', 'A', 'A', 'A', 'A',
...                      'B', 'B', 'B', 'B', 'B'])
>>> boxplot = df.boxplot(by='X')
../../_images/pandas-plotting-boxplot-2.png

一个字符串列表(例如 ['X', 'Y'])可以传递给 boxplot,以便通过 x 轴上的变量组合来分组数据:

>>> df = pd.DataFrame(np.random.randn(10, 3),
...                   columns=['Col1', 'Col2', 'Col3'])
>>> df['X'] = pd.Series(['A', 'A', 'A', 'A', 'A',
...                      'B', 'B', 'B', 'B', 'B'])
>>> df['Y'] = pd.Series(['A', 'B', 'A', 'B', 'A',
...                      'B', 'A', 'B', 'A', 'B'])
>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'])
../../_images/pandas-plotting-boxplot-3.png

箱线图的布局可以通过给 layout 一个元组来进行调整:

>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X',
...                      layout=(2, 1))
../../_images/pandas-plotting-boxplot-4.png

可以对箱线图进行额外的格式化,例如抑制网格 (grid=False),旋转 x 轴上的标签(即 rot=45)或更改字体大小(即 fontsize=15):

>>> boxplot = df.boxplot(grid=False, rot=45, fontsize=15)  
../../_images/pandas-plotting-boxplot-5.png

参数 return_type 可以用来选择 boxplot 返回的元素类型。当选择 return_type='axes' 时,绘制箱线图的 matplotlib 轴将被返回:

>>> boxplot = df.boxplot(column=['Col1', 'Col2'], return_type='axes')
>>> type(boxplot)
<class 'matplotlib.axes._axes.Axes'>

当使用 by 进行分组时,会返回一个映射列到 return_type 的 Series:

>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X',
...                      return_type='axes')
>>> type(boxplot)
<class 'pandas.core.series.Series'>

如果 return_typeNone,则返回一个与 layout 形状相同的轴的 NumPy 数组:

>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X',
...                      return_type=None)
>>> type(boxplot)
<class 'numpy.ndarray'>