繁体   English   中英

许多 Pandas 数据框的箱线图

[英]Box Plot of a many Pandas Dataframes

我有三个数据框,其中包含 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') 

但显然这不起作用。 有人可以帮忙吗?

考虑分配一个像位置这样的指标来区分你的三组数据。 然后连接所有三个并融合数据以检索一个列、一个字母分类列和一个位置列,所有输入到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()

直方图输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM