使用Matplotlib

时间:2017-06-12 23:15:54

标签: python pandas matplotlib

我有一个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)

1 个答案:

答案 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)