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),结束于该区间内最远的数据点。异常值被绘制为单独的点。

有关更多详细信息,请参阅维基百科关于 boxplot 的条目。

Parameters:
dataDataFrame

要可视化的数据。

columnstr 或 str 列表,可选

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

bystr 或类数组,可选

DataFrame 中用于 pandas.DataFrame.groupby() 的列。将为 by 中列的每个值绘制一个箱须图。

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

将由 boxplot 使用的 matplotlib 坐标轴。

fontsize浮点数或字符串

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

rot浮点数,默认 0

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

gridbool, default True

设置为 True 将显示网格。

figsize元组 (宽度, 高度),单位为英寸

创建 matplotlib 图形的大小。

layout元组 (行数, 列数),可选

例如,(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() 的所有其他绘图关键字参数。

Returns:
result

请参阅 Notes。

参见

pandas.Series.plot.hist

绘制直方图。

matplotlib.pyplot.boxplot

matplotlib 等效图。

Notes

返回类型取决于 return_type 参数:

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

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

  • ‘both’ : 结构为 (ax, lines) 的命名元组

对于使用 by 分组的数据,返回上述类型的 Series 或 NumPy 数组:

  • Series

  • array (对于 return_type = None

当您想要在绘图后调整线条外观时,请使用 return_type='dict'。在这种情况下,将返回一个包含构成箱体、帽线、异常值线、中位线和须线的 Lines 的字典。

Examples

可以通过 df.boxplot() 或者指明要使用的列来为 DataFrame 中的每一列创建箱须图:

>>> 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'>