ts-data-generator 0.2.1__tar.gz → 0.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/PKG-INFO +4 -4
  2. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/README.md +3 -3
  3. ts_data_generator-0.2.3/notebooks/aggregate.ipynb +545 -0
  4. ts_data_generator-0.2.3/notebooks/sample.ipynb +1812 -0
  5. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/poetry.lock +787 -360
  6. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/pyproject.toml +2 -2
  7. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/cli.py +2 -2
  8. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/data_gen.py +223 -100
  9. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/schema/models.py +62 -27
  10. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/tests/test_generator.py +27 -0
  11. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/uv.lock +1125 -1123
  12. ts_data_generator-0.2.1/notebooks/sample.ipynb +0 -1769
  13. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/.github/workflows/ci.yaml +0 -0
  14. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/.github/workflows/test.yml +0 -0
  15. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/.gitignore +0 -0
  16. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/.python-version +0 -0
  17. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/LICENSE +0 -0
  18. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/etc/data/sample.csv +0 -0
  19. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/notebooks/image.png +0 -0
  20. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/notebooks/imputer.ipynb +0 -0
  21. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/__init__.py +0 -0
  22. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/schema/__init__.py +0 -0
  23. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/schema/converter.py +0 -0
  24. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/utils/__init__.py +0 -0
  25. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/utils/functions.py +0 -0
  26. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/utils/trends.py +0 -0
  27. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/src/ts_data_generator/utils.py +0 -0
  28. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/tests/__init__.py +0 -0
  29. {ts_data_generator-0.2.1 → ts_data_generator-0.2.3}/tests/test_constructor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ts-data-generator
3
- Version: 0.2.1
3
+ Version: 0.2.3
4
4
  Summary: A Python library for generating synthetic time series data
5
5
  Author-email: Manoj Manivannan <manojm18@live.in>
6
6
  License: MIT
@@ -67,9 +67,9 @@ Usage: tsdata generate [OPTIONS]
67
67
  Options:
68
68
  --start TEXT Start datetime 'YYYY-MM-DD' [required]
69
69
  --end TEXT End datetime 'YYYY-MM-DD' [required]
70
- --granularity [FIVE_MIN|HOURLY|DAILY]
70
+ --granularity [s|min|5min|h|d|w|me|y]
71
71
  Granularity of the time series data [required]
72
- --dims TEXT + separated list of dimensions definition of format 'name:function:values' [required]
72
+ --dims TEXT Dimensions definition of format 'name:function:values' [required]
73
73
  --mets TEXT + separated list of metrics definition trends of format 'name:trend(*params)' [required]
74
74
  --output TEXT Output file name [required]
75
75
  --help Show this message and exit.
@@ -79,7 +79,7 @@ For example you can call this cli tool like below to generate data
79
79
  tsdata generate \
80
80
  --start "2019-01-01" \
81
81
  --end "2019-01-12" \
82
- --granularity "FIVE_MIN" \
82
+ --granularity "5min" \
83
83
  --dims "product:random_choice:A,B,C,D" \
84
84
  --dims "product_id:random_float:1,4" \
85
85
  --dims "const:constant:5" \
@@ -44,9 +44,9 @@ Usage: tsdata generate [OPTIONS]
44
44
  Options:
45
45
  --start TEXT Start datetime 'YYYY-MM-DD' [required]
46
46
  --end TEXT End datetime 'YYYY-MM-DD' [required]
47
- --granularity [FIVE_MIN|HOURLY|DAILY]
47
+ --granularity [s|min|5min|h|d|w|me|y]
48
48
  Granularity of the time series data [required]
49
- --dims TEXT + separated list of dimensions definition of format 'name:function:values' [required]
49
+ --dims TEXT Dimensions definition of format 'name:function:values' [required]
50
50
  --mets TEXT + separated list of metrics definition trends of format 'name:trend(*params)' [required]
51
51
  --output TEXT Output file name [required]
52
52
  --help Show this message and exit.
@@ -56,7 +56,7 @@ For example you can call this cli tool like below to generate data
56
56
  tsdata generate \
57
57
  --start "2019-01-01" \
58
58
  --end "2019-01-12" \
59
- --granularity "FIVE_MIN" \
59
+ --granularity "5min" \
60
60
  --dims "product:random_choice:A,B,C,D" \
61
61
  --dims "product_id:random_float:1,4" \
62
62
  --dims "const:constant:5" \
@@ -0,0 +1,545 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "5f380afe",
6
+ "metadata": {},
7
+ "source": []
8
+ },
9
+ {
10
+ "cell_type": "code",
11
+ "execution_count": 1,
12
+ "id": "703b795f",
13
+ "metadata": {},
14
+ "outputs": [],
15
+ "source": [
16
+ "# Import the Data generator class from the ts_data_generator module \n",
17
+ "from ts_data_generator import DataGen\n",
18
+ "from ts_data_generator.utils.functions import random_choice, random_int\n",
19
+ "from ts_data_generator.utils.trends import SinusoidalTrend, LinearTrend, WeekendTrend, StockTrend\n",
20
+ "import matplotlib.pyplot as plt\n",
21
+ "import random"
22
+ ]
23
+ },
24
+ {
25
+ "cell_type": "code",
26
+ "execution_count": 2,
27
+ "id": "bbd17ad4",
28
+ "metadata": {},
29
+ "outputs": [],
30
+ "source": [
31
+ "\n",
32
+ "d = DataGen()\n",
33
+ "d.start_datetime = \"2019-01-01\"\n",
34
+ "d.end_datetime = \"2019-01-12\"\n",
35
+ "d.to_granularity(\"h\")\n",
36
+ "\n",
37
+ "\n",
38
+ "d.add_dimension(\"product\", random_choice([\"A\", \"B\", \"C\", \"D\"]))\n",
39
+ "d.add_dimension(name=\"interface\", function=\"X Y Z\".split())\n",
40
+ "\n",
41
+ "d.add_metric(\n",
42
+ " name=\"sinusoidal\", \n",
43
+ " trends=[\n",
44
+ " SinusoidalTrend(name=\"sine\", amplitude=6, freq=3, phase=0, noise_level=1.5)\n",
45
+ " ],\n",
46
+ " aggregation_type=\"sum\"\n",
47
+ " )\n",
48
+ "\n",
49
+ "\n",
50
+ "d.add_metric(\n",
51
+ " name=\"sinusoidal_linear\", \n",
52
+ " trends=[\n",
53
+ " SinusoidalTrend(name=\"sine\", amplitude=3, freq=5, phase=0, noise_level=1.5),\n",
54
+ " LinearTrend(name=\"linear\", limit=30, offset=10, noise_level=1)\n",
55
+ " ],\n",
56
+ " aggregation_type=\"sum\"\n",
57
+ ")\n",
58
+ "\n",
59
+ "\n",
60
+ "def my_custom_function():\n",
61
+ " while True:\n",
62
+ " val1 = random.randint(1,2)\n",
63
+ " val2 = random.randint(1,3)\n",
64
+ " # val3 = val1 + val2\n",
65
+ " yield (val1, val2)\n",
66
+ "\n",
67
+ "d.add_multi_items(names=\"val1 val2\".split(), function=my_custom_function(), aggregation_type=\"sum mean\".split())\n",
68
+ "d.add_multi_items(names=\"val3 val4\".split(), function=my_custom_function())\n"
69
+ ]
70
+ },
71
+ {
72
+ "cell_type": "code",
73
+ "execution_count": 3,
74
+ "id": "22ab27a2",
75
+ "metadata": {},
76
+ "outputs": [
77
+ {
78
+ "data": {
79
+ "text/html": [
80
+ "<div>\n",
81
+ "<style scoped>\n",
82
+ " .dataframe tbody tr th:only-of-type {\n",
83
+ " vertical-align: middle;\n",
84
+ " }\n",
85
+ "\n",
86
+ " .dataframe tbody tr th {\n",
87
+ " vertical-align: top;\n",
88
+ " }\n",
89
+ "\n",
90
+ " .dataframe thead th {\n",
91
+ " text-align: right;\n",
92
+ " }\n",
93
+ "</style>\n",
94
+ "<table border=\"1\" class=\"dataframe\">\n",
95
+ " <thead>\n",
96
+ " <tr style=\"text-align: right;\">\n",
97
+ " <th></th>\n",
98
+ " <th>epoch</th>\n",
99
+ " <th>product</th>\n",
100
+ " <th>interface</th>\n",
101
+ " <th>sinusoidal</th>\n",
102
+ " <th>sinusoidal_linear</th>\n",
103
+ " <th>val1</th>\n",
104
+ " <th>val2</th>\n",
105
+ " <th>val3</th>\n",
106
+ " <th>val4</th>\n",
107
+ " </tr>\n",
108
+ " </thead>\n",
109
+ " <tbody>\n",
110
+ " <tr>\n",
111
+ " <th>2019-01-01 00:00:00</th>\n",
112
+ " <td>1546300800</td>\n",
113
+ " <td>C</td>\n",
114
+ " <td>X</td>\n",
115
+ " <td>-1.558087</td>\n",
116
+ " <td>8.859585</td>\n",
117
+ " <td>2</td>\n",
118
+ " <td>3</td>\n",
119
+ " <td>2</td>\n",
120
+ " <td>3</td>\n",
121
+ " </tr>\n",
122
+ " <tr>\n",
123
+ " <th>2019-01-01 01:00:00</th>\n",
124
+ " <td>1546304400</td>\n",
125
+ " <td>B</td>\n",
126
+ " <td>Y</td>\n",
127
+ " <td>0.735738</td>\n",
128
+ " <td>9.936788</td>\n",
129
+ " <td>1</td>\n",
130
+ " <td>1</td>\n",
131
+ " <td>1</td>\n",
132
+ " <td>3</td>\n",
133
+ " </tr>\n",
134
+ " <tr>\n",
135
+ " <th>2019-01-01 02:00:00</th>\n",
136
+ " <td>1546308000</td>\n",
137
+ " <td>D</td>\n",
138
+ " <td>Z</td>\n",
139
+ " <td>-2.478326</td>\n",
140
+ " <td>12.657695</td>\n",
141
+ " <td>1</td>\n",
142
+ " <td>1</td>\n",
143
+ " <td>1</td>\n",
144
+ " <td>1</td>\n",
145
+ " </tr>\n",
146
+ " <tr>\n",
147
+ " <th>2019-01-01 03:00:00</th>\n",
148
+ " <td>1546311600</td>\n",
149
+ " <td>B</td>\n",
150
+ " <td>X</td>\n",
151
+ " <td>0.837538</td>\n",
152
+ " <td>10.957170</td>\n",
153
+ " <td>2</td>\n",
154
+ " <td>2</td>\n",
155
+ " <td>2</td>\n",
156
+ " <td>1</td>\n",
157
+ " </tr>\n",
158
+ " <tr>\n",
159
+ " <th>2019-01-01 04:00:00</th>\n",
160
+ " <td>1546315200</td>\n",
161
+ " <td>C</td>\n",
162
+ " <td>Y</td>\n",
163
+ " <td>2.544943</td>\n",
164
+ " <td>11.168900</td>\n",
165
+ " <td>2</td>\n",
166
+ " <td>3</td>\n",
167
+ " <td>2</td>\n",
168
+ " <td>2</td>\n",
169
+ " </tr>\n",
170
+ " <tr>\n",
171
+ " <th>...</th>\n",
172
+ " <td>...</td>\n",
173
+ " <td>...</td>\n",
174
+ " <td>...</td>\n",
175
+ " <td>...</td>\n",
176
+ " <td>...</td>\n",
177
+ " <td>...</td>\n",
178
+ " <td>...</td>\n",
179
+ " <td>...</td>\n",
180
+ " <td>...</td>\n",
181
+ " </tr>\n",
182
+ " <tr>\n",
183
+ " <th>2019-01-11 20:00:00</th>\n",
184
+ " <td>1547236800</td>\n",
185
+ " <td>C</td>\n",
186
+ " <td>Z</td>\n",
187
+ " <td>-3.454350</td>\n",
188
+ " <td>17.809963</td>\n",
189
+ " <td>2</td>\n",
190
+ " <td>3</td>\n",
191
+ " <td>1</td>\n",
192
+ " <td>2</td>\n",
193
+ " </tr>\n",
194
+ " <tr>\n",
195
+ " <th>2019-01-11 21:00:00</th>\n",
196
+ " <td>1547240400</td>\n",
197
+ " <td>C</td>\n",
198
+ " <td>X</td>\n",
199
+ " <td>-3.347347</td>\n",
200
+ " <td>16.097825</td>\n",
201
+ " <td>2</td>\n",
202
+ " <td>1</td>\n",
203
+ " <td>1</td>\n",
204
+ " <td>1</td>\n",
205
+ " </tr>\n",
206
+ " <tr>\n",
207
+ " <th>2019-01-11 22:00:00</th>\n",
208
+ " <td>1547244000</td>\n",
209
+ " <td>C</td>\n",
210
+ " <td>Y</td>\n",
211
+ " <td>-5.504220</td>\n",
212
+ " <td>14.720725</td>\n",
213
+ " <td>2</td>\n",
214
+ " <td>2</td>\n",
215
+ " <td>2</td>\n",
216
+ " <td>2</td>\n",
217
+ " </tr>\n",
218
+ " <tr>\n",
219
+ " <th>2019-01-11 23:00:00</th>\n",
220
+ " <td>1547247600</td>\n",
221
+ " <td>B</td>\n",
222
+ " <td>Z</td>\n",
223
+ " <td>-3.687856</td>\n",
224
+ " <td>17.748797</td>\n",
225
+ " <td>1</td>\n",
226
+ " <td>1</td>\n",
227
+ " <td>2</td>\n",
228
+ " <td>1</td>\n",
229
+ " </tr>\n",
230
+ " <tr>\n",
231
+ " <th>2019-01-12 00:00:00</th>\n",
232
+ " <td>1547251200</td>\n",
233
+ " <td>D</td>\n",
234
+ " <td>X</td>\n",
235
+ " <td>-7.047154</td>\n",
236
+ " <td>21.479825</td>\n",
237
+ " <td>1</td>\n",
238
+ " <td>1</td>\n",
239
+ " <td>2</td>\n",
240
+ " <td>1</td>\n",
241
+ " </tr>\n",
242
+ " </tbody>\n",
243
+ "</table>\n",
244
+ "<p>265 rows × 9 columns</p>\n",
245
+ "</div>"
246
+ ],
247
+ "text/plain": [
248
+ " epoch product interface sinusoidal \\\n",
249
+ "2019-01-01 00:00:00 1546300800 C X -1.558087 \n",
250
+ "2019-01-01 01:00:00 1546304400 B Y 0.735738 \n",
251
+ "2019-01-01 02:00:00 1546308000 D Z -2.478326 \n",
252
+ "2019-01-01 03:00:00 1546311600 B X 0.837538 \n",
253
+ "2019-01-01 04:00:00 1546315200 C Y 2.544943 \n",
254
+ "... ... ... ... ... \n",
255
+ "2019-01-11 20:00:00 1547236800 C Z -3.454350 \n",
256
+ "2019-01-11 21:00:00 1547240400 C X -3.347347 \n",
257
+ "2019-01-11 22:00:00 1547244000 C Y -5.504220 \n",
258
+ "2019-01-11 23:00:00 1547247600 B Z -3.687856 \n",
259
+ "2019-01-12 00:00:00 1547251200 D X -7.047154 \n",
260
+ "\n",
261
+ " sinusoidal_linear val1 val2 val3 val4 \n",
262
+ "2019-01-01 00:00:00 8.859585 2 3 2 3 \n",
263
+ "2019-01-01 01:00:00 9.936788 1 1 1 3 \n",
264
+ "2019-01-01 02:00:00 12.657695 1 1 1 1 \n",
265
+ "2019-01-01 03:00:00 10.957170 2 2 2 1 \n",
266
+ "2019-01-01 04:00:00 11.168900 2 3 2 2 \n",
267
+ "... ... ... ... ... ... \n",
268
+ "2019-01-11 20:00:00 17.809963 2 3 1 2 \n",
269
+ "2019-01-11 21:00:00 16.097825 2 1 1 1 \n",
270
+ "2019-01-11 22:00:00 14.720725 2 2 2 2 \n",
271
+ "2019-01-11 23:00:00 17.748797 1 1 2 1 \n",
272
+ "2019-01-12 00:00:00 21.479825 1 1 2 1 \n",
273
+ "\n",
274
+ "[265 rows x 9 columns]"
275
+ ]
276
+ },
277
+ "execution_count": 3,
278
+ "metadata": {},
279
+ "output_type": "execute_result"
280
+ }
281
+ ],
282
+ "source": [
283
+ "d.data"
284
+ ]
285
+ },
286
+ {
287
+ "cell_type": "code",
288
+ "execution_count": 4,
289
+ "id": "4f9e0e14",
290
+ "metadata": {},
291
+ "outputs": [
292
+ {
293
+ "data": {
294
+ "text/html": [
295
+ "<div>\n",
296
+ "<style scoped>\n",
297
+ " .dataframe tbody tr th:only-of-type {\n",
298
+ " vertical-align: middle;\n",
299
+ " }\n",
300
+ "\n",
301
+ " .dataframe tbody tr th {\n",
302
+ " vertical-align: top;\n",
303
+ " }\n",
304
+ "\n",
305
+ " .dataframe thead th {\n",
306
+ " text-align: right;\n",
307
+ " }\n",
308
+ "</style>\n",
309
+ "<table border=\"1\" class=\"dataframe\">\n",
310
+ " <thead>\n",
311
+ " <tr style=\"text-align: right;\">\n",
312
+ " <th></th>\n",
313
+ " <th>product</th>\n",
314
+ " <th>interface</th>\n",
315
+ " <th>val3</th>\n",
316
+ " <th>val4</th>\n",
317
+ " <th>sinusoidal</th>\n",
318
+ " <th>sinusoidal_linear</th>\n",
319
+ " <th>val1</th>\n",
320
+ " <th>val2</th>\n",
321
+ " <th>epoch</th>\n",
322
+ " </tr>\n",
323
+ " <tr>\n",
324
+ " <th>index</th>\n",
325
+ " <th></th>\n",
326
+ " <th></th>\n",
327
+ " <th></th>\n",
328
+ " <th></th>\n",
329
+ " <th></th>\n",
330
+ " <th></th>\n",
331
+ " <th></th>\n",
332
+ " <th></th>\n",
333
+ " <th></th>\n",
334
+ " </tr>\n",
335
+ " </thead>\n",
336
+ " <tbody>\n",
337
+ " <tr>\n",
338
+ " <th>2019-01-31</th>\n",
339
+ " <td>A</td>\n",
340
+ " <td>X</td>\n",
341
+ " <td>1</td>\n",
342
+ " <td>1</td>\n",
343
+ " <td>2.117110</td>\n",
344
+ " <td>64.544124</td>\n",
345
+ " <td>8</td>\n",
346
+ " <td>1.800000</td>\n",
347
+ " <td>1548892800</td>\n",
348
+ " </tr>\n",
349
+ " <tr>\n",
350
+ " <th>2019-01-31</th>\n",
351
+ " <td>A</td>\n",
352
+ " <td>X</td>\n",
353
+ " <td>1</td>\n",
354
+ " <td>2</td>\n",
355
+ " <td>-9.039642</td>\n",
356
+ " <td>38.813150</td>\n",
357
+ " <td>4</td>\n",
358
+ " <td>2.000000</td>\n",
359
+ " <td>1548892800</td>\n",
360
+ " </tr>\n",
361
+ " <tr>\n",
362
+ " <th>2019-01-31</th>\n",
363
+ " <td>A</td>\n",
364
+ " <td>X</td>\n",
365
+ " <td>1</td>\n",
366
+ " <td>3</td>\n",
367
+ " <td>4.756933</td>\n",
368
+ " <td>49.303405</td>\n",
369
+ " <td>5</td>\n",
370
+ " <td>1.500000</td>\n",
371
+ " <td>1548892800</td>\n",
372
+ " </tr>\n",
373
+ " <tr>\n",
374
+ " <th>2019-01-31</th>\n",
375
+ " <td>A</td>\n",
376
+ " <td>X</td>\n",
377
+ " <td>2</td>\n",
378
+ " <td>1</td>\n",
379
+ " <td>-11.391966</td>\n",
380
+ " <td>27.827564</td>\n",
381
+ " <td>2</td>\n",
382
+ " <td>2.500000</td>\n",
383
+ " <td>1548892800</td>\n",
384
+ " </tr>\n",
385
+ " <tr>\n",
386
+ " <th>2019-01-31</th>\n",
387
+ " <td>A</td>\n",
388
+ " <td>X</td>\n",
389
+ " <td>2</td>\n",
390
+ " <td>2</td>\n",
391
+ " <td>4.111517</td>\n",
392
+ " <td>26.833115</td>\n",
393
+ " <td>5</td>\n",
394
+ " <td>1.333333</td>\n",
395
+ " <td>1548892800</td>\n",
396
+ " </tr>\n",
397
+ " <tr>\n",
398
+ " <th>...</th>\n",
399
+ " <td>...</td>\n",
400
+ " <td>...</td>\n",
401
+ " <td>...</td>\n",
402
+ " <td>...</td>\n",
403
+ " <td>...</td>\n",
404
+ " <td>...</td>\n",
405
+ " <td>...</td>\n",
406
+ " <td>...</td>\n",
407
+ " <td>...</td>\n",
408
+ " </tr>\n",
409
+ " <tr>\n",
410
+ " <th>2019-01-31</th>\n",
411
+ " <td>D</td>\n",
412
+ " <td>Z</td>\n",
413
+ " <td>1</td>\n",
414
+ " <td>2</td>\n",
415
+ " <td>-3.250969</td>\n",
416
+ " <td>62.954263</td>\n",
417
+ " <td>6</td>\n",
418
+ " <td>1.800000</td>\n",
419
+ " <td>1548892800</td>\n",
420
+ " </tr>\n",
421
+ " <tr>\n",
422
+ " <th>2019-01-31</th>\n",
423
+ " <td>D</td>\n",
424
+ " <td>Z</td>\n",
425
+ " <td>1</td>\n",
426
+ " <td>3</td>\n",
427
+ " <td>-3.762780</td>\n",
428
+ " <td>12.742353</td>\n",
429
+ " <td>1</td>\n",
430
+ " <td>2.000000</td>\n",
431
+ " <td>1548892800</td>\n",
432
+ " </tr>\n",
433
+ " <tr>\n",
434
+ " <th>2019-01-31</th>\n",
435
+ " <td>D</td>\n",
436
+ " <td>Z</td>\n",
437
+ " <td>2</td>\n",
438
+ " <td>1</td>\n",
439
+ " <td>-1.637705</td>\n",
440
+ " <td>58.924117</td>\n",
441
+ " <td>8</td>\n",
442
+ " <td>1.600000</td>\n",
443
+ " <td>1548892800</td>\n",
444
+ " </tr>\n",
445
+ " <tr>\n",
446
+ " <th>2019-01-31</th>\n",
447
+ " <td>D</td>\n",
448
+ " <td>Z</td>\n",
449
+ " <td>2</td>\n",
450
+ " <td>2</td>\n",
451
+ " <td>2.872892</td>\n",
452
+ " <td>43.713361</td>\n",
453
+ " <td>4</td>\n",
454
+ " <td>2.333333</td>\n",
455
+ " <td>1548892800</td>\n",
456
+ " </tr>\n",
457
+ " <tr>\n",
458
+ " <th>2019-01-31</th>\n",
459
+ " <td>D</td>\n",
460
+ " <td>Z</td>\n",
461
+ " <td>2</td>\n",
462
+ " <td>3</td>\n",
463
+ " <td>1.806850</td>\n",
464
+ " <td>7.687474</td>\n",
465
+ " <td>1</td>\n",
466
+ " <td>1.000000</td>\n",
467
+ " <td>1548892800</td>\n",
468
+ " </tr>\n",
469
+ " </tbody>\n",
470
+ "</table>\n",
471
+ "<p>71 rows × 9 columns</p>\n",
472
+ "</div>"
473
+ ],
474
+ "text/plain": [
475
+ " product interface val3 val4 sinusoidal sinusoidal_linear val1 \\\n",
476
+ "index \n",
477
+ "2019-01-31 A X 1 1 2.117110 64.544124 8 \n",
478
+ "2019-01-31 A X 1 2 -9.039642 38.813150 4 \n",
479
+ "2019-01-31 A X 1 3 4.756933 49.303405 5 \n",
480
+ "2019-01-31 A X 2 1 -11.391966 27.827564 2 \n",
481
+ "2019-01-31 A X 2 2 4.111517 26.833115 5 \n",
482
+ "... ... ... ... ... ... ... ... \n",
483
+ "2019-01-31 D Z 1 2 -3.250969 62.954263 6 \n",
484
+ "2019-01-31 D Z 1 3 -3.762780 12.742353 1 \n",
485
+ "2019-01-31 D Z 2 1 -1.637705 58.924117 8 \n",
486
+ "2019-01-31 D Z 2 2 2.872892 43.713361 4 \n",
487
+ "2019-01-31 D Z 2 3 1.806850 7.687474 1 \n",
488
+ "\n",
489
+ " val2 epoch \n",
490
+ "index \n",
491
+ "2019-01-31 1.800000 1548892800 \n",
492
+ "2019-01-31 2.000000 1548892800 \n",
493
+ "2019-01-31 1.500000 1548892800 \n",
494
+ "2019-01-31 2.500000 1548892800 \n",
495
+ "2019-01-31 1.333333 1548892800 \n",
496
+ "... ... ... \n",
497
+ "2019-01-31 1.800000 1548892800 \n",
498
+ "2019-01-31 2.000000 1548892800 \n",
499
+ "2019-01-31 1.600000 1548892800 \n",
500
+ "2019-01-31 2.333333 1548892800 \n",
501
+ "2019-01-31 1.000000 1548892800 \n",
502
+ "\n",
503
+ "[71 rows x 9 columns]"
504
+ ]
505
+ },
506
+ "execution_count": 4,
507
+ "metadata": {},
508
+ "output_type": "execute_result"
509
+ }
510
+ ],
511
+ "source": [
512
+ "d.aggregate(granularity=\"ME\")"
513
+ ]
514
+ },
515
+ {
516
+ "cell_type": "code",
517
+ "execution_count": null,
518
+ "id": "4d1ee00d",
519
+ "metadata": {},
520
+ "outputs": [],
521
+ "source": []
522
+ }
523
+ ],
524
+ "metadata": {
525
+ "kernelspec": {
526
+ "display_name": ".venv",
527
+ "language": "python",
528
+ "name": "python3"
529
+ },
530
+ "language_info": {
531
+ "codemirror_mode": {
532
+ "name": "ipython",
533
+ "version": 3
534
+ },
535
+ "file_extension": ".py",
536
+ "mimetype": "text/x-python",
537
+ "name": "python",
538
+ "nbconvert_exporter": "python",
539
+ "pygments_lexer": "ipython3",
540
+ "version": "3.11.9"
541
+ }
542
+ },
543
+ "nbformat": 4,
544
+ "nbformat_minor": 5
545
+ }