使用Seaborn从Pandas数据帧创建箱线图

2024-09-29 23:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的PandasDataFrame,我用它来比较不同分类器在多次迭代中的性能。在每次迭代之后,我将特定分类器的排名保存到一个DataFrame中,它是所有迭代中排名的累积和(这个DataFrame的索引表示从0到3的排名,即总共有4个分类器,0是最好的)。你知道吗

DataFrame如下所示:

rankings = {'Classifier1': ['1', '2', '1', '0'], 
            'Classifier2': ['2', '1', '1', '0'], 
            'Classifier3': ['0', '1', '1', '2'],
            'Classifier4': ['1', '0', '1', '2']}

df = pd.DataFrame(data = rankings)

格式如下:

       Classifier1 Classifier2 Classifier3 Classifier4
0           1           2           0           1
1           2           1           1           0
2           1           1           1           1
3           0           0           2           2

我想使用Seaborn或其他方法创建不同分类器的以下方框图(如this paper):

enter image description here


Tags: 方法dataframedfdata分类器格式seaborn性能
1条回答
网友
1楼 · 发布于 2024-09-29 23:29:25

首先,我们需要将数据转换为数值,而不是字符串。然后,我们将数据帧融化成长格式,最后应用一个顶部带有Swarmlot的箱线图

df = df.apply(pd.to_numeric).melt(var_name='Classifier', value_name='AUC Rank')
ax = sns.boxplot(data=df, x='Classifier', y='AUC Rank')
ax = sns.swarmplot(data=df, x='Classifier', y='AUC Rank', color='black')

Box plot with black points

相关问题 更多 >

    热门问题