質問編集履歴

5

誤字修正

2018/12/02 16:43

投稿

musuka
musuka

スコア10

test CHANGED
File without changes
test CHANGED
@@ -254,7 +254,7 @@
254
254
 
255
255
 
256
256
 
257
- df = pd.DataFrame({key: list(df_count.index.values), 'num': list(df_count.values)})
257
+ df = pd.DataFrame({'time': list(df_count.index.values), 'num': list(df_count.values)})
258
258
 
259
259
  # time num
260
260
 

4

追記

2018/12/02 16:43

投稿

musuka
musuka

スコア10

test CHANGED
File without changes
test CHANGED
@@ -173,3 +173,105 @@
173
173
  weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
174
174
 
175
175
  時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)
176
+
177
+
178
+
179
+ -============================================
180
+
181
+ ↓↓↓追記(2018_1203_0123)↓↓↓
182
+
183
+ -============================================
184
+
185
+ 追記①
186
+
187
+ ⑤の週次、月次グラフのイメージ画像を追加しました。
188
+
189
+ (画像では11-21から出てしまってますが)
190
+
191
+ 現在から直近30日のperiodごとのtimeごとの推移を見たいです。
192
+
193
+
194
+
195
+ 追記②
196
+
197
+ > {'period': 2 'time': '00:01:2'} # WEEKLY 毎週月曜の01:00に実行
198
+
199
+
200
+
201
+ また、WEEKLYの分がまた厄介で可能なら落としたくないと考えています。
202
+
203
+ つまり、最後の:2を落として、
204
+
205
+ 現在から4回先までのtimeデータを
206
+
207
+ 4回 lis.append(データ)する?必要があります。
208
+
209
+ (12-03 01:00, 12-10 01:00, 12-17 01:00, 12-24 01:00)
210
+
211
+
212
+
213
+ 追記③
214
+
215
+ groupbyの使い方がいまいちぴんと来てなくて、
216
+
217
+ groupbyの関連でvalue_countsを知ったので、一旦実装してみました。
218
+
219
+ MySQLでいうところの、
220
+
221
+ SELECT period, time, COUNT(*) FROM lis GROUP BY period, time ;
222
+
223
+ 的な結果を得たいと考えています。
224
+
225
+
226
+
227
+ ```python3
228
+
229
+ df = pd.DataFrame({'time': [row['time'] for row in lis]})
230
+
231
+ # >>> df[:]
232
+
233
+ # time
234
+
235
+ # 0 2018-12-31 21:00:00
236
+
237
+ # 1 2018-12-07 20:30:00
238
+
239
+ # 2 2018-12-02 12:10:00
240
+
241
+ #pprint(df, width=273)
242
+
243
+
244
+
245
+ df_count = df['time'].value_counts()
246
+
247
+ # 2018-12-02 16:00:00 74
248
+
249
+ # 2018-12-03 06:10:00 40
250
+
251
+ # 2018-12-03 04:10:00 39
252
+
253
+ #pprint(df_count)
254
+
255
+
256
+
257
+ df = pd.DataFrame({key: list(df_count.index.values), 'num': list(df_count.values)})
258
+
259
+ # time num
260
+
261
+ #0 2018-12-03 01:00:00 74
262
+
263
+ #1 2018-12-03 15:10:00 40
264
+
265
+ #2 2018-12-03 04:00:00 39
266
+
267
+ #pprint(df)
268
+
269
+ ```
270
+
271
+
272
+
273
+
274
+
275
+ ↓月次のイメージ↓
276
+
277
+ ![月次のイメージ](a0c47e411852dcba8a73b8f3121fab86.png)

3

レイアウト変更

2018/12/02 16:30

投稿

musuka
musuka

スコア10

test CHANGED
File without changes
test CHANGED
@@ -55,52 +55,6 @@
55
55
  ]
56
56
 
57
57
  ```
58
-
59
- 上記のような使いにくい時系列データがあります。
60
-
61
-
62
-
63
- このデータを加工し、periodごとのtimeごとに件数をカウントし、
64
-
65
- pandasで横軸:time, 縦軸:件数のグラフを書きたいのですが、
66
-
67
- スマートな方法はありますか。
68
-
69
-
70
-
71
- 現在はlis[x]['time']をmm:hhからhh:mmに変更し、
72
-
73
- 件数を数えるための辞書を3種類用意し、
74
-
75
- ループして数えてます。
76
-
77
-
78
-
79
- ①hh:mmに変更せずとも、datetimeのstrtimeやら
80
-
81
-  pandasのなんやらで、上手いことできるんじゃなかろうか。
82
-
83
-
84
-
85
- ②mm:hh→hh:mmにする処理(splitで実装)、
86
-
87
-  もっと読みやすくて短い書き方はないのか。
88
-
89
-
90
-
91
- ③件数数える部分の処理(ループでインクリメントして実装)、
92
-
93
- countメソッド?collections.Counter関数?その他?で上手いことできるんじゃなかろうか。
94
-
95
-
96
-
97
- ④直近1カ月のグラフにするとして、weeklyとmonthlyの時系列データは同生成するか。
98
-
99
- 仮にtimeを'2018 12-07 02:30'のようなフォーマットにするとして、
100
-
101
- weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
102
-
103
- 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)
104
58
 
105
59
 
106
60
 
@@ -165,3 +119,57 @@
165
119
  plt.savefig("image.png")
166
120
 
167
121
  ```
122
+
123
+
124
+
125
+ 上記のような使いにくい時系列データがあります。
126
+
127
+
128
+
129
+ このデータを加工し、periodごとのtimeごとに件数をカウントし、
130
+
131
+ pandasで横軸:time, 縦軸:件数のグラフを書きたいのですが、
132
+
133
+ スマートな方法はありますか。
134
+
135
+
136
+
137
+ 現在はlis[x]['time']をmm:hhからhh:mmに変更し、
138
+
139
+ 件数を数えるための辞書を3種類用意し、
140
+
141
+ ループして数えてます。
142
+
143
+
144
+
145
+ ①hh:mmに変更せずとも、datetimeのstrtimeやら
146
+
147
+  pandasのなんやらで、上手いことできるんじゃなかろうか。
148
+
149
+
150
+
151
+ ②mm:hh→hh:mmにする処理(splitで実装)、
152
+
153
+  もっと読みやすくて短い書き方はないのか。
154
+
155
+
156
+
157
+ ③件数数える部分の処理(ループでインクリメントして実装)、
158
+
159
+ countメソッド?collections.Counter関数?その他?で上手くできるんじゃないか。
160
+
161
+
162
+
163
+ ④件数を数えるなら、辞書かリストのどちらがいいか。
164
+
165
+ pandasで使うなら、リストの方がなんとなく使いやすそう。
166
+
167
+
168
+
169
+ ⑤直近1カ月のグラフにするとして、weeklyとmonthlyの時系列データは同生成するか。
170
+
171
+ 仮にtimeを'2018 12-07 02:30'のようなフォーマットにするとして、
172
+
173
+ weekly直近の4週間(4件分の辞書)やmonthly(1件分の辞書)は、
174
+
175
+ 時間の加算をどうやって実装し、生成するのか(datetime,pandasで上手くできないか?)

2

タグ追加

2018/12/01 19:33

投稿

musuka
musuka

スコア10

test CHANGED
File without changes
test CHANGED
File without changes

1

タグ追加、一部修正

2018/12/01 19:29

投稿

musuka
musuka

スコア10

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