【发布时间】:2015-10-28 23:33:44
【问题描述】:
我有一些数据,我使用以下代码操作了数据框:
import pandas as pd
import numpy as np
data = pd.DataFrame([[0,0,0,3,6,5,6,1],[1,1,1,3,4,5,2,0],[2,1,0,3,6,5,6,1],[3,0,0,2,9,4,2,1],[4,0,1,3,4,8,1,1],[5,1,1,3,3,5,9,1],[6,1,0,3,3,5,6,1],[7,0,1,3,4,8,9,1]], columns=["id", "sex", "split", "group0Low", "group0High", "group1Low", "group1High", "trim"])
data
#remove all where trim == 0
trimmed = data[(data.trim == 1)]
trimmed
#create df with columns to be split
columns = ['group0Low', 'group0High', 'group1Low', 'group1High']
to_split = trimmed[columns]
to_split
level_group = np.where(to_split.columns.str.contains('0'), 0, 1)
# output: array([0, 0, 1, 1])
level_low_high = np.where(to_split.columns.str.contains('Low'), 'low', 'high')
# output: array(['low', 'high', 'low', 'high'], dtype='<U4')
multi_level_columns = pd.MultiIndex.from_arrays([level_group, level_low_high], names=['group', 'val'])
to_split.columns = multi_level_columns
to_split.stack(level='group')
sex = trimmed['sex']
split = trimmed['split']
horizontalStack = pd.concat([sex, split, to_split], axis=1)
horizontalStack
finalData = horizontalStack.groupby(['split', 'sex', 'group'])
finalData.mean()
我的问题是,我如何使用 ggplot 或 seaborn 绘制平均数据,这样对于每个“拆分”级别,我都会得到一个如下所示的图表:
在代码的底部,您可以看到我尝试拆分组因子以便可以分隔条,但这导致了错误 (KeyError: 'group'),我认为这与我使用多索引的方式
【问题讨论】:
-
你能把代码和数据复制到你的问题中吗?
标签: python pandas seaborn python-ggplot