2016-07-05 16 views
2

私は以下のpandas DataFrameを持っています。パンダ:単一のデータフレームから複数の時系列を1つのプロットにプロットする方法は?

import pandas as pd 
df = pd.read_csv('filename.csv') 

print(df) 

    time  Group  blocks 
0  1  A   4 
1  2  A   7 
2  3  A   12 
3  4  A   17 
4  5  A   21 
5  6  A   26 
6  7  A   33 
7  8  A   39 
8  9  A   48 
9  10  A   59 
    ....  ....   .... 
36  35  A   231 
37  1  B   1 
38  2  B   1.5 
39  3  B   3 
40  4  B   5 
41  5  B   6 
    ....  ....   .... 
911 35  Z   349 

これはmin=1からmax=35への複数の時系列風データとデータフレームです。各Groupには、このような時系列があります。

私は個々の時系列AからZまでを1から35のx軸に対してプロットしたいと思います.Y軸は毎回blocksになります。

私は、アンドリュース曲線プロットのようなものを使用するのでは互いに対して、各系列をプロットしますhttp://pandas.pydata.org/pandas-docs/stable/visualization.html

enter image description here

を考えていました。各「色相」は異なるグループに設定されます。 (他のアイデアを歓迎します)

私の問題:このデータフレームをどのようにフォーマットして複数のシリーズをプロットするのですか?列はGroupAGroupBなどですか?

どのようにデータフレームは、形式にするのですか:示されているよう

time GroupA blocksA GroupsB blocksB GroupsC blocksC.... 

が、これはアンドリュースプロットの正しい形式ですか?

EDIT

私がしようとした場合:

df.groupby('Group').plot(legend=False) 

x軸は完全に間違っています。すべての時系列は0から35までプロットする必要があります。

enter image description here

どのように私はこの問題を解決するのですか?

+0

あなたは、グループに必要な値をマークしなければならないデータフレームに 'andrews_curves'を呼び出すこと。列 'Group'でグループ化するには' andrews_curves(df、 'Group') 'を試してください。 – Serenity

+0

@Serenityこれは混乱です。 x軸は1から35までではなく、y軸は何か分かりません。どのようにこれを変更するのですか? – ShanZhengYang

+0

Andrewsのカーブは[-pi; +πである。 http://fedc.wiwi.hu-berlin.de/xplore/tutorials/mvahtmlnode9.html – Serenity

答えて

2

この変形例を見てください。最初のものはAndrewsのカーブで、2番目のものは1列でグループ化された複数行のプロットですMonth。あなたは一つの機能に引き揚げアンドリュース曲線あなたのデータをプロットすると

import pandas as pd 
import statsmodels.api as sm 
import matplotlib.pylab as plt 
from pandas.tools.plotting import andrews_curves 

data = sm.datasets.get_rdataset('airquality').data 
fig, (ax1, ax2) = plt.subplots(nrows = 2, ncols = 1) 
data = data[data.columns.tolist()[3:]] # use only Temp, Month, Day 

# Andrews' curves 
andrews_curves(data, 'Month', ax=ax1) 

# multiline plot with group by 
for key, grp in data.groupby(['Month']): 
    ax2.plot(grp['Day'], grp['Temp'], label = "Temp in {0:02d}".format(key)) 
plt.legend(loc='best')  
plt.show() 

:データフレームdataは、3つの列TemperatureDay、およびMonthが含まれています。これは、機能によって近似されるAndrewsの曲線が、対応するデータ点も近くにあることを示唆していることを意味します。

enter image description here

+1

上記の編集を参照してください。私は 'groupby'プロットに問題があります – ShanZhengYang

関連する問題