使用 Matplotlib 绘制 Pandas 中数据帧的子集



我有一个数据帧,我将数据帧分成三个子集。每个子集有 3 到 4 行数据。将数据框切成三个子集后,我使用 Matplotlib 绘制它们。

遇到的问题是我无法创建一个绘图,其中每个子图都是使用切片数据帧绘制的。例如,在一个集合中的三个人组中,我只绘制了一个图(最后一个子图(,其中没有组中其余两个图初始集的数据。看起来所有三个子图的"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)

我想你可能希望以某种方式总结我所说的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)

最新更新