熊猫箱线图的数据限制和最大距离(Python)

熊猫箱线图的数据限制和最大距离(Python),python,python-3.x,pandas,matlab,boxplot,Python,Python 3.x,Pandas,Matlab,Boxplot,我正在使用Python绘制数据(来自许多实验),我想使用pandas库的boxplot方法 执行df=pd.DataFrame(值,列=['Col1'])结果如下: 问题来自极端值。在Matlab中,解决方案是使用“DataLimit”选项: boxplot(bp1,'DataLim',[4.2,4.3]) 来自Matlab文档: 数据限制和最大距离 “DataLim”-极端数据限制 [-Inf,Inf](默认值)|两元素数字向量 极限数据限值,指定为逗号分隔对,由“DataLim”和分别包

我正在使用Python绘制数据(来自许多实验),我想使用
pandas
库的
boxplot
方法

执行
df=pd.DataFrame(值,列=['Col1'])
结果如下:

问题来自极端值。在Matlab中,解决方案是使用“DataLimit”选项:

boxplot(bp1,'DataLim',[4.2,4.3])
来自Matlab文档:

数据限制和最大距离

“DataLim”-极端数据限制 [-Inf,Inf](默认值)|两元素数字向量

极限数据限值,指定为逗号分隔对,由“DataLim”和分别包含下限和上限的两元素数值向量组成。“ExtremeMode”使用为“DataLim”指定的值来确定哪些数据点是极端的

Python有类似的功能吗?

演练: 但是,我有一次四处走动(我真的不喜欢它,因为它改变了测量的统计分布):我只是手动排除“有问题的值”:

df = pd.DataFrame(value[100:],columns=['Col1'])
df.boxplot(column=['Col1'])
结果是:


这是因为我知道问题在哪里。

您可以使用
ylim
约束轴,而不会从计算中忽略异常值:

data = np.concatenate((np.random.rand(50) * 100,  # spread
                       np.ones(25) * 50,  # center
                       np.random.rand(10) * 100 + 100,  # flier high
                       np.random.rand(10) * -100,  # flier low
                       np.random.rand(2) * 10_000))  # unwanted outlier
fig1, ax1 = plt.subplots()
ax1.boxplot(data)
plt.ylim([-100, 200])
plt.show()

您可以使用
ylim
约束轴,而不会从计算中忽略异常值:

data = np.concatenate((np.random.rand(50) * 100,  # spread
                       np.ones(25) * 50,  # center
                       np.random.rand(10) * 100 + 100,  # flier high
                       np.random.rand(10) * -100,  # flier low
                       np.random.rand(2) * 10_000))  # unwanted outlier
fig1, ax1 = plt.subplots()
ax1.boxplot(data)
plt.ylim([-100, 200])
plt.show()

在打印之前,你不能用
loc
过滤你的
df
吗?我认为matplotlib中没有一个选项可以完全按照你的要求进行操作。我只需要绘制过滤后的df
df[(df[“Col1”]>4.2)和(df[“Col1”]<4.3)]。boxplot()
@Josh,你是什么意思?你能举个例子吗?@Runkles是的,它能起作用。但我认为(不确定!!)在Matlab中,这些点是用来统计箱线图的,而不是printed@Runkles如果仅绘制这些数据,则会更改统计分布。不确定这是否适用于OPC。在打印之前,您是否可以使用
loc
过滤
df
?我认为matplotlib中没有一个选项可以完全满足您的要求。我只需要绘制过滤后的df
df[(df[“Col1”]>4.2)和(df[“Col1”]<4.3)]。boxplot()
@Josh,你是什么意思?你能举个例子吗?@Runkles是的,它能起作用。但我认为(不确定!!)在Matlab中,这些点是用来统计箱线图的,而不是printed@Runkles如果仅绘制这些数据,则会更改统计分布。不确定这对OP是否合适