2017-11-09 8 views
0

私の目的は、大きなデータセットの各位置(ID)から測定データ(var1、var2、Timestamp)をプロットすることです。私のデータ:示すよう個々のプロットを作成するにはnumpy.ndarrayまたはpandas groupbyを使用してください

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をプロットしますが、ラベル/軸/制限などのような設定を作成するには、各グラフを反復する機会を与えるものではありません(私はまだ知りません上記のように各IDの基準()に基づいて)(不規則な形状データからnp.ndarrayを作成する

でも良い方法:個々のプロットを作成し、管理するためのオブジェクトGROUPBYパンダ)

tldrを反復処理する方法?

パンダを反復して制御する方法はありません。dataframe.groupby変数を集計します(要約された平均/最小/最大などについての変数だけでなく)。

+0

必ず確認してください人々はあなたが何を意味するか再現し、ニーズに合った答えを書くことができるようにするために、[MCVE]問題のを提供しています。 – ImportanceOfBeingErnest

答えて

0

pandasを使用すると、この種のデータを処理する方法は間違いありません。

groupby().plot()は、1つまたは複数のAxesオブジェクトを返します。あなたは、単に彼らの様相を変えるためにそれらを反復処理することができます。

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

ありがとうございますが、axsは 'pandas.core.series.Series'型です。あなたが言及したforループ**はAxesのAxesに対して ' AxesのAxesに対して反復しません**。 ax.set_ylabel( 'whatever') 。 .. – Baron

+0

あなたは正しいです、 'axs'はSeries型ですが、その要素を繰り返し処理できます。私は、書かれたコードが動作していることを確認しました。それがうまくいかない場合は、データフレームフォーマットの詳細を提供する必要があります –

+0

'iteritems()'を使ってループを書くこともできます:IDの場合axs.iteritems(): print ID、ax) ' –

関連する問題