Python 在一个图上绘制多个密度
我有一个带有多索引的数据框(支出,组ID): 我可以使用df['coef'].plot(kind='density')获得密度。我想根据多重指数(支出)的外部水平对这些密度进行分组,并将不同支出水平的不同密度绘制到同一个图中 我将如何实现这一点?奖金:用“支出”值标记不同的支出图表 回答 我最初的方法是通过生成一个Python 在一个图上绘制多个密度,python,matplotlib,pandas,Python,Matplotlib,Pandas,我有一个带有多索引的数据框(支出,组ID): 我可以使用df['coef'].plot(kind='density')获得密度。我想根据多重指数(支出)的外部水平对这些密度进行分组,并将不同支出水平的不同密度绘制到同一个图中 我将如何实现这一点?奖金:用“支出”值标记不同的支出图表 回答 我最初的方法是通过生成一个ax对象并传递该对象来合并不同的KDE,但接受的答案启发我生成一个df,其中组标识符作为列: n = 25 df = pd.DataFrame({'expenditure' : np.
ax
对象并传递该对象来合并不同的KDE,但接受的答案启发我生成一个df,其中组标识符作为列:
n = 25
df = pd.DataFrame({'expenditure' : np.random.choice(['foo','bar'], n),
'groupid' : np.random.choice(['one','two'], n),
'coef' : np.random.randn(n)})
df2 = df[['expenditure', 'coef']].pivot_table(index=df.index, columns='expenditure', values='coef')
df2.plot(kind='kde')
哇,结果比我想象的要困难得多。在概念上似乎很容易,但(再一次)概念和实践确实不同 设置一些玩具数据:
n = 25
df = pd.DataFrame({'expenditure' : np.random.choice(['foo','bar'], n),
'groupid' : np.random.choice(['one','two'], n),
'coef' : randn(n)})
然后根据支出进行分组
,迭代每个支出,透视数据,并绘制kde:
gExp = df.groupby('expenditure')
for exp in gExp:
print exp[0]
gGroupid = exp[1].groupby('groupid')
g = exp[1][['groupid','coef']].reset_index(drop=True)
gpt = g.pivot_table(index = g.index, columns='groupid', values='coef')
gpt.plot(kind='kde').set_title(exp[0])
show()
结果:
在绘图之前,需要反复试验才能弄清楚数据必须以数据为中心 这迫使我最终理解了何时使用pivot_table()而不是pivot()
gExp = df.groupby('expenditure')
for exp in gExp:
print exp[0]
gGroupid = exp[1].groupby('groupid')
g = exp[1][['groupid','coef']].reset_index(drop=True)
gpt = g.pivot_table(index = g.index, columns='groupid', values='coef')
gpt.plot(kind='kde').set_title(exp[0])
show()