python - 我如何对箱形图的列名的部分进行分组?
问题描述
我正在寻找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
我不确定这个额外的数据框是否有助于箱线图。
解决方案
假设您的 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')
免责声明:我没有测试过这段代码——如果你提供了一个最小的、完整的和可验证的例子,我可以测试它,但它应该可以正常工作。关于如何为熊猫问题创建这样的示例,这里有一个特别有用的指南。
推荐阅读
- laravel - 从 Ionic 登录记住我
- asp.net-mvc - 如何修复 System.FormatException:“输入字符串的格式不正确。”
- vb.net - 无法修复错误“无法加载 System.Net.Http,版本 = 4.2.0.0”
- c# - 使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?
- php - 如何在 Laravel 的 UserController 中使用 2 个更新功能
- html - 如何使我的家谱树响应?
- xamarin.forms - Xamarin 离线位置 我们如何通过 GPS 获得离线位置?
- amcharts - amCharts,每条柱都有渐变色
- python - 如何从列表中的列表中删除某些 int?
- javascript - javascript中的冒泡排序 - 递归版本不起作用