不能使用numpy.ndarray或pandas groupby创建单独的图

时间:2017-11-09 09:16:55

标签: python pandas numpy matplotlib pandas-groupby

我的目的是在大型数据集中绘制每个位置(ID)的测量数据(var1,var2,Timestamp)。我的数据:

ID  var1    var2    TimeStamp
AA  2       5    8/8/2010 0:00
AA  2.5     5    1/1/2010 0:00
B7  1.1     7    1/9/2010 0:00
B7  2       6    1/8/2010 0:00
B7  3       7    1/1/2010 0:00
B7  3       6    1/9/2010 0:00
C0  4       7    1/8/1900 0:00
...

但是,如图所示,每个位置ID的数据(或行数)会有所不同(通常在3-30之间变化) 要绘制每个相应位置的变量,我不确定如何继续: 从我迄今为止所经历的情况来看,类似于以下内容:

np.array(data).reshape(500,20,15)

通过原始数据的np.reshape创建一个numpy ndarray,由于数据形状不规则,我不允许将数组分区到各个位置。随后,使用Pands groupby:

data_df.groupby('ID').plot('var1','var2')

立即为每个位置ID绘制var1,var2的图形,但没有机会迭代每个图形以创建标签/轴/限制等设置。(我还不知道如何迭代pandas groupby对象来创建和管理个别情节)

tldr:

根据标准(针对每个ID)从不规则形状数据(如上所示)创建np.ndarray的任何好方法?

迭代和控制pandas dataframe.groupby对象的任何方式来绘制(不只是讨论汇总的均值/最小/最大等)变量?

1 个答案:

答案 0 :(得分:0)

使用pandas绝对是处理此类数据的方法。

groupby().plot()会返回一个或多个Axes个对象。你可以简单地迭代它们来改变它们的方面:

axs = data_df.groupby('ID').plot('var1','var2')
for ax in axs.values():
    ax.set_ylabel('whatever')
    ...