使用以下虚拟数据帧:
import pandas as pd
df = pd.DataFrame({'dt':['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-03', '2020-01-01', '2020-01-02', '2020-01-03', '2020-01-03'], 'group':['a', 'a', 'b', 'b', 'a', 'a', 'b', 'b'], 'bar':[1,2,3, 4, 1,2,3, 4], 'baz':[3,4,5, 6, 3,4,5, 6]})
df = df.groupby(['dt', 'group']).describe()
也就是说,我希望能够选择df[['dt', 'group', ('bar', '25%'), , ('bar', '25%'), , ('bar', '25%')]]
如何执行此多级选择
我的最终目标是能够绘制每个类别随时间变化的百分位数,其中每个类别描述一种颜色:
import seaborn as sns; sns.set()
sns.lineplot(data=df.reset_index()['baz'][['25%', '50%', '75%']], hue='group')
但是,在剩余的数据帧中,没有关于组的信息
不确定这是否是您想要的:
你可以用这个来达到同样的效果
或横截面切片:
您可以执行以下操作:
输出:
至于这个图,在我看来,你想画一个4维的图。。。(x->;dt,y->;数据帧值,色调->;对应于每个组,然后您有每个百分位列,例如
('bar', '25%')
,('bar', '50%')
)。不清楚如何区分绘图中的('bar', '25%')
和('bar', '50%')
。也许您预计会有6个单独的图(3个百分位数*2列[bar,baz]),在这种情况下,这可能会有所帮助:只是另一种剥猫皮的方法:
相关问题 更多 >
编程相关推荐