Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将方框图的平均值打印为方框图_Python_Numpy_Matplotlib_Boxplot - Fatal编程技术网

Python 将方框图的平均值打印为方框图

Python 将方框图的平均值打印为方框图,python,numpy,matplotlib,boxplot,Python,Numpy,Matplotlib,Boxplot,我有一组列表(大约100个),其形式为[6、17、5、1、4、7、14、19、0、10],我想得到一个方框图,它绘制所有列表方框图信息(即中值、最大值、最小值、Q1、Q3、异常值)的平均值 例如,如果我有两个列表 l1 = [6, 17, 5, 1, 4, 7, 14, 19, 0, 10] l2 = [4, 12, 3, 5, 16, 0, 14, 7, 8, 15] 我可以得到列表的最大值、中值和最小值的平均值,如下所示: maxs = np.array([]) mins = np.arr

我有一组列表(大约100个),其形式为
[6、17、5、1、4、7、14、19、0、10]
,我想得到一个方框图,它绘制所有列表方框图信息(即中值、最大值、最小值、Q1、Q3、异常值)的平均值

例如,如果我有两个列表

l1 = [6, 17, 5, 1, 4, 7, 14, 19, 0, 10]
l2 = [4, 12, 3, 5, 16, 0, 14, 7, 8, 15]
我可以得到列表的最大值、中值和最小值的平均值,如下所示:

maxs = np.array([])
mins = np.array([])
medians = np.array([])
for l in [l1, l2]:
    medians = np.append(medians, np.median(l))
    maxs = np.append(maxs, np.max(l))
    mins = np.append(mins, np.min(l))
averMax = np.mean(maxs)
averMin = np.mean(mins)
averMedian = np.mean(medians)
我应该对方框图中的其他信息做同样的处理,例如平均Q1、平均Q3。然后我需要使用这些信息(averMax、averMin等)只绘制一个方框图(而不是一个图形中的多个方框图)

我从中知道,你不必计算正常方框图的值。您只需要将数据指定为变量。 是否可以对我的案例执行相同的操作,而不是手动计算所有列表值的平均值?

pd.descripe()
将获得四分位数,因此您可以基于它们制作一个图表。我在的帮助下定制了计算出的数字,并从中获得了示例图


如果
l1
l2
中的值均为负值,您怎么会有负胡须?谢谢您的回答!但我希望得到一个单独的盒子。例如,单框图中的最大值为(19+16)/2=17.5,这是列表最大值的平均值。我有100个这样的列表,我不能考虑所有的方块图。我只需要一个方块图,将所有的方块图平均。我不明白你问题的意图。如果您有大量列表,我认为您可以将它们与
np.concatenate()
组合,然后再与
np.percentile()
组合。我的目的是在一个图表中绘制一个方框图,显示所有100个列表的平均数据。每一份清单都像是一次试验。我想得到一个方框图中所有试验的平均值。我无法连接它们,因为每个索引都有一个特定的数据项。您的问题和我的答案相距太远,我应该删除它吗?这样你就有机会得到我以外的答案。如果你需要删除它,请问我。
import pandas as pd
import numpy as np
import io

l1 = [6, 17, 5, 1, 4, 7, 14, 19, 0, 10]
l2 = [4, 12, 3, 5, 16, 0, 14, 7, 8, 15]

df = pd.DataFrame({'l1':l1, 'l2':l2}, index=np.arange(len(l1)))

df.describe()
l1  l2
count   10.000000   10.000000
mean    8.300000    8.400000
std 6.532823    5.561774
min 0.000000    0.000000
25% 4.250000    4.250000
50% 6.500000    7.500000
75% 13.000000   13.500000
max 19.000000   16.000000

import matplotlib.pyplot as plt

# spread,center, filer_high, flier_low
x1 = [l1[4]-1.5*(l1[6]-l1[4]), l1[4], l1[5], l1[5]+1.5*(l1[6]-l1[4])]
x2 = [l2[4]-1.5*(l2[6]-l2[4]), l2[4], l2[5], l2[5]+1.5*(l2[6]-l2[4])]

fig = plt.figure(figsize=(8,6))

plt.boxplot([x for x in [x1, x2]], 0, 'rs', 1)
plt.xticks([y+1 for y in range(len([x1, x2]))], ['x1', 'x2'])
plt.xlabel('measurement x')
t = plt.title('Box plot')
plt.show()