如何使用子图创建 Pandas groupby 图 [英] How to create Pandas groupby plot with subplots
本文介绍了如何使用子图创建 Pandas groupby 图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的数据框:
I have a data frame like this:
value identifier
2007-01-01 0.781611 55
2007-01-01 0.766152 56
2007-01-01 0.766152 57
2007-02-01 0.705615 55
2007-02-01 0.032134 56
2007-02-01 0.032134 57
2008-01-01 0.026512 55
2008-01-01 0.993124 56
2008-01-01 0.993124 57
2008-02-01 0.226420 55
2008-02-01 0.033860 56
2008-02-01 0.033860 57
所以我对每个标识符进行分组:
So I do a groupby per identifier:
df.groupby('identifier')
现在我想在网格中生成子图,每组一个图.我两个都试了
And now I want to generate subplots in a grid, one plot per group. I tried both
df.groupby('identifier').plot(subplots=True)
或
df.groupby('identifier').plot(subplots=False)
和
plt.subplots(3,3)
df.groupby('identifier').plot(subplots=True)
无济于事.如何创建图表?
to no avail. How can I create the graphs?
推荐答案
这是一个包含许多组(随机假数据)的自动布局,并使用 grouped.get_group(key)
将显示你怎么做更优雅的情节.
Here's an automated layout with lots of groups (of random fake data) and playing around with grouped.get_group(key)
will show you how to do more elegant plots.
import pandas as pd
from numpy.random import randint
import matplotlib.pyplot as plt
df = pd.DataFrame(randint(0,10,(200,6)),columns=list('abcdef'))
grouped = df.groupby('a')
rowlength = grouped.ngroups/2 # fix up if odd number of groups
fig, axs = plt.subplots(figsize=(9,4),
nrows=2, ncols=rowlength, # fix as above
gridspec_kw=dict(hspace=0.4)) # Much control of gridspec
targets = zip(grouped.groups.keys(), axs.flatten())
for i, (key, ax) in enumerate(targets):
ax.plot(grouped.get_group(key))
ax.set_title('a=%d'%key)
ax.legend()
plt.show()
这篇关于如何使用子图创建 Pandas groupby 图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文