首页 > 解决方案 > 我如何对箱形图的列名的部分进行分组?

问题描述

我正在寻找groupby列名的子集来在 python pandas 中创建箱线图。

我有以下数据集:

local_term_1year | regional_term_1year | local_term_2year | regional_term_2year      
-------------------------------------------------------------------------------
30               | 30                  | 40               | 50 
20               | 40                  | 50               | 60

我希望创建两个分组箱线图,一个为 1 年,另一个为 2 年。另外,如果可能的话,我想根据本地/区域标签为每个箱线图着色。

到目前为止,我已经能够将每一列的后缀和前缀提取到一个单独的表中:

column              | year  | region
---------------------------------------
local_term_1year    | 1year | local
regional_term_1year | 1year | regional
local_term_2year    | 2year | local
regional_term_2year | 2year | regional 

我不确定这个额外的数据框是否有助于箱线图。

标签: pythonpandasvisualizationboxplotpandas-groupby

解决方案


假设您的 pd.DataFrame 被调用df,我们可以通过以下方式执行此操作:

new_df = df.melt(var_name='col', value_name='table_value')
new_df['region'] = new_df.col.str.split('_').str.get(0)
new_df['year'] = new_df.col.str.split('_').str.get(-1)

然后我们可以seaborn.boxplot用来创建您要求的箱线图:

import seaborn as sns
sns.boxplot(data=new_df, x='year', y='table_value', hue='region')

免责声明:我没有测试过这段代码——如果你提供了一个最小的、完整的和可验证的例子,我可以测试它,但它应该可以正常工作。关于如何为熊猫问题创建这样的示例,这里有一个特别有用的指南。


推荐阅读