Python pandas.DataFrame.boxplot函数方法的使用

Python中,使用pandas库的DataFrame对象可以很方便地进行数据分析和可视化操作。DataFrame对象提供了boxplot()方法来绘制箱线图,用于显示数据分布的统计信息。本文主要介绍一下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()或指示要使用的列为数据框中的每个列创建箱图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 设置随机种子
np.random.seed(1234)

# 生成一个包含10行4列的随机数数据框
df = pd.DataFrame(np.random.randn(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

# 绘制箱线图
boxplot = df.boxplot(column=['Col1', 'Col2', 'Col3'])

# 显示图形
plt.show()


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


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 生成一个包含随机数的数据框
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'])

# 按分类列 'X' 绘制箱线图
boxplot = df.boxplot(by='X')

# 显示图形
plt.show()


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


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个包含随机数的数据框
df = pd.DataFrame(np.random.randn(10, 3), columns=['Col1', 'Col2', 'Col3'])

# 添加列 'X' 和 'Y'
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'])

# 按照 'X' 和 'Y' 分组绘制 'Col1' 和 'Col2' 的箱线图
boxplot = df.boxplot(column=['Col1', 'Col2'], by=['X', 'Y'])

# 显示箱线图
plt.show()


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

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

... layout=(2, 1))


可以对boxplot进行其他格式化,例如抑制grid(grid=False),在x轴上旋转标签(即rot=45)或更改fontsize(即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._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_typeNone,layout则返回与返回的形状相同的NumPy轴数组:

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

推荐阅读
cjavapy编程之路首页