许多熊猫数据框的箱形图
发布于 2021-01-29 15:20:34
我有三个数据框,其中包含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'])
我想绘制箱线图来比较三组,如图下图中
,我试图用化妆情节seaborn的箱线图如下
import seaborn as sns
sns.boxplot(data1, groupby='A','B','C')
但显然这是行不通的。有人可以帮忙吗?
关注者
0
被浏览
41
1 个回答
-
考虑分配一个类似于“ 位置” 的指标来区分三组数据。然后将所有三个输入连接起来并融化数据,以检索一个 值 列,一个 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()