我有一个Dataframe,我将Dataframe切成三个子集。每个子集有3到4行数据。在将数据帧切割成三个子集后,我使用Matplotlib绘制它们。
我遇到的问题是我无法创建使用切片DataFrame绘制每个子图的图。例如,在一组中的三个组中,我只绘制了一个图(最后一个子图),其中没有数据用于组中剩余的两个图初始集。看起来像是' r'价值没有转移到' r.plot'对于所有三个子图。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
df['key1'] = 0
df.key1.iloc[0:3] = 1
df.key1.iloc[3:7] = 2
df.key1.iloc[7:] = 3
df_grouped = df.groupby('key1')
for group_name, group_value in df_grouped:
rows, columns = group_value.shape
fig, axes = plt.subplots(rows, 1, sharex=True, sharey=True, figsize=(15,20))
for i,r in group_value.iterrows():
r = r[0:columns-1]
r.plot(kind='bar', fill=False, log=False)
答案 0 :(得分:1)
我认为您可能希望以某种方式对我称之为df_subset
的内容进行总结,但这里有一种方法可以在自己的面板中绘制每个组。
# Your Code Setting Up the Dataset
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
df['key1'] = 0
df.key1.iloc[0:3] = 1
df.key1.iloc[3:7] = 2
df.key1.iloc[7:] = 3
# My Code to Plot in Three Panels
distinct_keys = df['key1'].unique()
fig, axes = plt.subplots(len(distinct_keys), 1, sharex=True, figsize=(3,5))
for i, key in enumerate(distinct_keys):
df_subset = df[df.key1==key]
# {maybe insert a line here to summarize df_subset somehow interesting?}
# plot
axes[i] = df_subset.plot(kind='bar', fill=False, log=False)