我期待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
我不确定这个额外的数据框是否有助于箱线图。
答案 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创建这样的示例,有一个特别有用的指南。