質問: pd.DataFrame({'time': list(df_count.index.values), 'num': list(df_count.values)}) # time num #0 2018-12-03 01:00:00 74 #1 2018-12-03 15:10:00 40 #2 2018-12-03 04:00:00 39 #pprint(df) ``` ↓月次のイメージ↓ ![月次のイメージ](https://teratail.storage.googleapis.com/uploads/contributed_images/a0c47e411852dcba8a73b8f3121fab86.png)
回答: 5週次、月次グラフイメージが不明ですが、おそらくこのようなものだろうとアタリをつけて作成してみました。 12についてはスマートな方法はないと思います。 34についてはpandasのgroupbyにまかせると楽できます。 ``` import pandas as pd import matplotlib.pyplot as plt lis =  {'period': 2 , 'time': '00:01:7'}, # 毎週土曜の01:00に実行 {'period': 1 , 'time': '10:07'}, # 毎日07:10に実行 {'period': 2 , 'time': '00:01:2'}, # 毎週月曜の01:00に実行 {'period': 1 , 'time': '00:03'}, # 毎日の03:00に実行 {'period': 1 , 'time': '00:02'}, {'period': 1 , 'time': '00:01'}, {'period': 2 , 'time': '00:01:1'}, {'period': 3 , 'time': '00:01:1'}, {'period': 1 , 'time': '00:02'}, {'period': 2 , 'time': '00:03:1'}, {'period': 3 , 'time': '00:01:1'}, {'period': 1 , 'time': '00:04'}, {'period': 1 , 'time': '30:02'}, {'period': 1 , 'time': '00:02'}, {'period': 3 , 'time': '00:03:20'} # 毎月20日の03:00に実行 ] # time列を日時に変換 def toDT(row): src = row['time'].split(':') # 何日目かを特定 day = 1 if row['period'] == 2: day = int(src[2]) # 曜日の情報は抜け落ちるが不要だろう elif row['period'] == 3: day = int(src[2]) # 2018年1月基準の日時に変換 from datetime import datetime dt = datetime(2018,1,day,int(src[1]),int(src[0])) row['time'] = dt return row df = pd.DataFrame( {'period':[v['period'] for v in lis], 'time':[v['time'] for v in lis]}) df = df.apply(toDT,axis=1) # time列を日時に変換 print(df) for per in [1,2,3]: # 日、週、月次 grp = df[df['period'] == per].groupby('time') df2 = grp.count().reset_index() df2.plot(kind='area', stacked=True, alpha=0.4,x='time') # x軸はtimeとする plt.savefig('{}.png'.format(per)) plt.show() ``` ![イメージ説明 !イメージ説明 !イメージ説明