偽のデータを提供するには:
In [11]: rng = pd.date_range('2013', freq='H', periods=1000)
In [12]: df = pd.DataFrame(np.random.randn(len(rng)), index=rng, columns=['data'])
まず、週番号を(列として)入力します。
In [13]: df['week'] = df.index.week
次に、週の初めからの時間を計算します (もっと洗練された方法があるかもしれません):
In [14]: df['week_beginning'] = df.index.to_period('W').to_timestamp()
In [15]: df['week_time'] = df.index.to_series() - df['week_beginning']
これで、次を使用できますpivot_table
。
In [16]: df.pivot_table(values='data', rows='week_time', cols='week')
Out[16]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 168 entries, 0 to 601200000000000
Data columns (total 7 columns):
33 120 non-null values
34 168 non-null values
35 168 non-null values
36 168 non-null values
37 168 non-null values
38 168 non-null values
39 40 non-null values
dtypes: float64(7)
これがあなたがプロットしたいもののように思えます(前の質問で見つかった手法を使用して):
In [17]: df.pivot_table('data', 'week_time', 'week').rename(columns=lambda x: 'Week ' + str(x)).plot()
注: この特定のプロットはかなり乱雑です。多くのデータポイントがあるため、このデータの一部を事前に集計することは理にかなっている場合があります。