teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

誤字修正

2018/12/02 16:43

投稿

musuka
musuka

スコア10

title CHANGED
File without changes
body CHANGED
@@ -126,7 +126,7 @@
126
126
  # 2018-12-03 04:10:00 39
127
127
  #pprint(df_count)
128
128
 
129
- df = pd.DataFrame({key: list(df_count.index.values), 'num': list(df_count.values)})
129
+ df = pd.DataFrame({'time': list(df_count.index.values), 'num': list(df_count.values)})
130
130
  # time num
131
131
  #0 2018-12-03 01:00:00 74
132
132
  #1 2018-12-03 15:10:00 40

4

追記

2018/12/02 16:43

投稿

musuka
musuka

スコア10

title CHANGED
File without changes
body CHANGED
@@ -85,4 +85,55 @@
85
85
  ⑤直近1カ月のグラフにするとして、weeklyとmonthlyの時系列データは同生成するか。
86
86
  仮にtimeを'2018 12-07 02:30'のようなフォーマットにするとして、
87
87
  weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
88
- 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)
88
+ 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)
89
+
90
+ -============================================
91
+ ↓↓↓追記(2018_1203_0123)↓↓↓
92
+ -============================================
93
+ 追記①
94
+ ⑤の週次、月次グラフのイメージ画像を追加しました。
95
+ (画像では11-21から出てしまってますが)
96
+ 現在から直近30日のperiodごとのtimeごとの推移を見たいです。
97
+
98
+ 追記②
99
+ > {'period': 2 'time': '00:01:2'} # WEEKLY 毎週月曜の01:00に実行
100
+
101
+ また、WEEKLYの分がまた厄介で可能なら落としたくないと考えています。
102
+ つまり、最後の:2を落として、
103
+ 現在から4回先までのtimeデータを
104
+ 4回 lis.append(データ)する?必要があります。
105
+ (12-03 01:00, 12-10 01:00, 12-17 01:00, 12-24 01:00)
106
+
107
+ 追記③
108
+ groupbyの使い方がいまいちぴんと来てなくて、
109
+ groupbyの関連でvalue_countsを知ったので、一旦実装してみました。
110
+ MySQLでいうところの、
111
+ SELECT period, time, COUNT(*) FROM lis GROUP BY period, time ;
112
+ 的な結果を得たいと考えています。
113
+
114
+ ```python3
115
+ df = pd.DataFrame({'time': [row['time'] for row in lis]})
116
+ # >>> df[:]
117
+ # time
118
+ # 0 2018-12-31 21:00:00
119
+ # 1 2018-12-07 20:30:00
120
+ # 2 2018-12-02 12:10:00
121
+ #pprint(df, width=273)
122
+
123
+ df_count = df['time'].value_counts()
124
+ # 2018-12-02 16:00:00 74
125
+ # 2018-12-03 06:10:00 40
126
+ # 2018-12-03 04:10:00 39
127
+ #pprint(df_count)
128
+
129
+ df = pd.DataFrame({key: list(df_count.index.values), 'num': list(df_count.values)})
130
+ # time num
131
+ #0 2018-12-03 01:00:00 74
132
+ #1 2018-12-03 15:10:00 40
133
+ #2 2018-12-03 04:00:00 39
134
+ #pprint(df)
135
+ ```
136
+
137
+
138
+ ↓月次のイメージ↓
139
+ ![月次のイメージ](a0c47e411852dcba8a73b8f3121fab86.png)

3

レイアウト変更

2018/12/02 16:30

投稿

musuka
musuka

スコア10

title CHANGED
File without changes
body CHANGED
@@ -27,30 +27,7 @@
27
27
  {'period': 3 'time': '00:03:20'} # 毎月20日の03:00に実行
28
28
  ]
29
29
  ```
30
- 上記のような使いにくい時系列データがあります。
31
30
 
32
- このデータを加工し、periodごとのtimeごとに件数をカウントし、
33
- pandasで横軸:time, 縦軸:件数のグラフを書きたいのですが、
34
- スマートな方法はありますか。
35
-
36
- 現在はlis[x]['time']をmm:hhからhh:mmに変更し、
37
- 件数を数えるための辞書を3種類用意し、
38
- ループして数えてます。
39
-
40
- ①hh:mmに変更せずとも、datetimeのstrtimeやら
41
-  pandasのなんやらで、上手いことできるんじゃなかろうか。
42
-
43
- ②mm:hh→hh:mmにする処理(splitで実装)、
44
-  もっと読みやすくて短い書き方はないのか。
45
-
46
- ③件数数える部分の処理(ループでインクリメントして実装)、
47
- countメソッド?collections.Counter関数?その他?で上手いことできるんじゃなかろうか。
48
-
49
- ④直近1カ月のグラフにするとして、weeklyとmonthlyの時系列データは同生成するか。
50
- 仮にtimeを'2018 12-07 02:30'のようなフォーマットにするとして、
51
- weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
52
- 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)
53
-
54
31
  ```python3
55
32
  lis2 = []
56
33
  # mm:hhをhh:mmに変更したlis2を再作成
@@ -81,4 +58,31 @@
81
58
  df.plot(kind='area', stacked=True, alpha=0.4)
82
59
  plt.show()
83
60
  plt.savefig("image.png")
84
- ```
61
+ ```
62
+
63
+ 上記のような使いにくい時系列データがあります。
64
+
65
+ このデータを加工し、periodごとのtimeごとに件数をカウントし、
66
+ pandasで横軸:time, 縦軸:件数のグラフを書きたいのですが、
67
+ スマートな方法はありますか。
68
+
69
+ 現在はlis[x]['time']をmm:hhからhh:mmに変更し、
70
+ 件数を数えるための辞書を3種類用意し、
71
+ ループして数えてます。
72
+
73
+ ①hh:mmに変更せずとも、datetimeのstrtimeやら
74
+  pandasのなんやらで、上手いことできるんじゃなかろうか。
75
+
76
+ ②mm:hh→hh:mmにする処理(splitで実装)、
77
+  もっと読みやすくて短い書き方はないのか。
78
+
79
+ ③件数数える部分の処理(ループでインクリメントして実装)、
80
+ countメソッド?collections.Counter関数?その他?で上手くできるんじゃないか。
81
+
82
+ ④件数を数えるなら、辞書かリストのどちらがいいか。
83
+ pandasで使うなら、リストの方がなんとなく使いやすそう。
84
+
85
+ ⑤直近1カ月のグラフにするとして、weeklyとmonthlyの時系列データは同生成するか。
86
+ 仮にtimeを'2018 12-07 02:30'のようなフォーマットにするとして、
87
+ weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
88
+ 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)

2

タグ追加

2018/12/01 19:33

投稿

musuka
musuka

スコア10

title CHANGED
File without changes
body CHANGED
File without changes

1

タグ追加、一部修正

2018/12/01 19:29

投稿

musuka
musuka

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  質問は①~④です。
2
- 質問ゴチャゴチャしていて読みづらく申し訳ございませんが、
2
+ ゴチャゴチャしていて読みづらく申し訳ございませんが、
3
3
  意見、回答、いただけると幸いです。
4
4
 
5
5
  ```python3