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_type
是 None,则返回一个与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 数组: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'])
通过使用选项
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')
一个字符串列表(例如
['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'])
箱线图的布局可以通过给
layout
一个元组来进行调整:>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X', ... layout=(2, 1))
可以对箱线图进行额外的格式化,例如抑制网格 (
grid=False
),旋转 x 轴上的标签(即rot=45
)或更改字体大小(即fontsize=15
):>>> boxplot = df.boxplot(grid=False, rot=45, fontsize=15)
参数
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_type
是 None,则返回一个与layout
形状相同的轴的 NumPy 数组:>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X', ... return_type=None) >>> type(boxplot) <class 'numpy.ndarray'>