如何使用两个不同的数据框制作单个群图?

How do I make a single swarm plot using two different data frames?

我有一个如下所示的数据框:

df1:

value 
1.2
2.2
3.3
4.3
3.1
2.1
....

我有另一个看起来相似但值不同的数据框:

df2:

value 
1.0
1.2
1.3
2.9
3.1
1.9
....

我想做一个群图,这样我在同一个图上同时有 df1 和 df2,这样我就可以直接比较两者。理想情况下,我还希望在两者之间进行某种 t 检验。我可以在 pandas 中执行此操作吗?

IIUC,你可以通过将数据帧连接在一起并重塑来做到这一点:

df3 = pd.concat([df1,df2], axis=1, keys=['df1','df2']).stack(0)

df3 = df3.reset_index(level=1)

sns.swarmplot(x='level_1',y='value', data=df3)

输出:

和 T 检验:

from scipy.stats import ttest_ind

ttest_ind(df1['value'],df2['value'])

输出:

Ttest_indResult(statistic=1.3828776509907013, pvalue=0.1967994944161096)