swarecito commited on
Commit
3e7782f
·
1 Parent(s): 4b273a0

Update app.py with new dataset URL

Browse files
Files changed (2) hide show
  1. app.ipynb +35 -168
  2. app.py +6 -29
app.ipynb CHANGED
@@ -2,7 +2,7 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": 91,
6
  "metadata": {},
7
  "outputs": [
8
  {
@@ -98,7 +98,7 @@
98
  },
99
  {
100
  "cell_type": "code",
101
- "execution_count": 92,
102
  "metadata": {},
103
  "outputs": [],
104
  "source": [
@@ -113,7 +113,7 @@
113
  },
114
  {
115
  "cell_type": "code",
116
- "execution_count": 93,
117
  "metadata": {},
118
  "outputs": [
119
  {
@@ -160,12 +160,12 @@
160
  "data": {
161
  "application/vnd.holoviews_exec.v0+json": "",
162
  "text/html": [
163
- "<div id='09e51de3-3fe2-4304-aa8b-d3af5d25449c'>\n",
164
- " <div id=\"a669020a-e832-4990-b53b-853da5a50678\" data-root-id=\"09e51de3-3fe2-4304-aa8b-d3af5d25449c\" style=\"display: contents;\"></div>\n",
165
  "</div>\n",
166
  "<script type=\"application/javascript\">(function(root) {\n",
167
- " var docs_json = {\"2e56390f-f05e-4657-87a3-f8a85f0e3e07\":{\"version\":\"3.3.4\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"09e51de3-3fe2-4304-aa8b-d3af5d25449c\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"20456677-627c-48a7-b7f6-e72b266225cb\",\"attributes\":{\"plot_id\":\"09e51de3-3fe2-4304-aa8b-d3af5d25449c\",\"comm_id\":\"422c48e88dc64fce9a534a26aaaf86dd\",\"client_comm_id\":\"8f839071df30437f8bf24fb1d20f2f7c\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
168
- " var render_items = [{\"docid\":\"2e56390f-f05e-4657-87a3-f8a85f0e3e07\",\"roots\":{\"09e51de3-3fe2-4304-aa8b-d3af5d25449c\":\"a669020a-e832-4990-b53b-853da5a50678\"},\"root_ids\":[\"09e51de3-3fe2-4304-aa8b-d3af5d25449c\"]}];\n",
169
  " var docs = Object.values(docs_json)\n",
170
  " if (!docs) {\n",
171
  " return\n",
@@ -229,193 +229,60 @@
229
  },
230
  "metadata": {
231
  "application/vnd.holoviews_exec.v0+json": {
232
- "id": "09e51de3-3fe2-4304-aa8b-d3af5d25449c"
233
  }
234
  },
235
  "output_type": "display_data"
236
- },
237
- {
238
- "data": {
239
- "text/html": [
240
- "<div>\n",
241
- "<style scoped>\n",
242
- " .dataframe tbody tr th:only-of-type {\n",
243
- " vertical-align: middle;\n",
244
- " }\n",
245
- "\n",
246
- " .dataframe tbody tr th {\n",
247
- " vertical-align: top;\n",
248
- " }\n",
249
- "\n",
250
- " .dataframe thead th {\n",
251
- " text-align: right;\n",
252
- " }\n",
253
- "</style>\n",
254
- "<table border=\"1\" class=\"dataframe\">\n",
255
- " <thead>\n",
256
- " <tr style=\"text-align: right;\">\n",
257
- " <th></th>\n",
258
- " <th>Temperature</th>\n",
259
- " <th>Humidity</th>\n",
260
- " <th>Light</th>\n",
261
- " <th>CO2</th>\n",
262
- " <th>HumidityRatio</th>\n",
263
- " <th>Occupancy</th>\n",
264
- " </tr>\n",
265
- " <tr>\n",
266
- " <th>date</th>\n",
267
- " <th></th>\n",
268
- " <th></th>\n",
269
- " <th></th>\n",
270
- " <th></th>\n",
271
- " <th></th>\n",
272
- " <th></th>\n",
273
- " </tr>\n",
274
- " </thead>\n",
275
- " <tbody>\n",
276
- " <tr>\n",
277
- " <th>2015-02-10 09:29:00</th>\n",
278
- " <td>21.05</td>\n",
279
- " <td>36.0975</td>\n",
280
- " <td>433.0</td>\n",
281
- " <td>787.250000</td>\n",
282
- " <td>0.005579</td>\n",
283
- " <td>1</td>\n",
284
- " </tr>\n",
285
- " <tr>\n",
286
- " <th>2015-02-10 09:29:59</th>\n",
287
- " <td>21.05</td>\n",
288
- " <td>35.9950</td>\n",
289
- " <td>433.0</td>\n",
290
- " <td>789.500000</td>\n",
291
- " <td>0.005563</td>\n",
292
- " <td>1</td>\n",
293
- " </tr>\n",
294
- " <tr>\n",
295
- " <th>2015-02-10 09:30:59</th>\n",
296
- " <td>21.10</td>\n",
297
- " <td>36.0950</td>\n",
298
- " <td>433.0</td>\n",
299
- " <td>798.500000</td>\n",
300
- " <td>0.005596</td>\n",
301
- " <td>1</td>\n",
302
- " </tr>\n",
303
- " <tr>\n",
304
- " <th>2015-02-10 09:32:00</th>\n",
305
- " <td>21.10</td>\n",
306
- " <td>36.2600</td>\n",
307
- " <td>433.0</td>\n",
308
- " <td>820.333333</td>\n",
309
- " <td>0.005621</td>\n",
310
- " <td>1</td>\n",
311
- " </tr>\n",
312
- " <tr>\n",
313
- " <th>2015-02-10 09:33:00</th>\n",
314
- " <td>21.10</td>\n",
315
- " <td>36.2000</td>\n",
316
- " <td>447.0</td>\n",
317
- " <td>821.000000</td>\n",
318
- " <td>0.005612</td>\n",
319
- " <td>1</td>\n",
320
- " </tr>\n",
321
- " </tbody>\n",
322
- "</table>\n",
323
- "</div>"
324
- ],
325
- "text/plain": [
326
- " Temperature Humidity Light CO2 HumidityRatio \\\n",
327
- "date \n",
328
- "2015-02-10 09:29:00 21.05 36.0975 433.0 787.250000 0.005579 \n",
329
- "2015-02-10 09:29:59 21.05 35.9950 433.0 789.500000 0.005563 \n",
330
- "2015-02-10 09:30:59 21.10 36.0950 433.0 798.500000 0.005596 \n",
331
- "2015-02-10 09:32:00 21.10 36.2600 433.0 820.333333 0.005621 \n",
332
- "2015-02-10 09:33:00 21.10 36.2000 447.0 821.000000 0.005612 \n",
333
- "\n",
334
- " Occupancy \n",
335
- "date \n",
336
- "2015-02-10 09:29:00 1 \n",
337
- "2015-02-10 09:29:59 1 \n",
338
- "2015-02-10 09:30:59 1 \n",
339
- "2015-02-10 09:32:00 1 \n",
340
- "2015-02-10 09:33:00 1 "
341
- ]
342
- },
343
- "execution_count": 93,
344
- "metadata": {},
345
- "output_type": "execute_result"
346
  }
347
  ],
348
  "source": [
349
  "# | export\n",
350
  "pn.extension(\n",
351
  " template=\"fast\",\n",
352
- ")\n",
353
- "\n",
354
- "csv_file = (\"https://raw.githubusercontent.com/holoviz/panel/main/examples/assets/occupancy.csv\")\n",
355
- "data = pd.read_csv(csv_file, parse_dates=[\"date\"], index_col=\"date\")\n",
356
- "\n",
357
- "data.tail()"
358
  ]
359
  },
360
  {
361
  "cell_type": "code",
362
- "execution_count": 94,
363
  "metadata": {},
364
  "outputs": [],
365
  "source": [
366
- "#|export\n",
367
- "def transform_data(variable, window, sigma):\n",
368
- " ''' Calculates the rolling average and the outliers '''\n",
369
- " avg = data[variable].rolling(window=window).mean()\n",
370
- " residual = data[variable] - avg\n",
371
- " std = residual.rolling(window=window).std()\n",
372
- " outliers = np.abs(residual) > std * sigma\n",
373
- " return avg, avg[outliers]\n",
374
- "\n",
375
- "def create_plot(variable=\"Temperature\", window=30, sigma=10):\n",
376
- " ''' Plots the rolling average and the outliers '''\n",
377
- " avg, highlight = transform_data(variable, window, sigma)\n",
378
- " return avg.hvplot(height=300, width=400, legend=False) * highlight.hvplot.scatter(\n",
379
- " color=\"orange\", padding=0.1, legend=False\n",
380
- " )"
381
- ]
382
- },
383
- {
384
- "cell_type": "code",
385
- "execution_count": 95,
386
- "metadata": {},
387
- "outputs": [],
388
- "source": [
389
- "#|export\n",
390
- "variable_widget = pn.widgets.Select(name=\"variable\", value=\"Temperature\", options=list(data.columns))\n",
391
- "window_widget = pn.widgets.IntSlider(name=\"window\", value=30, start=1, end=60)\n",
392
- "sigma_widget = pn.widgets.IntSlider(name=\"sigma\", value=10, start=0, end=20)"
393
- ]
394
- },
395
- {
396
- "cell_type": "code",
397
- "execution_count": 96,
398
- "metadata": {},
399
- "outputs": [],
400
- "source": [
401
- "#|export\n",
402
- "bound_plot = pn.bind(create_plot, variable=variable_widget, window=window_widget, sigma=sigma_widget)"
403
  ]
404
  },
405
  {
406
  "cell_type": "code",
407
- "execution_count": 99,
408
  "metadata": {},
409
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  "source": [
411
- "#|export\n",
412
- "pn.Column(variable_widget, window_widget, sigma_widget).servable(target=\"sidebar\")\n",
413
- "pn.Row(bound_plot).servable(target=\"main\");"
414
  ]
415
  },
416
  {
417
  "cell_type": "code",
418
- "execution_count": 98,
419
  "metadata": {},
420
  "outputs": [],
421
  "source": [
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 121,
6
  "metadata": {},
7
  "outputs": [
8
  {
 
98
  },
99
  {
100
  "cell_type": "code",
101
+ "execution_count": 122,
102
  "metadata": {},
103
  "outputs": [],
104
  "source": [
 
113
  },
114
  {
115
  "cell_type": "code",
116
+ "execution_count": 123,
117
  "metadata": {},
118
  "outputs": [
119
  {
 
160
  "data": {
161
  "application/vnd.holoviews_exec.v0+json": "",
162
  "text/html": [
163
+ "<div id='a964c7e5-8114-462f-ad64-8656b8a9812c'>\n",
164
+ " <div id=\"d3fca624-a674-49b9-8d92-2bd4ee95035f\" data-root-id=\"a964c7e5-8114-462f-ad64-8656b8a9812c\" style=\"display: contents;\"></div>\n",
165
  "</div>\n",
166
  "<script type=\"application/javascript\">(function(root) {\n",
167
+ " var docs_json = {\"aee097b3-2f0a-453f-8826-660fcfc488d5\":{\"version\":\"3.3.4\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"a964c7e5-8114-462f-ad64-8656b8a9812c\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"452b80d0-cfde-49b0-b615-e5b50f878e9e\",\"attributes\":{\"plot_id\":\"a964c7e5-8114-462f-ad64-8656b8a9812c\",\"comm_id\":\"7b5fc50b38af4747aa22865290defeb5\",\"client_comm_id\":\"4fd191d5d08d463a948de162e665a26a\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"copy_to_clipboard1\",\"properties\":[{\"name\":\"fill\",\"kind\":\"Any\",\"default\":\"none\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",
168
+ " var render_items = [{\"docid\":\"aee097b3-2f0a-453f-8826-660fcfc488d5\",\"roots\":{\"a964c7e5-8114-462f-ad64-8656b8a9812c\":\"d3fca624-a674-49b9-8d92-2bd4ee95035f\"},\"root_ids\":[\"a964c7e5-8114-462f-ad64-8656b8a9812c\"]}];\n",
169
  " var docs = Object.values(docs_json)\n",
170
  " if (!docs) {\n",
171
  " return\n",
 
229
  },
230
  "metadata": {
231
  "application/vnd.holoviews_exec.v0+json": {
232
+ "id": "a964c7e5-8114-462f-ad64-8656b8a9812c"
233
  }
234
  },
235
  "output_type": "display_data"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  }
237
  ],
238
  "source": [
239
  "# | export\n",
240
  "pn.extension(\n",
241
  " template=\"fast\",\n",
242
+ ")\n"
 
 
 
 
 
243
  ]
244
  },
245
  {
246
  "cell_type": "code",
247
+ "execution_count": 124,
248
  "metadata": {},
249
  "outputs": [],
250
  "source": [
251
+ "# | export\n",
252
+ "url = pn.widgets.TextInput(name=\"url\", placeholder=\"Enter the url of the dataset\", value=\"https://raw.githubusercontent.com/holoviz/panel/main/examples/assets/occupancy.csv\")\n",
253
+ "pn.Row(url).servable(target=\"sidebar\");\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  ]
255
  },
256
  {
257
  "cell_type": "code",
258
+ "execution_count": 125,
259
  "metadata": {},
260
+ "outputs": [
261
+ {
262
+ "data": {
263
+ "application/vnd.jupyter.widget-view+json": {
264
+ "model_id": "c0bae5fceeee417d8482d5bd92567ad4",
265
+ "version_major": 2,
266
+ "version_minor": 0
267
+ },
268
+ "text/plain": [
269
+ "BokehModel(combine_events=True, render_bundle={'docs_json': {'539dfb87-5515-4fa5-9d41-115c5f634125': {'version…"
270
+ ]
271
+ },
272
+ "execution_count": 125,
273
+ "metadata": {},
274
+ "output_type": "execute_result"
275
+ }
276
+ ],
277
  "source": [
278
+ "# | export\n",
279
+ "dataset = pd.read_csv(url.value)\n",
280
+ "pn.Row(dataset.head().hvplot().opts(width=800, height=400)).servable(target=\"main\")"
281
  ]
282
  },
283
  {
284
  "cell_type": "code",
285
+ "execution_count": 126,
286
  "metadata": {},
287
  "outputs": [],
288
  "source": [
app.py CHANGED
@@ -1,7 +1,7 @@
1
  # AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb.
2
 
3
  # %% auto 0
4
- __all__ = ['csv_file', 'data', 'variable_widget', 'window_widget', 'sigma_widget', 'bound_plot', 'transform_data', 'create_plot']
5
 
6
  # %% app.ipynb 1
7
  import panel as pn
@@ -16,35 +16,12 @@ pn.extension(
16
  template="fast",
17
  )
18
 
19
- csv_file = ("https://raw.githubusercontent.com/holoviz/panel/main/examples/assets/occupancy.csv")
20
- data = pd.read_csv(csv_file, parse_dates=["date"], index_col="date")
21
-
22
- data.tail()
23
 
24
  # %% app.ipynb 3
25
- def transform_data(variable, window, sigma):
26
- ''' Calculates the rolling average and the outliers '''
27
- avg = data[variable].rolling(window=window).mean()
28
- residual = data[variable] - avg
29
- std = residual.rolling(window=window).std()
30
- outliers = np.abs(residual) > std * sigma
31
- return avg, avg[outliers]
32
-
33
- def create_plot(variable="Temperature", window=30, sigma=10):
34
- ''' Plots the rolling average and the outliers '''
35
- avg, highlight = transform_data(variable, window, sigma)
36
- return avg.hvplot(height=300, width=400, legend=False) * highlight.hvplot.scatter(
37
- color="orange", padding=0.1, legend=False
38
- )
39
-
40
- # %% app.ipynb 4
41
- variable_widget = pn.widgets.Select(name="variable", value="Temperature", options=list(data.columns))
42
- window_widget = pn.widgets.IntSlider(name="window", value=30, start=1, end=60)
43
- sigma_widget = pn.widgets.IntSlider(name="sigma", value=10, start=0, end=20)
44
 
45
- # %% app.ipynb 5
46
- bound_plot = pn.bind(create_plot, variable=variable_widget, window=window_widget, sigma=sigma_widget)
47
 
48
- # %% app.ipynb 6
49
- pn.Column(variable_widget, window_widget, sigma_widget).servable(target="sidebar")
50
- pn.Row(bound_plot).servable(target="main")
 
1
  # AUTOGENERATED! DO NOT EDIT! File to edit: app.ipynb.
2
 
3
  # %% auto 0
4
+ __all__ = ['url', 'dataset']
5
 
6
  # %% app.ipynb 1
7
  import panel as pn
 
16
  template="fast",
17
  )
18
 
 
 
 
 
19
 
20
  # %% app.ipynb 3
21
+ url = pn.widgets.TextInput(name="url", placeholder="Enter the url of the dataset", value="https://raw.githubusercontent.com/holoviz/panel/main/examples/assets/occupancy.csv")
22
+ pn.Row(url).servable(target="sidebar");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
 
 
24
 
25
+ # %% app.ipynb 4
26
+ dataset = pd.read_csv(url.value)
27
+ pn.Row(dataset.head().hvplot().opts(width=800, height=400)).servable(target="main")