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 : 类 由 fontsize : 以标记或字符串(例如,大)标记标签字体大小。 rot : 标签的旋转角度(以度为单位)相对于屏幕坐标系。 grid : 布尔值,默认为 将此设置为True将显示网格。 figsize : 以英寸为单位的元组(宽度,高度) 在 layout : 元组(行,列),可选 例如,(3,5)将从左上角开始使用3列和5行显示子图。 return_type : 要返回的那种对象。默认是
分组时by, 如果
** kwds 要传递给所有其他绘图关键字参数 matplotlib.pyplot.boxplot()。 |
返回: | result: 返回类型取决于
对于分组的数据by: array(用于) |
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_type
为None
,layout则返回与返回的形状相同的NumPy轴数组:
>>> boxplot = df.boxplot(column=['Col1', 'Col2'], by='X',
... return_type=None)
>>> type(boxplot)
<class 'numpy.ndarray'>