我如何将一个列名的部分分组为一个箱形图?

时间:2018-05-23 15:31:43

标签: python pandas visualization boxplot pandas-groupby

我期待groupby列名称的子集在python pandas中创建箱图。

我有以下数据集:

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

我希望创建两个分组的boxplot图,一个是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 

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

1 个答案:

答案 0 :(得分:1)

假设您的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')

免责声明:我没有测试过这段代码 - 如果你提供Minimal, Complete, and Verifiable example,我可以测试它,但它应该按原样运行。对于如何为大熊猫问题here创建这样的示例,有一个特别有用的指南。