Iva*_*van 7 python plot group-by pandas subplot
我有一个这样的数据框:
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
Run Code Online (Sandbox Code Playgroud)
所以我按标识符进行分组:
df.groupby('identifier')
Run Code Online (Sandbox Code Playgroud)
现在我想在网格中生成子图,每组一个图.我试过了两个
df.groupby('identifier').plot(subplots=True)
Run Code Online (Sandbox Code Playgroud)
要么
df.groupby('identifier').plot(subplots=False)
Run Code Online (Sandbox Code Playgroud)
和
plt.subplots(3,3)
df.groupby('identifier').plot(subplots=True)
Run Code Online (Sandbox Code Playgroud)
无济于事.我该如何创建图表?
cph*_*wis 11
这是一个包含大量群组(随机假数据)的自动布局,并且grouped.get_group(key)
可以向您展示如何做更优雅的情节.
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()
Run Code Online (Sandbox Code Playgroud)
您确实使用pivot来获取identifiers
in列,然后绘制
pd.pivot_table(df.reset_index(),
index='index', columns='identifier', values='value'
).plot(subplots=True)
Run Code Online (Sandbox Code Playgroud)
而且,输出
pd.pivot_table(df.reset_index(),
index='index', columns='identifier', values='value'
)
Run Code Online (Sandbox Code Playgroud)
好像 -
identifier 55 56 57
index
2007-01-01 0.781611 0.766152 0.766152
2007-02-01 0.705615 0.032134 0.032134
2008-01-01 0.026512 0.993124 0.993124
2008-02-01 0.226420 0.033860 0.033860
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12785 次 |
最近记录: |