pandas 箱型图(boxplot)详解

时间:2024-03-29 15:51:11

首先看一段例子:

import pandas as pd
from pandas import DataFrame,Series
df = DataFrame(np.random.randn(10, 2), columns=['Col1', 'Col2'])
boxplot=df.boxplot()

pandas 箱型图(boxplot)详解  

通过boxplot方法,我们直接得到了箱型图。

boxplot方法官方介绍如下:

DataFrame.boxplot(column=Noneby=Noneax=Nonefontsize=Nonerot=0grid=Truefigsize=Nonelayout=Nonereturn_type=None**kwds)

方法说明

boxplot方法只是用于DataFrame,Series对象没有此方法

参数说明

column,默认为None,输入为str 或由str构成的list,其作用是指定要进行箱型图分析的列

by,默认为None,str or array-like,其作用为pandas的group by,通过指定by=‘columns’,可进行多组合箱型图分析

ax,matplotlib.axes.Axes的对象,没有太大作用

fontsize,箱型图坐标轴字体大小

rot,箱型图坐标轴旋转角度

grid,箱型图网格线是否显示

figsize,箱型图窗口尺寸大小

layout,必须配合by 一起使用,类似于subplot 的画布分区域功能

return_type,指定返回对象的类型,默认为None,可输入的参数为‘axes’,‘dict’,‘both’,当与by一起使用是,返回的对象为Series或array(for return_type = None)

箱型图返回结果说明:

当指定return_type=‘dict’时,其结果值为一个字典,字典索引为固定的'whiskers'、'caps'、'boxes'、'fliers'、'means'

boxplot=df.boxplot(return_type='dict')

boxplot
Out[132]: 
{'whiskers': [<matplotlib.lines.Line2D at 0x26b61ec81d0>,
  <matplotlib.lines.Line2D at 0x26b61ec8668>,
  <matplotlib.lines.Line2D at 0x26b61ec6f98>,
  <matplotlib.lines.Line2D at 0x26b61b7d400>],
 'caps': [<matplotlib.lines.Line2D at 0x26b61ec8a90>,
  <matplotlib.lines.Line2D at 0x26b61ec8eb8>,
  <matplotlib.lines.Line2D at 0x26b61b7d828>,
  <matplotlib.lines.Line2D at 0x26b61b7dc50>],
 'boxes': [<matplotlib.lines.Line2D at 0x26b61ec8080>,
  <matplotlib.lines.Line2D at 0x26b61ec6b38>],
 'medians': [<matplotlib.lines.Line2D at 0x26b61ec6320>,
  <matplotlib.lines.Line2D at 0x26b61b560b8>],
 'fliers': [<matplotlib.lines.Line2D at 0x26b61ec6748>,
  <matplotlib.lines.Line2D at 0x26b61b564e0>],
 'means': []}

此时,通过指定索引值获取相应数据

boxplot['fliers'][1].get_xdata()
Out[137]: array([2.])

boxplot['fliers'][1].get_ydata()
Out[138]: array([1.79881989])