Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.boxplot方法的使用。

DataFrame.boxplot(column = None,by = None,ax = None,fontsize = None,rot = 0,grid = True,figsize = None,layout = None,return_type = None,** kwds )

从DataFrame列创建一个箱形图。

从DataFrame列创建一个box-and-whisker图,可选择按其他列分组。箱形图是用于通过其四分位数图形描绘数值数据组的方法。该框从数据的Q1到Q3四分位数值延伸,中间的线为(Q2)。晶须从盒子的边缘延伸,以显示数据的范围。晶须的位置默认设置为从盒子边缘开始的1.5 * IQR(IQR = Q3 - Q1)。离群点是那些胡须结束时的点。

有关详细信息,请参阅Wikipedia的boxplot条目。

参数:

column : str或str的列表,可选

列名或名称列表或向量。

可以是任何有效的输入pandas.DataFrame.groupby()

by : str或array-like,可选

DataFrame中的列pandas.DataFrame.groupby()

一箱线图将每列的值来完成的。

ax : 类matplotlib.axes.Axes的对象,可选

boxplot使用的matplotlib轴。

fontsize : floatstr

以标记或字符串(例如,大)标记标签字体大小。

rot : intfloat,默认为0

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

grid : 布尔值,默认为True

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

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

matplotlib中创建的图形的大小。

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

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

return_type : {'axes','dict','both'}None,默认'axes'

要返回的那种对象。默认是axes

'axes'返回绘制boxplotmatplotlib轴。

'dict'返回一个字典,其值是boxplotmatplotlib行。

'both'返回一个带有轴和dictnamedtuple

分组时by,return_type返回一系列映射列 。

如果return_typeNone

layout则返回具有相同形状的NumPy轴阵列。

** kwds

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

返回

result

返回类型取决于return_type参数:

'axes':类matplotlib.axes.Axes的对象

'dict'matplotlib.lines.Line2D对象的字典

'both':一个带结构的命名元组(axlines

对于分组的数据by:

Series

array(用于)return_type = None

notes

使用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'])

httpsfileaionlifexyzsourcedownloadid5cf918cfdc72d90260f4d8ea

可以使用该选项创建按第三个变量的值分组的变量分布的箱线图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')

httpsfileaionlifexyzsourcedownloadid5cf9191edc72d90260f4d8eb

字符串列表(即)可以传递给boxplot,以便通过x轴中的变量组合对数据进行分组:['X', 'Y']


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

httpsfileaionlifexyzsourcedownloadid5cf9194fdc72d90260f4d8ec

boxplot的布局可以调整,给出一个元组layout:

>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X',

... layout=(2, 1))

httpsfileaionlifexyzsourcedownloadid5cf91976dc72d90260f4d8ed

可以对boxplot进行其他格式化,例如抑制grid(grid=False),在x轴上旋转标签(即rot=45)或更改fontsize(即fontsize=15):

>>> boxplot = df.boxplot(grid=False, rot=45, fontsize=15)

httpsfileaionlifexyzsourcedownloadid5cf9199bdc72d90260f4d8ee

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

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

分组时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'>