1

DataFrameインデックス列が である月ごとにグループ化してプロットしようとしていますDateTime
私の目標は、すべての月を別々のプロットにプロットすることです。

index=date_range('2011-9-1 00:00:03', '2012-09-01  00:00:03', freq='10min')
df=pd.DataFrame(np.random.rand(len(index),3),index=index)
df2 = df.groupby(lambda x: x.month)
df2.plot()

これにより、14 個のプロット (12 個ではありません) が得られます。最初の 2 個は空です。x 軸は 2000 年から 2010 年までの年です。最初の 2 個のプロットは 1 月です。

これに対処する方法について、あなたの良いアドバイスを期待しています。

4

1 に答える 1

1

何を達成しようとしていますか?データをグループ化するとき、プロットしたい場合は通常、何らかの方法で集計します。例えば:

import pandas as pd
index=pd.date_range('2011-1-1 00:00:03', '2011-12-31 23:50:03', freq='10min')
df=pd.DataFrame(np.random.rand(len(index),3),index=index)
df2 = df.groupby(lambda x: x.month)
for key, group in df2:
    group.plot()

更新: 1 か月を超えるグループの修正。これはおそらく最善の解決策ではありませんが、最初に頭に浮かんだのはこれです。

import pandas as pd

num_ticks = 15

index=pd.date_range('2011-9-1 00:00:03', '2012-09-01  00:00:03', freq='10min')
df=pd.DataFrame(np.random.rand(len(index),3),index=index)
df2 = df.groupby(lambda x: x.month)
for key, group in df2:
    step = len(group) / num_ticks
    reset = group.reset_index()
    reset.plot()
    plt.xticks(reset.index[::step],
               reset['index'][::step].apply(
                    lambda x: x.strftime('%Y-%m-%d')).values,
               rotation=70)
于 2013-08-26T20:02:58.437 に答える