我有三个数据框,其中包含17组A,B和C组数据。以下代码段中显示了A

import pandas as pd
import numpy as np
data1 = pd.DataFrame(np.random.rand(17,3), columns=['A','B','C'])
data2 = pd.DataFrame(np.random.rand(17,3)+0.2, columns=['A','B','C'])
data3 = pd.DataFrame(np.random.rand(17,3)+0.4, columns=['A','B','C'])

我想绘制一个箱形图以比较这三个组,如下图所示
python - 许多 Pandas 数据框的箱形图-LMLPHP
我正在尝试使用seaborn's box plot进行如下绘制
import seaborn as sns
sns.boxplot(data1, groupby='A','B','C')

但是显然这是行不通的。有人可以帮忙吗?

最佳答案

考虑分配一个类似于“位置”的指标来区分您的三组数据。然后将所有三个连接起来并融化数据以检索一个值列,一个Letter分类列和一个Location列,所有输入都输入sns.boxplot:

import pandas as pd
import numpy as np
from matplotlib pyplot as plt
import seaborn as sns

data1 = pd.DataFrame(np.random.rand(17,3), columns=['A','B','C']).assign(Location=1)
data2 = pd.DataFrame(np.random.rand(17,3)+0.2, columns=['A','B','C']).assign(Location=2)
data3 = pd.DataFrame(np.random.rand(17,3)+0.4, columns=['A','B','C']).assign(Location=3)

cdf = pd.concat([data1, data2, data3])
mdf = pd.melt(cdf, id_vars=['Location'], var_name=['Letter'])
print(mdf.head())

#    Location Letter     value
# 0         1      A  0.223565
# 1         1      A  0.515797
# 2         1      A  0.377588
# 3         1      A  0.687614
# 4         1      A  0.094116

ax = sns.boxplot(x="Location", y="value", hue="Letter", data=mdf)
plt.show()

python - 许多 Pandas 数据框的箱形图-LMLPHP

关于python - 许多 Pandas 数据框的箱形图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42004381/

10-13 06:54
查看更多