red_amber 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@
5
5
  "id": "e355db8b-ebb6-4ea6-97b5-3b9fdadc302c",
6
6
  "metadata": {},
7
7
  "source": [
8
- "# 53 examples of Red Amber"
8
+ "# 61 examples of Red Amber"
9
9
  ]
10
10
  },
11
11
  {
@@ -13,7 +13,7 @@
13
13
  "id": "f20f4970-db38-4d96-9a36-d4cf9d007596",
14
14
  "metadata": {},
15
15
  "source": [
16
- "Last update: August 3, 2022, for RedAmber Version 0.1.8"
16
+ "Last update: August 14, 2022, for RedAmber Version 0.2.0"
17
17
  ]
18
18
  },
19
19
  {
@@ -72,7 +72,7 @@
72
72
  {
73
73
  "data": {
74
74
  "text/plain": [
75
- "\"0.1.8-HEAD\""
75
+ "{:RedAmber=>\"0.2.0\", :Arrow=>\"9.0.0\"}"
76
76
  ]
77
77
  },
78
78
  "execution_count": 1,
@@ -83,7 +83,7 @@
83
83
  "source": [
84
84
  "require 'red_amber' # require 'red-amber' is also OK\n",
85
85
  "include RedAmber\n",
86
- "VERSION"
86
+ "{RedAmber: VERSION, Arrow: Arrow::VERSION}"
87
87
  ]
88
88
  },
89
89
  {
@@ -108,7 +108,7 @@
108
108
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>A</td></tr><tr><td>2</td><td>B</td></tr><tr><td>3</td><td>C</td></tr></table>"
109
109
  ],
110
110
  "text/plain": [
111
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f1cc>\n",
111
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f154>\n",
112
112
  " x y\n",
113
113
  " <uint8> <string>\n",
114
114
  "1 1 A\n",
@@ -138,7 +138,7 @@
138
138
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>A</td></tr><tr><td>2</td><td>B</td></tr><tr><td>3</td><td>C</td></tr></table>"
139
139
  ],
140
140
  "text/plain": [
141
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f1e0>\n",
141
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f168>\n",
142
142
  " x y\n",
143
143
  " <uint8> <string>\n",
144
144
  "1 1 A\n",
@@ -152,7 +152,7 @@
152
152
  }
153
153
  ],
154
154
  "source": [
155
- "# From a schema and a column array\n",
155
+ "# From a schema and a row-oriented array\n",
156
156
  "DataFrame.new({ x: :uint8, y: :string }, [[1, 'A'], [2, 'B'], [3, 'C']])"
157
157
  ]
158
158
  },
@@ -168,7 +168,7 @@
168
168
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>A</td></tr><tr><td>2</td><td>B</td></tr><tr><td>3</td><td>C</td></tr></table>"
169
169
  ],
170
170
  "text/plain": [
171
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f1f4>\n",
171
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f17c>\n",
172
172
  " x y\n",
173
173
  " <uint8> <string>\n",
174
174
  "1 1 A\n",
@@ -182,7 +182,7 @@
182
182
  }
183
183
  ],
184
184
  "source": [
185
- "# From a Arrow::Table\n",
185
+ "# From an Arrow::Table\n",
186
186
  "table = Arrow::Table.new(x: [1, 2, 3], y: %w[A B C])\n",
187
187
  "DataFrame.new(table)"
188
188
  ]
@@ -199,7 +199,7 @@
199
199
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>A</td></tr><tr><td>2</td><td>B</td></tr><tr><td>3</td><td>C</td></tr></table>"
200
200
  ],
201
201
  "text/plain": [
202
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f208>\n",
202
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f2a8>\n",
203
203
  " x y\n",
204
204
  " <uint8> <string>\n",
205
205
  "1 1 A\n",
@@ -231,7 +231,7 @@
231
231
  "RedAmber::DataFrame <344 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
232
232
  ],
233
233
  "text/plain": [
234
- "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f21c>\n",
234
+ "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f2bc>\n",
235
235
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
236
236
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
237
237
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -262,7 +262,7 @@
262
262
  "id": "3a2d12b4-7623-42c7-9e32-76cf303c7cea",
263
263
  "metadata": {},
264
264
  "source": [
265
- "It should be in future version;\n",
265
+ "It should be in the future version;\n",
266
266
  "```ruby\n",
267
267
  "require 'datasets-red-amber'\n",
268
268
  "penguins = Datasets::Penguins.new.to_red_amber\n",
@@ -281,18 +281,18 @@
281
281
  "RedAmber::DataFrame <32 x 11 vectors> <table><tr><th>mpg</th><th>cyl</th><th>disp</th><th>hp</th><th>drat</th><th>wt</th><th>qsec</th><th>vs</th><th>am</th><th>gear</th><th>carb</th></tr><tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.9</td><td>2.62</td><td>16.46</td><td>0</td><td>1</td><td>4</td><td>4</td></tr><tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.9</td><td>2.875</td><td>17.02</td><td>0</td><td>1</td><td>4</td><td>4</td></tr><tr><td>22.8</td><td>4</td><td>108.0</td><td>93</td><td>3.85</td><td>2.32</td><td>18.61</td><td>1</td><td>1</td><td>4</td><td>1</td></tr><tr><td>21.4</td><td>6</td><td>258.0</td><td>110</td><td>3.08</td><td>3.215</td><td>19.44</td><td>1</td><td>0</td><td>3</td><td>1</td></tr><tr><td colspan='11'>&#8942;</td></tr><tr><td>19.7</td><td>6</td><td>145.0</td><td>175</td><td>3.62</td><td>2.77</td><td>15.5</td><td>0</td><td>1</td><td>5</td><td>6</td></tr><tr><td>15.0</td><td>8</td><td>301.0</td><td>335</td><td>3.54</td><td>3.57</td><td>14.6</td><td>0</td><td>1</td><td>5</td><td>8</td></tr><tr><td>21.4</td><td>4</td><td>121.0</td><td>109</td><td>4.11</td><td>2.78</td><td>18.6</td><td>1</td><td>1</td><td>4</td><td>2</td></tr></table>"
282
282
  ],
283
283
  "text/plain": [
284
- "#<RedAmber::DataFrame : 32 x 11 Vectors, 0x000000000000f230>\n",
284
+ "#<RedAmber::DataFrame : 32 x 11 Vectors, 0x000000000000f2d0>\n",
285
285
  " mpg cyl disp hp drat wt qsec vs am ... carb\n",
286
286
  " <double> <uint8> <double> <uint16> <double> <double> <double> <uint8> <uint8> ... <uint8>\n",
287
- " 1 21.0 6 160.0 110 3.9 2.6 16.5 0 1 ... 4\n",
288
- " 2 21.0 6 160.0 110 3.9 2.9 17.0 0 1 ... 4\n",
289
- " 3 22.8 4 108.0 93 3.9 2.3 18.6 1 1 ... 1\n",
290
- " 4 21.4 6 258.0 110 3.1 3.2 19.4 1 0 ... 1\n",
291
- " 5 18.7 8 360.0 175 3.2 3.4 17.0 0 0 ... 2\n",
287
+ " 1 21.0 6 160.0 110 3.9 2.62 16.46 0 1 ... 4\n",
288
+ " 2 21.0 6 160.0 110 3.9 2.88 17.02 0 1 ... 4\n",
289
+ " 3 22.8 4 108.0 93 3.85 2.32 18.61 1 1 ... 1\n",
290
+ " 4 21.4 6 258.0 110 3.08 3.22 19.44 1 0 ... 1\n",
291
+ " 5 18.7 8 360.0 175 3.15 3.44 17.02 0 0 ... 2\n",
292
292
  " : : : : : : : : : : ... :\n",
293
- "30 19.7 6 145.0 175 3.6 2.8 15.5 0 1 ... 6\n",
294
- "31 15.0 8 301.0 335 3.5 3.6 14.6 0 1 ... 8\n",
295
- "32 21.4 4 121.0 109 4.1 2.8 18.6 1 1 ... 2\n"
293
+ "30 19.7 6 145.0 175 3.62 2.77 15.5 0 1 ... 6\n",
294
+ "31 15.0 8 301.0 335 3.54 3.57 14.6 0 1 ... 8\n",
295
+ "32 21.4 4 121.0 109 4.11 2.78 18.6 1 1 ... 2\n"
296
296
  ]
297
297
  },
298
298
  "execution_count": 7,
@@ -333,7 +333,7 @@
333
333
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>name</th><th>age</th></tr><tr><td>Yasuko</td><td>68</td></tr><tr><td>Rui</td><td>49</td></tr><tr><td>Hinata</td><td>28</td></tr></table>"
334
334
  ],
335
335
  "text/plain": [
336
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f244>\n",
336
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f2e4>\n",
337
337
  " name age\n",
338
338
  " <string> <int64>\n",
339
339
  "1 Yasuko 68\n",
@@ -347,7 +347,7 @@
347
347
  }
348
348
  ],
349
349
  "source": [
350
- "DataFrame.load(\"test/entity/with_header.csv\")"
350
+ "DataFrame.load(\"../test/entity/with_header.csv\")"
351
351
  ]
352
352
  },
353
353
  {
@@ -370,7 +370,7 @@
370
370
  "RedAmber::DataFrame <344 x 7 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>MALE</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>FEMALE</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>FEMALE</td></tr><tr><td>Adelie</td><td>Torgersen</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td></td></tr><tr><td colspan='7'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>MALE</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>FEMALE</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>MALE</td></tr></table>"
371
371
  ],
372
372
  "text/plain": [
373
- "#<RedAmber::DataFrame : 344 x 7 Vectors, 0x000000000000f258>\n",
373
+ "#<RedAmber::DataFrame : 344 x 7 Vectors, 0x000000000000f2f8>\n",
374
374
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... sex\n",
375
375
  " <string> <string> <double> <double> <int64> ... <string>\n",
376
376
  " 1 Adelie Torgersen 39.1 18.7 181 ... MALE\n",
@@ -456,7 +456,7 @@
456
456
  "name": "stdout",
457
457
  "output_type": "stream",
458
458
  "text": [
459
- "#<RedAmber::DataFrame : 5 x 4 Vectors, 0x000000000000f26c>\n",
459
+ "#<RedAmber::DataFrame : 5 x 4 Vectors, 0x000000000000f30c>\n",
460
460
  " x y s b\n",
461
461
  " <uint8> <double> <string> <boolean>\n",
462
462
  "1 1 1.0 A true\n",
@@ -487,7 +487,7 @@
487
487
  "name": "stdout",
488
488
  "output_type": "stream",
489
489
  "text": [
490
- "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f21c>\n",
490
+ "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f2bc>\n",
491
491
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
492
492
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
493
493
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -524,7 +524,7 @@
524
524
  {
525
525
  "data": {
526
526
  "text/plain": [
527
- "#<Arrow::Table:0x7f8894884748 ptr=0x558436460680>\n",
527
+ "#<Arrow::Table:0x7f54b8433320 ptr=0x55d81a4486e0>\n",
528
528
  "\tx\t y\ts\tb\n",
529
529
  "0\t1\t 1.000000\tA\ttrue\n",
530
530
  "1\t2\t 2.000000\tB\tfalse\n",
@@ -551,7 +551,7 @@
551
551
  {
552
552
  "data": {
553
553
  "text/plain": [
554
- "#<Arrow::Table:0x7f88948ea688 ptr=0x55843586f1a0>\n",
554
+ "#<Arrow::Table:0x7f54b849dec8 ptr=0x55d81ac6f650>\n",
555
555
  "\tspecies\tisland\tbill_length_mm\tbill_depth_mm\tflipper_length_mm\tbody_mass_g\tsex\tyear\n",
556
556
  " 0\tAdelie \tTorgersen\t 39.100000\t 18.700000\t 181\t 3750\tmale\t2007\n",
557
557
  " 1\tAdelie \tTorgersen\t 39.500000\t 17.400000\t 186\t 3800\tfemale\t2007\n",
@@ -1276,7 +1276,7 @@
1276
1276
  {
1277
1277
  "data": {
1278
1278
  "text/plain": [
1279
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f280>\n",
1279
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f320>\n",
1280
1280
  "[1, 2, 3, 4, 5]\n"
1281
1281
  ]
1282
1282
  },
@@ -1306,7 +1306,7 @@
1306
1306
  {
1307
1307
  "data": {
1308
1308
  "text/plain": [
1309
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f294>\n",
1309
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f334>\n",
1310
1310
  "[1, 2, 3, 4, 5]\n"
1311
1311
  ]
1312
1312
  },
@@ -1328,7 +1328,7 @@
1328
1328
  {
1329
1329
  "data": {
1330
1330
  "text/plain": [
1331
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f2a8>\n",
1331
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f348>\n",
1332
1332
  "[1, 2, 3, 4, 5]\n"
1333
1333
  ]
1334
1334
  },
@@ -1350,7 +1350,7 @@
1350
1350
  {
1351
1351
  "data": {
1352
1352
  "text/plain": [
1353
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f2bc>\n",
1353
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f35c>\n",
1354
1354
  "[1, 2, 3, 4, 5]\n"
1355
1355
  ]
1356
1356
  },
@@ -1372,7 +1372,7 @@
1372
1372
  {
1373
1373
  "data": {
1374
1374
  "text/plain": [
1375
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f2d0>\n",
1375
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f370>\n",
1376
1376
  "[1, 2, 3, 4, 5]\n"
1377
1377
  ]
1378
1378
  },
@@ -1419,13 +1419,13 @@
1419
1419
  {
1420
1420
  "data": {
1421
1421
  "text/plain": [
1422
- "[#<RedAmber::Vector(:uint8, size=5):0x000000000000f280>\n",
1422
+ "[#<RedAmber::Vector(:uint8, size=5):0x000000000000f320>\n",
1423
1423
  "[1, 2, 3, 4, 5]\n",
1424
- ", #<RedAmber::Vector(:double, size=5):0x000000000000f2e4>\n",
1424
+ ", #<RedAmber::Vector(:double, size=5):0x000000000000f384>\n",
1425
1425
  "[1.0, 2.0, 3.0, NaN, nil]\n",
1426
- ", #<RedAmber::Vector(:string, size=5):0x000000000000f2f8>\n",
1426
+ ", #<RedAmber::Vector(:string, size=5):0x000000000000f398>\n",
1427
1427
  "[\"A\", \"B\", \"C\", \"D\", nil]\n",
1428
- ", #<RedAmber::Vector(:boolean, size=5):0x000000000000f30c>\n",
1428
+ ", #<RedAmber::Vector(:boolean, size=5):0x000000000000f3ac>\n",
1429
1429
  "[true, false, true, false, nil]\n",
1430
1430
  "]"
1431
1431
  ]
@@ -1460,13 +1460,13 @@
1460
1460
  {
1461
1461
  "data": {
1462
1462
  "text/plain": [
1463
- "{:x=>#<RedAmber::Vector(:uint8, size=5):0x000000000000f280>\n",
1463
+ "{:x=>#<RedAmber::Vector(:uint8, size=5):0x000000000000f320>\n",
1464
1464
  "[1, 2, 3, 4, 5]\n",
1465
- ", :y=>#<RedAmber::Vector(:double, size=5):0x000000000000f2e4>\n",
1465
+ ", :y=>#<RedAmber::Vector(:double, size=5):0x000000000000f384>\n",
1466
1466
  "[1.0, 2.0, 3.0, NaN, nil]\n",
1467
- ", :s=>#<RedAmber::Vector(:string, size=5):0x000000000000f2f8>\n",
1467
+ ", :s=>#<RedAmber::Vector(:string, size=5):0x000000000000f398>\n",
1468
1468
  "[\"A\", \"B\", \"C\", \"D\", nil]\n",
1469
- ", :b=>#<RedAmber::Vector(:boolean, size=5):0x000000000000f30c>\n",
1469
+ ", :b=>#<RedAmber::Vector(:boolean, size=5):0x000000000000f3ac>\n",
1470
1470
  "[true, false, true, false, nil]\n",
1471
1471
  "}"
1472
1472
  ]
@@ -1514,7 +1514,7 @@
1514
1514
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>1.0</td></tr><tr><td>2</td><td>2.0</td></tr><tr><td>3</td><td>3.0</td></tr><tr><td>4</td><td>NaN</td></tr><tr><td>5</td><td><i>(nil)</i></td></tr></table>"
1515
1515
  ],
1516
1516
  "text/plain": [
1517
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f320>\n",
1517
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f3c0>\n",
1518
1518
  " x y\n",
1519
1519
  " <uint8> <double>\n",
1520
1520
  "1 1 1.0\n",
@@ -1546,7 +1546,7 @@
1546
1546
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>1.0</td></tr><tr><td>2</td><td>2.0</td></tr><tr><td>3</td><td>3.0</td></tr><tr><td>4</td><td>NaN</td></tr><tr><td>5</td><td><i>(nil)</i></td></tr></table>"
1547
1547
  ],
1548
1548
  "text/plain": [
1549
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f334>\n",
1549
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f3d4>\n",
1550
1550
  " x y\n",
1551
1551
  " <uint8> <double>\n",
1552
1552
  "1 1 1.0\n",
@@ -1578,7 +1578,7 @@
1578
1578
  "RedAmber::DataFrame <5 x 3 vectors> <table><tr><th>s</th><th>b</th><th>x</th></tr><tr><td>A</td><td>true</td><td>1</td></tr><tr><td>B</td><td>false</td><td>2</td></tr><tr><td>C</td><td>true</td><td>3</td></tr><tr><td>D</td><td>false</td><td>4</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td><td>5</td></tr></table>"
1579
1579
  ],
1580
1580
  "text/plain": [
1581
- "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f348>\n",
1581
+ "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f3e8>\n",
1582
1582
  " s b x\n",
1583
1583
  " <string> <boolean> <uint8>\n",
1584
1584
  "1 A true 1\n",
@@ -1625,7 +1625,7 @@
1625
1625
  "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>1</td><td>1.0</td><td>A</td><td>true</td></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr><tr><td>2</td><td>2.0</td><td>B</td><td>false</td></tr></table>"
1626
1626
  ],
1627
1627
  "text/plain": [
1628
- "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f35c>\n",
1628
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f3fc>\n",
1629
1629
  " x y s b\n",
1630
1630
  " <uint8> <double> <string> <boolean>\n",
1631
1631
  "1 1 1.0 A true\n",
@@ -1655,7 +1655,7 @@
1655
1655
  "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>2</td><td>2.0</td><td>B</td><td>false</td></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr><tr><td>5</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1656
1656
  ],
1657
1657
  "text/plain": [
1658
- "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f370>\n",
1658
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f410>\n",
1659
1659
  " x y s b\n",
1660
1660
  " <uint8> <double> <string> <boolean>\n",
1661
1661
  "1 2 2.0 B false\n",
@@ -1686,7 +1686,7 @@
1686
1686
  "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>2</td><td>2.0</td><td>B</td><td>false</td></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr><tr><td>5</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1687
1687
  ],
1688
1688
  "text/plain": [
1689
- "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f384>\n",
1689
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f424>\n",
1690
1690
  " x y s b\n",
1691
1691
  " <uint8> <double> <string> <boolean>\n",
1692
1692
  "1 2 2.0 B false\n",
@@ -1717,7 +1717,7 @@
1717
1717
  "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>1</td><td>1.0</td><td>A</td><td>true</td></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr><tr><td>5</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1718
1718
  ],
1719
1719
  "text/plain": [
1720
- "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f398>\n",
1720
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f438>\n",
1721
1721
  " x y s b\n",
1722
1722
  " <uint8> <double> <string> <boolean>\n",
1723
1723
  "1 1 1.0 A true\n",
@@ -1748,7 +1748,7 @@
1748
1748
  "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr><tr><td>4</td><td>NaN</td><td>D</td><td>false</td></tr><tr><td>5</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1749
1749
  ],
1750
1750
  "text/plain": [
1751
- "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f3ac>\n",
1751
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000f44c>\n",
1752
1752
  " x y s b\n",
1753
1753
  " <uint8> <double> <string> <boolean>\n",
1754
1754
  "1 3 3.0 C true\n",
@@ -1777,7 +1777,7 @@
1777
1777
  {
1778
1778
  "data": {
1779
1779
  "text/plain": [
1780
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f30c>\n",
1780
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f3ac>\n",
1781
1781
  "[true, false, true, false, nil]\n"
1782
1782
  ]
1783
1783
  },
@@ -1803,7 +1803,7 @@
1803
1803
  "RedAmber::DataFrame <2 x 4 vectors> <table><tr><th>x</th><th>y</th><th>s</th><th>b</th></tr><tr><td>1</td><td>1.0</td><td>A</td><td>true</td></tr><tr><td>3</td><td>3.0</td><td>C</td><td>true</td></tr></table>"
1804
1804
  ],
1805
1805
  "text/plain": [
1806
- "#<RedAmber::DataFrame : 2 x 4 Vectors, 0x000000000000f3c0>\n",
1806
+ "#<RedAmber::DataFrame : 2 x 4 Vectors, 0x000000000000f460>\n",
1807
1807
  " x y s b\n",
1808
1808
  " <uint8> <double> <string> <boolean>\n",
1809
1809
  "1 1 1.0 A true\n",
@@ -1905,7 +1905,7 @@
1905
1905
  "tags": []
1906
1906
  },
1907
1907
  "source": [
1908
- "`DataFrame#pick` accepts an Array of keys to pick up columns (variables). You can change the order of columns at a same time."
1908
+ "`DataFrame#pick` accepts an Array of keys to pick up columns (variables) and creates a new DataFrame. You can change the order of columns at a same time."
1909
1909
  ]
1910
1910
  },
1911
1911
  {
@@ -1922,7 +1922,7 @@
1922
1922
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>s</th><th>y</th></tr><tr><td>A</td><td>1.0</td></tr><tr><td>B</td><td>2.0</td></tr><tr><td>C</td><td>3.0</td></tr><tr><td>D</td><td>NaN</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1923
1923
  ],
1924
1924
  "text/plain": [
1925
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f3d4>\n",
1925
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f474>\n",
1926
1926
  " s y\n",
1927
1927
  " <string> <double>\n",
1928
1928
  "1 A 1.0\n",
@@ -1963,7 +1963,7 @@
1963
1963
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>y</th><th>s</th></tr><tr><td>1.0</td><td>A</td></tr><tr><td>2.0</td><td>B</td></tr><tr><td>3.0</td><td>C</td></tr><tr><td>NaN</td><td>D</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
1964
1964
  ],
1965
1965
  "text/plain": [
1966
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f3e8>\n",
1966
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f488>\n",
1967
1967
  " y s\n",
1968
1968
  " <double> <string>\n",
1969
1969
  "1 1.0 A\n",
@@ -2006,7 +2006,7 @@
2006
2006
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>1.0</td></tr><tr><td>2</td><td>2.0</td></tr><tr><td>3</td><td>3.0</td></tr><tr><td>4</td><td>NaN</td></tr><tr><td>5</td><td><i>(nil)</i></td></tr></table>"
2007
2007
  ],
2008
2008
  "text/plain": [
2009
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f3fc>\n",
2009
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f49c>\n",
2010
2010
  " x y\n",
2011
2011
  " <uint8> <double>\n",
2012
2012
  "1 1 1.0\n",
@@ -2052,7 +2052,7 @@
2052
2052
  "tags": []
2053
2053
  },
2054
2054
  "source": [
2055
- "`DataFrame#drop` accepts an Array keys to drop columns (variables) to create remainer DataFrame."
2055
+ "`DataFrame#drop` accepts an Array keys to drop columns (variables) to create a remainer DataFrame."
2056
2056
  ]
2057
2057
  },
2058
2058
  {
@@ -2067,7 +2067,7 @@
2067
2067
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>y</th><th>s</th></tr><tr><td>1.0</td><td>A</td></tr><tr><td>2.0</td><td>B</td></tr><tr><td>3.0</td><td>C</td></tr><tr><td>NaN</td><td>D</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
2068
2068
  ],
2069
2069
  "text/plain": [
2070
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f410>\n",
2070
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f4b0>\n",
2071
2071
  " y s\n",
2072
2072
  " <double> <string>\n",
2073
2073
  "1 1.0 A\n",
@@ -2107,7 +2107,7 @@
2107
2107
  "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>y</th><th>s</th></tr><tr><td>1.0</td><td>A</td></tr><tr><td>2.0</td><td>B</td></tr><tr><td>3.0</td><td>C</td></tr><tr><td>NaN</td><td>D</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
2108
2108
  ],
2109
2109
  "text/plain": [
2110
- "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f424>\n",
2110
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f4c4>\n",
2111
2111
  " y s\n",
2112
2112
  " <double> <string>\n",
2113
2113
  "1 1.0 A\n",
@@ -2149,7 +2149,7 @@
2149
2149
  "RedAmber::DataFrame <5 x 1 vector> <table><tr><th>x</th></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr></table>"
2150
2150
  ],
2151
2151
  "text/plain": [
2152
- "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f438>\n",
2152
+ "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f4d8>\n",
2153
2153
  " x\n",
2154
2154
  " <uint8>\n",
2155
2155
  "1 1\n",
@@ -2188,7 +2188,7 @@
2188
2188
  "RedAmber::DataFrame <5 x 1 vector> <table><tr><th>x</th></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr></table>"
2189
2189
  ],
2190
2190
  "text/plain": [
2191
- "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f44c>\n",
2191
+ "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f4ec>\n",
2192
2192
  " x\n",
2193
2193
  " <uint8>\n",
2194
2194
  "1 1\n",
@@ -2259,7 +2259,9 @@
2259
2259
  "id": "12a24264-9b7a-42a1-a541-e292e3876e35",
2260
2260
  "metadata": {},
2261
2261
  "source": [
2262
- "## 26. Vector#invert, #primitive_invert"
2262
+ "## 26. Vector#invert, #primitive_invert\n",
2263
+ "\n",
2264
+ "For the boolean Vector;"
2263
2265
  ]
2264
2266
  },
2265
2267
  {
@@ -2271,7 +2273,7 @@
2271
2273
  {
2272
2274
  "data": {
2273
2275
  "text/plain": [
2274
- "#<RedAmber::Vector(:boolean, size=4):0x000000000000f460>\n",
2276
+ "#<RedAmber::Vector(:boolean, size=4):0x000000000000f500>\n",
2275
2277
  "[true, true, false, nil]\n"
2276
2278
  ]
2277
2279
  },
@@ -2301,7 +2303,7 @@
2301
2303
  {
2302
2304
  "data": {
2303
2305
  "text/plain": [
2304
- "#<RedAmber::Vector(:boolean, size=4):0x000000000000f474>\n",
2306
+ "#<RedAmber::Vector(:boolean, size=4):0x000000000000f514>\n",
2305
2307
  "[false, false, true, nil]\n"
2306
2308
  ]
2307
2309
  },
@@ -2335,7 +2337,7 @@
2335
2337
  {
2336
2338
  "data": {
2337
2339
  "text/plain": [
2338
- "#<RedAmber::Vector(:boolean, size=4):0x000000000000f488>\n",
2340
+ "#<RedAmber::Vector(:boolean, size=4):0x000000000000f528>\n",
2339
2341
  "[false, false, true, true]\n"
2340
2342
  ]
2341
2343
  },
@@ -2397,7 +2399,7 @@
2397
2399
  "RedAmber::DataFrame <5 x 1 vector> <table><tr><th>x</th></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr></table>"
2398
2400
  ],
2399
2401
  "text/plain": [
2400
- "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f49c>\n",
2402
+ "#<RedAmber::DataFrame : 5 x 1 Vector, 0x000000000000f53c>\n",
2401
2403
  " x\n",
2402
2404
  " <uint8>\n",
2403
2405
  "1 1\n",
@@ -2434,7 +2436,7 @@
2434
2436
  {
2435
2437
  "data": {
2436
2438
  "text/plain": [
2437
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f280>\n",
2439
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f320>\n",
2438
2440
  "[1, 2, 3, 4, 5]\n"
2439
2441
  ]
2440
2442
  },
@@ -2452,7 +2454,38 @@
2452
2454
  "id": "6d973934-e08b-4b45-8efb-52f9167e7238",
2453
2455
  "metadata": {},
2454
2456
  "source": [
2455
- "This behavior may be useful to use in a block of DataFrame manipulation verbs (like pick, drop, slice, remove, assign, rename)."
2457
+ "This behavior may be useful to use with DataFrame manipulation verbs (like pick, drop, slice, remove, assign, rename)."
2458
+ ]
2459
+ },
2460
+ {
2461
+ "cell_type": "code",
2462
+ "execution_count": 70,
2463
+ "id": "6beefc5a-dc47-42cc-a283-456073c4251e",
2464
+ "metadata": {},
2465
+ "outputs": [
2466
+ {
2467
+ "data": {
2468
+ "text/html": [
2469
+ "RedAmber::DataFrame <5 x 2 vectors> <table><tr><th>x</th><th>y</th></tr><tr><td>1</td><td>1.0</td></tr><tr><td>2</td><td>2.0</td></tr><tr><td>3</td><td>3.0</td></tr><tr><td>4</td><td>NaN</td></tr><tr><td>5</td><td><i>(nil)</i></td></tr></table>"
2470
+ ],
2471
+ "text/plain": [
2472
+ "#<RedAmber::DataFrame : 5 x 2 Vectors, 0x000000000000f550>\n",
2473
+ " x y\n",
2474
+ " <uint8> <double>\n",
2475
+ "1 1 1.0\n",
2476
+ "2 2 2.0\n",
2477
+ "3 3 3.0\n",
2478
+ "4 4 NaN\n",
2479
+ "5 5 (nil)\n"
2480
+ ]
2481
+ },
2482
+ "execution_count": 70,
2483
+ "metadata": {},
2484
+ "output_type": "execute_result"
2485
+ }
2486
+ ],
2487
+ "source": [
2488
+ "df.pick { keys.select { |key| df[key].numeric? } }"
2456
2489
  ]
2457
2490
  },
2458
2491
  {
@@ -2481,7 +2514,7 @@
2481
2514
  },
2482
2515
  {
2483
2516
  "cell_type": "code",
2484
- "execution_count": 70,
2517
+ "execution_count": 71,
2485
2518
  "id": "9cdce2e4-7876-4be6-bd1f-bc8ab6e6c871",
2486
2519
  "metadata": {},
2487
2520
  "outputs": [
@@ -2491,7 +2524,7 @@
2491
2524
  "RedAmber::DataFrame <10 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
2492
2525
  ],
2493
2526
  "text/plain": [
2494
- "#<RedAmber::DataFrame : 10 x 8 Vectors, 0x000000000000f4b0>\n",
2527
+ "#<RedAmber::DataFrame : 10 x 8 Vectors, 0x000000000000f564>\n",
2495
2528
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2496
2529
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2497
2530
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -2505,35 +2538,35 @@
2505
2538
  "10 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
2506
2539
  ]
2507
2540
  },
2508
- "execution_count": 70,
2541
+ "execution_count": 71,
2509
2542
  "metadata": {},
2510
2543
  "output_type": "execute_result"
2511
2544
  }
2512
2545
  ],
2513
2546
  "source": [
2514
- "# returns 5 rows at the start and 5 rows from the end\n",
2547
+ "# returns 5 rows from the start and 5 rows from the end\n",
2515
2548
  "penguins.slice(0...5, -5..-1)"
2516
2549
  ]
2517
2550
  },
2518
2551
  {
2519
2552
  "cell_type": "code",
2520
- "execution_count": 71,
2521
- "id": "380ab809-09ae-4e69-a8e6-8d53d1e7822d",
2553
+ "execution_count": 72,
2554
+ "id": "93c3f6f0-7bc9-4909-8f32-20e8c1ddfd3a",
2522
2555
  "metadata": {},
2523
2556
  "outputs": [
2524
2557
  {
2525
2558
  "data": {
2526
2559
  "text/html": [
2527
- "RedAmber::DataFrame <1 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Biscoe</td><td>42.2</td><td>19.5</td><td>197</td><td>4275</td><td>male</td><td>2009</td></tr></table>"
2560
+ "RedAmber::DataFrame <1 x 9 vectors> <table><tr><th>index</th><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>113</td><td>Adelie</td><td>Biscoe</td><td>42.2</td><td>19.5</td><td>197</td><td>4275</td><td>male</td><td>2009</td></tr></table>"
2528
2561
  ],
2529
2562
  "text/plain": [
2530
- "#<RedAmber::DataFrame : 1 x 8 Vectors, 0x000000000000f4c4>\n",
2531
- " species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g ... year\n",
2532
- " <string> <string> <double> <double> <uint8> <uint16> ... <uint16>\n",
2533
- "1 Adelie Biscoe 42.2 19.5 197 4275 ... 2009\n"
2563
+ "#<RedAmber::DataFrame : 1 x 9 Vectors, 0x000000000000f578>\n",
2564
+ " index species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2565
+ " <uint16> <string> <string> <double> <double> <uint8> ... <uint16>\n",
2566
+ "1 113 Adelie Biscoe 42.2 19.5 197 ... 2009\n"
2534
2567
  ]
2535
2568
  },
2536
- "execution_count": 71,
2569
+ "execution_count": 72,
2537
2570
  "metadata": {},
2538
2571
  "output_type": "execute_result"
2539
2572
  }
@@ -2541,7 +2574,8 @@
2541
2574
  "source": [
2542
2575
  "# slice accepts Float index\n",
2543
2576
  "# 33% of 344 observations in index => 113.52 th data ??\n",
2544
- "penguins.slice(penguins.size * 0.33)"
2577
+ "indexed_penguins = penguins.assign_left { [:index, indexes] } # #assign_left and assigner by Array is 0.2.0 feature\n",
2578
+ "indexed_penguins.slice(penguins.size * 0.33)"
2545
2579
  ]
2546
2580
  },
2547
2581
  {
@@ -2565,18 +2599,18 @@
2565
2599
  },
2566
2600
  {
2567
2601
  "cell_type": "code",
2568
- "execution_count": 72,
2602
+ "execution_count": 73,
2569
2603
  "id": "f58ca131-7375-4489-90ce-6ba54b898eb5",
2570
2604
  "metadata": {},
2571
2605
  "outputs": [
2572
2606
  {
2573
2607
  "data": {
2574
2608
  "text/plain": [
2575
- "#<RedAmber::Vector(:boolean, size=344):0x000000000000f4d8>\n",
2609
+ "#<RedAmber::Vector(:boolean, size=344):0x000000000000f58c>\n",
2576
2610
  "[false, false, true, nil, false, false, false, false, false, true, false, false, ... ]\n"
2577
2611
  ]
2578
2612
  },
2579
- "execution_count": 72,
2613
+ "execution_count": 73,
2580
2614
  "metadata": {},
2581
2615
  "output_type": "execute_result"
2582
2616
  }
@@ -2588,7 +2622,7 @@
2588
2622
  },
2589
2623
  {
2590
2624
  "cell_type": "code",
2591
- "execution_count": 73,
2625
+ "execution_count": 74,
2592
2626
  "id": "176ab365-c66a-4712-97b9-4381a536321b",
2593
2627
  "metadata": {},
2594
2628
  "outputs": [
@@ -2598,7 +2632,7 @@
2598
2632
  "RedAmber::DataFrame <242 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>42.0</td><td>20.2</td><td>190</td><td>4250</td><td><i>(nil)</i></td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>41.1</td><td>17.6</td><td>182</td><td>3200</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>42.5</td><td>20.7</td><td>197</td><td>4500</td><td>male</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
2599
2633
  ],
2600
2634
  "text/plain": [
2601
- "#<RedAmber::DataFrame : 242 x 8 Vectors, 0x000000000000f4ec>\n",
2635
+ "#<RedAmber::DataFrame : 242 x 8 Vectors, 0x000000000000f5a0>\n",
2602
2636
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2603
2637
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2604
2638
  " 1 Adelie Torgersen 40.3 18.0 195 ... 2007\n",
@@ -2612,7 +2646,7 @@
2612
2646
  "242 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
2613
2647
  ]
2614
2648
  },
2615
- "execution_count": 73,
2649
+ "execution_count": 74,
2616
2650
  "metadata": {},
2617
2651
  "output_type": "execute_result"
2618
2652
  }
@@ -2634,7 +2668,7 @@
2634
2668
  },
2635
2669
  {
2636
2670
  "cell_type": "code",
2637
- "execution_count": 74,
2671
+ "execution_count": 75,
2638
2672
  "id": "c95d3426-0bbb-430e-8d83-6e22434d99ed",
2639
2673
  "metadata": {},
2640
2674
  "outputs": [
@@ -2644,7 +2678,7 @@
2644
2678
  "RedAmber::DataFrame <204 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.3</td><td>20.6</td><td>190</td><td>3650</td><td>male</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>47.2</td><td>13.7</td><td>214</td><td>4925</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>46.8</td><td>14.3</td><td>215</td><td>4850</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr></table>"
2645
2679
  ],
2646
2680
  "text/plain": [
2647
- "#<RedAmber::DataFrame : 204 x 8 Vectors, 0x000000000000f500>\n",
2681
+ "#<RedAmber::DataFrame : 204 x 8 Vectors, 0x000000000000f5b4>\n",
2648
2682
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2649
2683
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2650
2684
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -2658,7 +2692,7 @@
2658
2692
  "204 Gentoo Biscoe 45.2 14.8 212 ... 2009\n"
2659
2693
  ]
2660
2694
  },
2661
- "execution_count": 74,
2695
+ "execution_count": 75,
2662
2696
  "metadata": {},
2663
2697
  "output_type": "execute_result"
2664
2698
  }
@@ -2691,20 +2725,20 @@
2691
2725
  },
2692
2726
  {
2693
2727
  "cell_type": "code",
2694
- "execution_count": 75,
2728
+ "execution_count": 76,
2695
2729
  "id": "8e4a8108-154b-4621-acd1-704ddf229d61",
2696
2730
  "metadata": {},
2697
2731
  "outputs": [
2698
2732
  {
2699
2733
  "data": {
2700
2734
  "text/plain": [
2701
- "#<Arrow::Table:0x7f88a4c37268 ptr=0x5584364b26a0>\n",
2735
+ "#<Arrow::Table:0x7f54b8439518 ptr=0x55d81a8f6f30>\n",
2702
2736
  "\t a\tb\t c\n",
2703
2737
  "0\t 1\tA\t 1.000000\n",
2704
2738
  "1\t(null)\t(null)\t (null)\n"
2705
2739
  ]
2706
2740
  },
2707
- "execution_count": 75,
2741
+ "execution_count": 76,
2708
2742
  "metadata": {},
2709
2743
  "output_type": "execute_result"
2710
2744
  }
@@ -2725,19 +2759,19 @@
2725
2759
  },
2726
2760
  {
2727
2761
  "cell_type": "code",
2728
- "execution_count": 76,
2762
+ "execution_count": 77,
2729
2763
  "id": "851c3bf6-b9e9-41bd-92c5-5372ed934549",
2730
2764
  "metadata": {},
2731
2765
  "outputs": [
2732
2766
  {
2733
2767
  "data": {
2734
2768
  "text/plain": [
2735
- "#<Arrow::Table:0x7f88a4ca82b0 ptr=0x5584364b1a80>\n",
2769
+ "#<Arrow::Table:0x7f54b83fdf40 ptr=0x55d81abf1a70>\n",
2736
2770
  "\ta\tb\t c\n",
2737
2771
  "0\t1\tA\t 1.000000\n"
2738
2772
  ]
2739
2773
  },
2740
- "execution_count": 76,
2774
+ "execution_count": 77,
2741
2775
  "metadata": {},
2742
2776
  "output_type": "execute_result"
2743
2777
  }
@@ -2772,7 +2806,7 @@
2772
2806
  },
2773
2807
  {
2774
2808
  "cell_type": "code",
2775
- "execution_count": 77,
2809
+ "execution_count": 78,
2776
2810
  "id": "17e38ab8-886b-4114-bcaf-ee18df7d00cd",
2777
2811
  "metadata": {},
2778
2812
  "outputs": [
@@ -2782,7 +2816,7 @@
2782
2816
  "RedAmber::DataFrame <334 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.3</td><td>20.6</td><td>190</td><td>3650</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>38.9</td><td>17.8</td><td>181</td><td>3625</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.2</td><td>19.6</td><td>195</td><td>4675</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>34.1</td><td>18.1</td><td>193</td><td>3475</td><td><i>(nil)</i></td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>44.5</td><td>15.7</td><td>217</td><td>4875</td><td><i>(nil)</i></td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>48.8</td><td>16.2</td><td>222</td><td>6000</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>47.2</td><td>13.7</td><td>214</td><td>4925</td><td>female</td><td>2009</td></tr></table>"
2783
2817
  ],
2784
2818
  "text/plain": [
2785
- "#<RedAmber::DataFrame : 334 x 8 Vectors, 0x000000000000f514>\n",
2819
+ "#<RedAmber::DataFrame : 334 x 8 Vectors, 0x000000000000f5c8>\n",
2786
2820
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2787
2821
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2788
2822
  " 1 Adelie Torgersen 39.3 20.6 190 ... 2007\n",
@@ -2796,7 +2830,7 @@
2796
2830
  "334 Gentoo Biscoe 47.2 13.7 214 ... 2009\n"
2797
2831
  ]
2798
2832
  },
2799
- "execution_count": 77,
2833
+ "execution_count": 78,
2800
2834
  "metadata": {},
2801
2835
  "output_type": "execute_result"
2802
2836
  }
@@ -2816,7 +2850,7 @@
2816
2850
  },
2817
2851
  {
2818
2852
  "cell_type": "code",
2819
- "execution_count": 78,
2853
+ "execution_count": 79,
2820
2854
  "id": "6f169420-7eb2-457f-8d59-7a5c90aa3fa5",
2821
2855
  "metadata": {},
2822
2856
  "outputs": [
@@ -2826,7 +2860,7 @@
2826
2860
  "RedAmber::DataFrame <333 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>36.7</td><td>19.3</td><td>193</td><td>3450</td><td>female</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
2827
2861
  ],
2828
2862
  "text/plain": [
2829
- "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f528>\n",
2863
+ "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f5dc>\n",
2830
2864
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2831
2865
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2832
2866
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -2840,7 +2874,7 @@
2840
2874
  "333 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
2841
2875
  ]
2842
2876
  },
2843
- "execution_count": 78,
2877
+ "execution_count": 79,
2844
2878
  "metadata": {},
2845
2879
  "output_type": "execute_result"
2846
2880
  }
@@ -2860,7 +2894,7 @@
2860
2894
  },
2861
2895
  {
2862
2896
  "cell_type": "code",
2863
- "execution_count": 79,
2897
+ "execution_count": 80,
2864
2898
  "id": "a6807c65-25e5-4ee1-8d1b-6018c46b3999",
2865
2899
  "metadata": {},
2866
2900
  "outputs": [
@@ -2870,7 +2904,7 @@
2870
2904
  "RedAmber::DataFrame <140 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>36.7</td><td>19.3</td><td>193</td><td>3450</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>34.1</td><td>18.1</td><td>193</td><td>3475</td><td><i>(nil)</i></td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>37.8</td><td>17.1</td><td>186</td><td>3300</td><td><i>(nil)</i></td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
2871
2905
  ],
2872
2906
  "text/plain": [
2873
- "#<RedAmber::DataFrame : 140 x 8 Vectors, 0x000000000000f53c>\n",
2907
+ "#<RedAmber::DataFrame : 140 x 8 Vectors, 0x000000000000f5f0>\n",
2874
2908
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
2875
2909
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
2876
2910
  " 1 Adelie Torgersen (nil) (nil) (nil) ... 2007\n",
@@ -2884,7 +2918,7 @@
2884
2918
  "140 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
2885
2919
  ]
2886
2920
  },
2887
- "execution_count": 79,
2921
+ "execution_count": 80,
2888
2922
  "metadata": {},
2889
2923
  "output_type": "execute_result"
2890
2924
  }
@@ -2917,7 +2951,7 @@
2917
2951
  },
2918
2952
  {
2919
2953
  "cell_type": "code",
2920
- "execution_count": 80,
2954
+ "execution_count": 81,
2921
2955
  "id": "8575614e-f702-4ee4-ac7b-745e9b32e803",
2922
2956
  "metadata": {},
2923
2957
  "outputs": [
@@ -2927,7 +2961,7 @@
2927
2961
  "RedAmber::DataFrame <3 x 3 vectors> <table><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>A</td><td>1.0</td></tr><tr><td>2</td><td>B</td><td>2.0</td></tr><tr><td><i>(nil)</i></td><td>C</td><td>3.0</td></tr></table>"
2928
2962
  ],
2929
2963
  "text/plain": [
2930
- "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000f550>\n",
2964
+ "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000f604>\n",
2931
2965
  " a b c\n",
2932
2966
  " <uint8> <string> <double>\n",
2933
2967
  "1 1 A 1.0\n",
@@ -2935,7 +2969,7 @@
2935
2969
  "3 (nil) C 3.0\n"
2936
2970
  ]
2937
2971
  },
2938
- "execution_count": 80,
2972
+ "execution_count": 81,
2939
2973
  "metadata": {},
2940
2974
  "output_type": "execute_result"
2941
2975
  }
@@ -2946,18 +2980,18 @@
2946
2980
  },
2947
2981
  {
2948
2982
  "cell_type": "code",
2949
- "execution_count": 81,
2983
+ "execution_count": 82,
2950
2984
  "id": "932a5e71-8cef-44e5-a789-ce97329bc001",
2951
2985
  "metadata": {},
2952
2986
  "outputs": [
2953
2987
  {
2954
2988
  "data": {
2955
2989
  "text/plain": [
2956
- "#<RedAmber::Vector(:boolean, size=3):0x000000000000f564>\n",
2990
+ "#<RedAmber::Vector(:boolean, size=3):0x000000000000f618>\n",
2957
2991
  "[true, false, nil]\n"
2958
2992
  ]
2959
2993
  },
2960
- "execution_count": 81,
2994
+ "execution_count": 82,
2961
2995
  "metadata": {},
2962
2996
  "output_type": "execute_result"
2963
2997
  }
@@ -2968,7 +3002,7 @@
2968
3002
  },
2969
3003
  {
2970
3004
  "cell_type": "code",
2971
- "execution_count": 82,
3005
+ "execution_count": 83,
2972
3006
  "id": "74cf6aa6-8913-433d-97ad-bba2d548afe5",
2973
3007
  "metadata": {},
2974
3008
  "outputs": [
@@ -2978,7 +3012,7 @@
2978
3012
  "[false, true, true]"
2979
3013
  ]
2980
3014
  },
2981
- "execution_count": 82,
3015
+ "execution_count": 83,
2982
3016
  "metadata": {},
2983
3017
  "output_type": "execute_result"
2984
3018
  }
@@ -2989,7 +3023,7 @@
2989
3023
  },
2990
3024
  {
2991
3025
  "cell_type": "code",
2992
- "execution_count": 83,
3026
+ "execution_count": 84,
2993
3027
  "id": "5e466a06-cb17-4dc1-a5b0-34bfd3ffb78b",
2994
3028
  "metadata": {},
2995
3029
  "outputs": [
@@ -2999,7 +3033,7 @@
2999
3033
  "true"
3000
3034
  ]
3001
3035
  },
3002
- "execution_count": 83,
3036
+ "execution_count": 84,
3003
3037
  "metadata": {},
3004
3038
  "output_type": "execute_result"
3005
3039
  }
@@ -3018,18 +3052,18 @@
3018
3052
  },
3019
3053
  {
3020
3054
  "cell_type": "code",
3021
- "execution_count": 84,
3055
+ "execution_count": 85,
3022
3056
  "id": "077b216f-0a08-413e-95c9-12789d15a9ba",
3023
3057
  "metadata": {},
3024
3058
  "outputs": [
3025
3059
  {
3026
3060
  "data": {
3027
3061
  "text/plain": [
3028
- "#<RedAmber::Vector(:boolean, size=3):0x000000000000f578>\n",
3062
+ "#<RedAmber::Vector(:boolean, size=3):0x000000000000f62c>\n",
3029
3063
  "[false, true, nil]\n"
3030
3064
  ]
3031
3065
  },
3032
- "execution_count": 84,
3066
+ "execution_count": 85,
3033
3067
  "metadata": {},
3034
3068
  "output_type": "execute_result"
3035
3069
  }
@@ -3040,7 +3074,7 @@
3040
3074
  },
3041
3075
  {
3042
3076
  "cell_type": "code",
3043
- "execution_count": 85,
3077
+ "execution_count": 86,
3044
3078
  "id": "b3df62a6-c4a3-44cb-bde6-f6be12b120c8",
3045
3079
  "metadata": {},
3046
3080
  "outputs": [
@@ -3050,14 +3084,14 @@
3050
3084
  "RedAmber::DataFrame <2 x 3 vectors> <table><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>A</td><td>1.0</td></tr><tr><td><i>(nil)</i></td><td>C</td><td>3.0</td></tr></table>"
3051
3085
  ],
3052
3086
  "text/plain": [
3053
- "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000f58c>\n",
3087
+ "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000f640>\n",
3054
3088
  " a b c\n",
3055
3089
  " <uint8> <string> <double>\n",
3056
3090
  "1 1 A 1.0\n",
3057
3091
  "2 (nil) C 3.0\n"
3058
3092
  ]
3059
3093
  },
3060
- "execution_count": 85,
3094
+ "execution_count": 86,
3061
3095
  "metadata": {},
3062
3096
  "output_type": "execute_result"
3063
3097
  }
@@ -3076,18 +3110,18 @@
3076
3110
  },
3077
3111
  {
3078
3112
  "cell_type": "code",
3079
- "execution_count": 86,
3113
+ "execution_count": 87,
3080
3114
  "id": "296ca3cd-a6da-4603-a576-d8c36a810e4f",
3081
3115
  "metadata": {},
3082
3116
  "outputs": [
3083
3117
  {
3084
3118
  "data": {
3085
3119
  "text/plain": [
3086
- "#<RedAmber::Vector(:boolean, size=3):0x000000000000f5a0>\n",
3120
+ "#<RedAmber::Vector(:boolean, size=3):0x000000000000f654>\n",
3087
3121
  "[false, true, true]\n"
3088
3122
  ]
3089
3123
  },
3090
- "execution_count": 86,
3124
+ "execution_count": 87,
3091
3125
  "metadata": {},
3092
3126
  "output_type": "execute_result"
3093
3127
  }
@@ -3098,7 +3132,7 @@
3098
3132
  },
3099
3133
  {
3100
3134
  "cell_type": "code",
3101
- "execution_count": 87,
3135
+ "execution_count": 88,
3102
3136
  "id": "ba5b8c0b-b94e-4209-adcd-258ea3b87bfd",
3103
3137
  "metadata": {},
3104
3138
  "outputs": [
@@ -3108,13 +3142,13 @@
3108
3142
  "RedAmber::DataFrame <1 x 3 vectors> <table><tr><th>a</th><th>b</th><th>c</th></tr><tr><td>1</td><td>A</td><td>1.0</td></tr></table>"
3109
3143
  ],
3110
3144
  "text/plain": [
3111
- "#<RedAmber::DataFrame : 1 x 3 Vectors, 0x000000000000f5b4>\n",
3145
+ "#<RedAmber::DataFrame : 1 x 3 Vectors, 0x000000000000f668>\n",
3112
3146
  " a b c\n",
3113
3147
  " <uint8> <string> <double>\n",
3114
3148
  "1 1 A 1.0\n"
3115
3149
  ]
3116
3150
  },
3117
- "execution_count": 87,
3151
+ "execution_count": 88,
3118
3152
  "metadata": {},
3119
3153
  "output_type": "execute_result"
3120
3154
  }
@@ -3125,7 +3159,7 @@
3125
3159
  },
3126
3160
  {
3127
3161
  "cell_type": "code",
3128
- "execution_count": 88,
3162
+ "execution_count": 89,
3129
3163
  "id": "2446792f-0b0a-4642-acae-b4fec89261c1",
3130
3164
  "metadata": {},
3131
3165
  "outputs": [
@@ -3135,7 +3169,7 @@
3135
3169
  "true"
3136
3170
  ]
3137
3171
  },
3138
- "execution_count": 88,
3172
+ "execution_count": 89,
3139
3173
  "metadata": {},
3140
3174
  "output_type": "execute_result"
3141
3175
  }
@@ -3162,7 +3196,7 @@
3162
3196
  },
3163
3197
  {
3164
3198
  "cell_type": "code",
3165
- "execution_count": 89,
3199
+ "execution_count": 90,
3166
3200
  "id": "de4bb615-d14d-4c90-ab54-db2f375b9f00",
3167
3201
  "metadata": {},
3168
3202
  "outputs": [
@@ -3172,7 +3206,7 @@
3172
3206
  "RedAmber::DataFrame <333 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>36.7</td><td>19.3</td><td>193</td><td>3450</td><td>female</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
3173
3207
  ],
3174
3208
  "text/plain": [
3175
- "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f5c8>\n",
3209
+ "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f67c>\n",
3176
3210
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
3177
3211
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
3178
3212
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -3186,7 +3220,7 @@
3186
3220
  "333 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
3187
3221
  ]
3188
3222
  },
3189
- "execution_count": 89,
3223
+ "execution_count": 90,
3190
3224
  "metadata": {},
3191
3225
  "output_type": "execute_result"
3192
3226
  }
@@ -3205,7 +3239,7 @@
3205
3239
  },
3206
3240
  {
3207
3241
  "cell_type": "code",
3208
- "execution_count": 90,
3242
+ "execution_count": 91,
3209
3243
  "id": "27a3da5f-0ea2-4c5d-a6c3-c0e20f2224a3",
3210
3244
  "metadata": {},
3211
3245
  "outputs": [
@@ -3215,7 +3249,7 @@
3215
3249
  "RedAmber::DataFrame <333 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>36.7</td><td>19.3</td><td>193</td><td>3450</td><td>female</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
3216
3250
  ],
3217
3251
  "text/plain": [
3218
- "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f5dc>\n",
3252
+ "#<RedAmber::DataFrame : 333 x 8 Vectors, 0x000000000000f690>\n",
3219
3253
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
3220
3254
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
3221
3255
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -3229,7 +3263,7 @@
3229
3263
  "333 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
3230
3264
  ]
3231
3265
  },
3232
- "execution_count": 90,
3266
+ "execution_count": 91,
3233
3267
  "metadata": {},
3234
3268
  "output_type": "execute_result"
3235
3269
  }
@@ -3259,12 +3293,12 @@
3259
3293
  "id": "3f6924ec-e86c-4089-ae40-6783027d3ce0",
3260
3294
  "metadata": {},
3261
3295
  "source": [
3262
- "`#rename(key_pairs)` accepts key_pairs as arguments. key_pairs should be a Hash of `{existing_key => new_key}` ."
3296
+ "`#rename(key_pairs)` accepts key_pairs as arguments. key_pairs should be a Hash of `{existing_key => new_key}` or an Array of Array `[[existing_key, new_key], ...]` ."
3263
3297
  ]
3264
3298
  },
3265
3299
  {
3266
3300
  "cell_type": "code",
3267
- "execution_count": 91,
3301
+ "execution_count": 92,
3268
3302
  "id": "9396c96d-83d7-4b92-a4ca-27bc9e4d7b9d",
3269
3303
  "metadata": {},
3270
3304
  "outputs": [
@@ -3274,7 +3308,7 @@
3274
3308
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>name</th><th>age</th></tr><tr><td>Yasuko</td><td>68</td></tr><tr><td>Rui</td><td>49</td></tr><tr><td>Hinata</td><td>28</td></tr></table>"
3275
3309
  ],
3276
3310
  "text/plain": [
3277
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f5f0>\n",
3311
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f6a4>\n",
3278
3312
  " name age\n",
3279
3313
  " <string> <uint8>\n",
3280
3314
  "1 Yasuko 68\n",
@@ -3282,7 +3316,7 @@
3282
3316
  "3 Hinata 28\n"
3283
3317
  ]
3284
3318
  },
3285
- "execution_count": 91,
3319
+ "execution_count": 92,
3286
3320
  "metadata": {},
3287
3321
  "output_type": "execute_result"
3288
3322
  }
@@ -3294,7 +3328,7 @@
3294
3328
  },
3295
3329
  {
3296
3330
  "cell_type": "code",
3297
- "execution_count": 92,
3331
+ "execution_count": 93,
3298
3332
  "id": "fad279c6-1ca0-4493-bd69-0e9ef011bff7",
3299
3333
  "metadata": {},
3300
3334
  "outputs": [
@@ -3304,7 +3338,7 @@
3304
3338
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>name</th><th>age_in_1993</th></tr><tr><td>Yasuko</td><td>68</td></tr><tr><td>Rui</td><td>49</td></tr><tr><td>Hinata</td><td>28</td></tr></table>"
3305
3339
  ],
3306
3340
  "text/plain": [
3307
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f604>\n",
3341
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f6b8>\n",
3308
3342
  " name age_in_1993\n",
3309
3343
  " <string> <uint8>\n",
3310
3344
  "1 Yasuko 68\n",
@@ -3312,13 +3346,15 @@
3312
3346
  "3 Hinata 28\n"
3313
3347
  ]
3314
3348
  },
3315
- "execution_count": 92,
3349
+ "execution_count": 93,
3316
3350
  "metadata": {},
3317
3351
  "output_type": "execute_result"
3318
3352
  }
3319
3353
  ],
3320
3354
  "source": [
3321
- "comecome.rename(:age => :age_in_1993)"
3355
+ "comecome.rename(:age => :age_in_1993)\n",
3356
+ "# comecome.rename(:age, :age_in_1993) # is also OK\n",
3357
+ "# comecome.rename([:age, :age_in_1993]) # is also OK"
3322
3358
  ]
3323
3359
  },
3324
3360
  {
@@ -3326,7 +3362,7 @@
3326
3362
  "id": "9dabb005-9822-4c4b-aaa5-fa6f28f2ed43",
3327
3363
  "metadata": {},
3328
3364
  "source": [
3329
- "`#rename {block}` is also acceptable. We can't use both arguments and a block at a same time. The block should return key_pairs as a Hash of {existing_key => new_key}. Block is called in the context of self."
3365
+ "`#rename {block}` is also acceptable. We can't use both arguments and a block at a same time. The block should return key_pairs as a Hash of `{existing_key => new_key}` or an Array of Array `[[existing_key, new_key], ...]`. Block is called in the context of self."
3330
3366
  ]
3331
3367
  },
3332
3368
  {
@@ -3361,12 +3397,12 @@
3361
3397
  "id": "b4b22da0-4ee2-4196-88e1-1cfea6a72f4d",
3362
3398
  "metadata": {},
3363
3399
  "source": [
3364
- "`#assign(key_pairs)` accepts pairs of key and values as arguments. key_pairs should be a Hash of `{key => array}` or `{key => Vector}` ."
3400
+ "`#assign(key_pairs)` accepts pairs of key and array_like values as arguments. The pairs should be a Hash of `{key => array_like}` or an Array of Array `[[key, array_like], ... ]`. `array_like` is one of `Vector`, `Array` or `Arrow::Array`. "
3365
3401
  ]
3366
3402
  },
3367
3403
  {
3368
3404
  "cell_type": "code",
3369
- "execution_count": 93,
3405
+ "execution_count": 94,
3370
3406
  "id": "56dcfed8-a6f9-4d8c-bac3-e8ce7c0674a7",
3371
3407
  "metadata": {},
3372
3408
  "outputs": [
@@ -3376,7 +3412,7 @@
3376
3412
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>name</th><th>age</th></tr><tr><td>Yasuko</td><td>68</td></tr><tr><td>Rui</td><td>49</td></tr><tr><td>Hinata</td><td>28</td></tr></table>"
3377
3413
  ],
3378
3414
  "text/plain": [
3379
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f618>\n",
3415
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f6cc>\n",
3380
3416
  " name age\n",
3381
3417
  " <string> <uint8>\n",
3382
3418
  "1 Yasuko 68\n",
@@ -3384,7 +3420,7 @@
3384
3420
  "3 Hinata 28\n"
3385
3421
  ]
3386
3422
  },
3387
- "execution_count": 93,
3423
+ "execution_count": 94,
3388
3424
  "metadata": {},
3389
3425
  "output_type": "execute_result"
3390
3426
  }
@@ -3395,7 +3431,7 @@
3395
3431
  },
3396
3432
  {
3397
3433
  "cell_type": "code",
3398
- "execution_count": 94,
3434
+ "execution_count": 95,
3399
3435
  "id": "8da8d282-8798-44d5-bb7b-7fa2df922308",
3400
3436
  "metadata": {},
3401
3437
  "outputs": [
@@ -3405,7 +3441,7 @@
3405
3441
  "RedAmber::DataFrame <3 x 3 vectors> <table><tr><th>name</th><th>age</th><th>brother</th></tr><tr><td>Yasuko</td><td>97</td><td>Santa</td></tr><tr><td>Rui</td><td>78</td><td><i>(nil)</i></td></tr><tr><td>Hinata</td><td>57</td><td>Momotaro</td></tr></table>"
3406
3442
  ],
3407
3443
  "text/plain": [
3408
- "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000f62c>\n",
3444
+ "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000f6e0>\n",
3409
3445
  " name age brother\n",
3410
3446
  " <string> <uint8> <string>\n",
3411
3447
  "1 Yasuko 97 Santa\n",
@@ -3413,7 +3449,7 @@
3413
3449
  "3 Hinata 57 Momotaro\n"
3414
3450
  ]
3415
3451
  },
3416
- "execution_count": 94,
3452
+ "execution_count": 95,
3417
3453
  "metadata": {},
3418
3454
  "output_type": "execute_result"
3419
3455
  }
@@ -3429,12 +3465,12 @@
3429
3465
  "id": "e6d3ddfc-b16d-4b20-83df-357e9cdb32e6",
3430
3466
  "metadata": {},
3431
3467
  "source": [
3432
- "`#assign {block}` is also acceptable. We can't use both arguments and a block at a same time. The block should return pairs of key and values as a Hash of `{key => array}` or `{key => Vector}`. Block is called in the context of self."
3468
+ "`#assign {block}` is also acceptable. We can't use both arguments and a block at a same time. The block should return pairs of key and array_like values as a Hash of `{key => array_like}` or an Array of Array `[[key, array_like], ... ]`. `array_like` is one of `Vector`, `Array` or `Arrow::Array`. Block is called in the context of self."
3433
3469
  ]
3434
3470
  },
3435
3471
  {
3436
3472
  "cell_type": "code",
3437
- "execution_count": 95,
3473
+ "execution_count": 96,
3438
3474
  "id": "8d69edd0-7ad7-4318-8033-1785ce2543db",
3439
3475
  "metadata": {},
3440
3476
  "outputs": [
@@ -3444,7 +3480,7 @@
3444
3480
  "RedAmber::DataFrame <5 x 3 vectors> <table><tr><th>index</th><th>float</th><th>string</th></tr><tr><td>0</td><td>0.0</td><td>A</td></tr><tr><td>1</td><td>1.1</td><td>B</td></tr><tr><td>2</td><td>2.2</td><td>C</td></tr><tr><td>3</td><td>NaN</td><td>D</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
3445
3481
  ],
3446
3482
  "text/plain": [
3447
- "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f640>\n",
3483
+ "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f6f4>\n",
3448
3484
  " index float string\n",
3449
3485
  " <uint8> <double> <string>\n",
3450
3486
  "1 0 0.0 A\n",
@@ -3454,7 +3490,7 @@
3454
3490
  "5 (nil) (nil) (nil)\n"
3455
3491
  ]
3456
3492
  },
3457
- "execution_count": 95,
3493
+ "execution_count": 96,
3458
3494
  "metadata": {},
3459
3495
  "output_type": "execute_result"
3460
3496
  }
@@ -3468,7 +3504,7 @@
3468
3504
  },
3469
3505
  {
3470
3506
  "cell_type": "code",
3471
- "execution_count": 96,
3507
+ "execution_count": 97,
3472
3508
  "id": "e884af01-d82b-42e7-8e92-62baf19919cb",
3473
3509
  "metadata": {},
3474
3510
  "outputs": [
@@ -3478,7 +3514,7 @@
3478
3514
  "RedAmber::DataFrame <5 x 3 vectors> <table><tr><th>index</th><th>float</th><th>string</th></tr><tr><td>0</td><td>-0.0</td><td>A</td></tr><tr><td>255</td><td>-1.1</td><td>B</td></tr><tr><td>254</td><td>-2.2</td><td>C</td></tr><tr><td>253</td><td>NaN</td><td>D</td></tr><tr><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td></tr></table>"
3479
3515
  ],
3480
3516
  "text/plain": [
3481
- "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f654>\n",
3517
+ "#<RedAmber::DataFrame : 5 x 3 Vectors, 0x000000000000f708>\n",
3482
3518
  " index float string\n",
3483
3519
  " <uint8> <double> <string>\n",
3484
3520
  "1 0 -0.0 A\n",
@@ -3488,7 +3524,7 @@
3488
3524
  "5 (nil) (nil) (nil)\n"
3489
3525
  ]
3490
3526
  },
3491
- "execution_count": 96,
3527
+ "execution_count": 97,
3492
3528
  "metadata": {},
3493
3529
  "output_type": "execute_result"
3494
3530
  }
@@ -3496,14 +3532,39 @@
3496
3532
  "source": [
3497
3533
  "# update numeric variables\n",
3498
3534
  "df.assign do\n",
3499
- " assigner = {}\n",
3500
- " vectors.each_with_index do |v, i|\n",
3501
- " assigner[keys[i]] = -v if v.numeric?\n",
3502
- " end\n",
3503
- " assigner\n",
3535
+ " vectors.select(&:numeric?).map { |v| [v.key, -v] }\n",
3504
3536
  "end"
3505
3537
  ]
3506
3538
  },
3539
+ {
3540
+ "cell_type": "markdown",
3541
+ "id": "7b8e2090-628f-4b17-8929-cbb5e0285dff",
3542
+ "metadata": {},
3543
+ "source": [
3544
+ "In this example, columns :x and :y are updated. Column :x returns complements for #negate method because :x is :uint8 type."
3545
+ ]
3546
+ },
3547
+ {
3548
+ "cell_type": "code",
3549
+ "execution_count": 98,
3550
+ "id": "9452f8db-5f23-4044-ac87-ac5695fae8ae",
3551
+ "metadata": {},
3552
+ "outputs": [
3553
+ {
3554
+ "data": {
3555
+ "text/plain": [
3556
+ "[:uint8, :double, :string]"
3557
+ ]
3558
+ },
3559
+ "execution_count": 98,
3560
+ "metadata": {},
3561
+ "output_type": "execute_result"
3562
+ }
3563
+ ],
3564
+ "source": [
3565
+ "df.types"
3566
+ ]
3567
+ },
3507
3568
  {
3508
3569
  "cell_type": "markdown",
3509
3570
  "id": "c5c83559-f4d8-4ed2-8b20-5c50eb1faa14",
@@ -3522,18 +3583,18 @@
3522
3583
  },
3523
3584
  {
3524
3585
  "cell_type": "code",
3525
- "execution_count": 97,
3586
+ "execution_count": 99,
3526
3587
  "id": "2bfbe584-be54-486b-af32-e76b37c10e49",
3527
3588
  "metadata": {},
3528
3589
  "outputs": [
3529
3590
  {
3530
3591
  "data": {
3531
3592
  "text/plain": [
3532
- "#<RedAmber::Vector(:uint8, size=3):0x000000000000f668>\n",
3593
+ "#<RedAmber::Vector(:uint8, size=3):0x000000000000f71c>\n",
3533
3594
  "[1, 2, 3]\n"
3534
3595
  ]
3535
3596
  },
3536
- "execution_count": 97,
3597
+ "execution_count": 99,
3537
3598
  "metadata": {},
3538
3599
  "output_type": "execute_result"
3539
3600
  }
@@ -3544,18 +3605,18 @@
3544
3605
  },
3545
3606
  {
3546
3607
  "cell_type": "code",
3547
- "execution_count": 98,
3608
+ "execution_count": 100,
3548
3609
  "id": "ce35d901-38a8-4f13-b2d1-29b83f6c5438",
3549
3610
  "metadata": {},
3550
3611
  "outputs": [
3551
3612
  {
3552
3613
  "data": {
3553
3614
  "text/plain": [
3554
- "#<RedAmber::Vector(:int16, size=3):0x000000000000f67c>\n",
3615
+ "#<RedAmber::Vector(:int16, size=3):0x000000000000f730>\n",
3555
3616
  "[-1, -2, -3]\n"
3556
3617
  ]
3557
3618
  },
3558
- "execution_count": 98,
3619
+ "execution_count": 100,
3559
3620
  "metadata": {},
3560
3621
  "output_type": "execute_result"
3561
3622
  }
@@ -3567,18 +3628,18 @@
3567
3628
  },
3568
3629
  {
3569
3630
  "cell_type": "code",
3570
- "execution_count": 99,
3631
+ "execution_count": 101,
3571
3632
  "id": "7d5fc2be-f590-4678-92e9-faa27b618266",
3572
3633
  "metadata": {},
3573
3634
  "outputs": [
3574
3635
  {
3575
3636
  "data": {
3576
3637
  "text/plain": [
3577
- "#<RedAmber::Vector(:int16, size=3):0x000000000000f690>\n",
3638
+ "#<RedAmber::Vector(:int16, size=3):0x000000000000f744>\n",
3578
3639
  "[-1, -2, -3]\n"
3579
3640
  ]
3580
3641
  },
3581
- "execution_count": 99,
3642
+ "execution_count": 101,
3582
3643
  "metadata": {},
3583
3644
  "output_type": "execute_result"
3584
3645
  }
@@ -3590,18 +3651,18 @@
3590
3651
  },
3591
3652
  {
3592
3653
  "cell_type": "code",
3593
- "execution_count": 100,
3654
+ "execution_count": 102,
3594
3655
  "id": "fa90a6af-add7-42f2-9707-7d726575aeb6",
3595
3656
  "metadata": {},
3596
3657
  "outputs": [
3597
3658
  {
3598
3659
  "data": {
3599
3660
  "text/plain": [
3600
- "#<RedAmber::Vector(:uint8, size=3):0x000000000000f6a4>\n",
3661
+ "#<RedAmber::Vector(:uint8, size=3):0x000000000000f758>\n",
3601
3662
  "[255, 254, 253]\n"
3602
3663
  ]
3603
3664
  },
3604
- "execution_count": 100,
3665
+ "execution_count": 102,
3605
3666
  "metadata": {},
3606
3667
  "output_type": "execute_result"
3607
3668
  }
@@ -3631,7 +3692,7 @@
3631
3692
  },
3632
3693
  {
3633
3694
  "cell_type": "code",
3634
- "execution_count": 101,
3695
+ "execution_count": 103,
3635
3696
  "id": "b12bd7c8-2981-426c-8ae3-154504a8ea15",
3636
3697
  "metadata": {},
3637
3698
  "outputs": [
@@ -3641,7 +3702,7 @@
3641
3702
  "[3, 4, 5]"
3642
3703
  ]
3643
3704
  },
3644
- "execution_count": 101,
3705
+ "execution_count": 103,
3645
3706
  "metadata": {},
3646
3707
  "output_type": "execute_result"
3647
3708
  }
@@ -3652,7 +3713,7 @@
3652
3713
  },
3653
3714
  {
3654
3715
  "cell_type": "code",
3655
- "execution_count": 102,
3716
+ "execution_count": 104,
3656
3717
  "id": "c0cb5a98-7cdf-43a8-b2f7-f9df1961c761",
3657
3718
  "metadata": {},
3658
3719
  "outputs": [
@@ -3662,7 +3723,7 @@
3662
3723
  "[1, 2, 3, 4, 5]"
3663
3724
  ]
3664
3725
  },
3665
- "execution_count": 102,
3726
+ "execution_count": 104,
3666
3727
  "metadata": {},
3667
3728
  "output_type": "execute_result"
3668
3729
  }
@@ -3691,18 +3752,18 @@
3691
3752
  },
3692
3753
  {
3693
3754
  "cell_type": "code",
3694
- "execution_count": 103,
3755
+ "execution_count": 105,
3695
3756
  "id": "d003b06a-859f-4de0-9e35-803efac85169",
3696
3757
  "metadata": {},
3697
3758
  "outputs": [
3698
3759
  {
3699
3760
  "data": {
3700
3761
  "text/plain": [
3701
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f6b8>\n",
3762
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f76c>\n",
3702
3763
  "[0, 1, 1, 3, 3]\n"
3703
3764
  ]
3704
3765
  },
3705
- "execution_count": 103,
3766
+ "execution_count": 105,
3706
3767
  "metadata": {},
3707
3768
  "output_type": "execute_result"
3708
3769
  }
@@ -3714,18 +3775,18 @@
3714
3775
  },
3715
3776
  {
3716
3777
  "cell_type": "code",
3717
- "execution_count": 104,
3778
+ "execution_count": 106,
3718
3779
  "id": "c5d74006-d364-4e86-8a5e-9e96e87a96e0",
3719
3780
  "metadata": {},
3720
3781
  "outputs": [
3721
3782
  {
3722
3783
  "data": {
3723
3784
  "text/plain": [
3724
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f6cc>\n",
3785
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000f780>\n",
3725
3786
  "[0, 1, 3, 3, nil]\n"
3726
3787
  ]
3727
3788
  },
3728
- "execution_count": 104,
3789
+ "execution_count": 106,
3729
3790
  "metadata": {},
3730
3791
  "output_type": "execute_result"
3731
3792
  }
@@ -3756,7 +3817,7 @@
3756
3817
  },
3757
3818
  {
3758
3819
  "cell_type": "code",
3759
- "execution_count": 105,
3820
+ "execution_count": 107,
3760
3821
  "id": "ebad37ad-0a09-48b1-ba3a-4e030a917837",
3761
3822
  "metadata": {},
3762
3823
  "outputs": [
@@ -3766,7 +3827,7 @@
3766
3827
  "true"
3767
3828
  ]
3768
3829
  },
3769
- "execution_count": 105,
3830
+ "execution_count": 107,
3770
3831
  "metadata": {},
3771
3832
  "output_type": "execute_result"
3772
3833
  }
@@ -3778,7 +3839,7 @@
3778
3839
  },
3779
3840
  {
3780
3841
  "cell_type": "code",
3781
- "execution_count": 106,
3842
+ "execution_count": 108,
3782
3843
  "id": "97fc24da-03d4-406d-b353-562896775d60",
3783
3844
  "metadata": {},
3784
3845
  "outputs": [
@@ -3788,7 +3849,7 @@
3788
3849
  "true"
3789
3850
  ]
3790
3851
  },
3791
- "execution_count": 106,
3852
+ "execution_count": 108,
3792
3853
  "metadata": {},
3793
3854
  "output_type": "execute_result"
3794
3855
  }
@@ -3807,7 +3868,7 @@
3807
3868
  },
3808
3869
  {
3809
3870
  "cell_type": "code",
3810
- "execution_count": 107,
3871
+ "execution_count": 109,
3811
3872
  "id": "3e0e5800-665a-4a05-b2cb-d152f3f077de",
3812
3873
  "metadata": {},
3813
3874
  "outputs": [
@@ -3817,7 +3878,7 @@
3817
3878
  "false"
3818
3879
  ]
3819
3880
  },
3820
- "execution_count": 107,
3881
+ "execution_count": 109,
3821
3882
  "metadata": {},
3822
3883
  "output_type": "execute_result"
3823
3884
  }
@@ -3828,7 +3889,7 @@
3828
3889
  },
3829
3890
  {
3830
3891
  "cell_type": "code",
3831
- "execution_count": 108,
3892
+ "execution_count": 110,
3832
3893
  "id": "3e43f0c4-a254-4735-ac28-de14d2670c67",
3833
3894
  "metadata": {},
3834
3895
  "outputs": [
@@ -3838,7 +3899,7 @@
3838
3899
  "true"
3839
3900
  ]
3840
3901
  },
3841
- "execution_count": 108,
3902
+ "execution_count": 110,
3842
3903
  "metadata": {},
3843
3904
  "output_type": "execute_result"
3844
3905
  }
@@ -3869,7 +3930,7 @@
3869
3930
  },
3870
3931
  {
3871
3932
  "cell_type": "code",
3872
- "execution_count": 109,
3933
+ "execution_count": 111,
3873
3934
  "id": "2af73e32-1d7e-4f80-b54e-c40ef08b7034",
3874
3935
  "metadata": {},
3875
3936
  "outputs": [
@@ -3879,7 +3940,7 @@
3879
3940
  "3"
3880
3941
  ]
3881
3942
  },
3882
- "execution_count": 109,
3943
+ "execution_count": 111,
3883
3944
  "metadata": {},
3884
3945
  "output_type": "execute_result"
3885
3946
  }
@@ -3891,7 +3952,7 @@
3891
3952
  },
3892
3953
  {
3893
3954
  "cell_type": "code",
3894
- "execution_count": 110,
3955
+ "execution_count": 112,
3895
3956
  "id": "fe6d8d85-27b0-438f-b1b4-1b15e9eb05f9",
3896
3957
  "metadata": {},
3897
3958
  "outputs": [
@@ -3901,7 +3962,7 @@
3901
3962
  "2"
3902
3963
  ]
3903
3964
  },
3904
- "execution_count": 110,
3965
+ "execution_count": 112,
3905
3966
  "metadata": {},
3906
3967
  "output_type": "execute_result"
3907
3968
  }
@@ -3928,7 +3989,7 @@
3928
3989
  },
3929
3990
  {
3930
3991
  "cell_type": "code",
3931
- "execution_count": 111,
3992
+ "execution_count": 113,
3932
3993
  "id": "0afec200-f377-432b-a260-ae5a0c5ce794",
3933
3994
  "metadata": {},
3934
3995
  "outputs": [
@@ -3938,7 +3999,7 @@
3938
3999
  "0.816496580927726"
3939
4000
  ]
3940
4001
  },
3941
- "execution_count": 111,
4002
+ "execution_count": 113,
3942
4003
  "metadata": {},
3943
4004
  "output_type": "execute_result"
3944
4005
  }
@@ -3950,7 +4011,7 @@
3950
4011
  },
3951
4012
  {
3952
4013
  "cell_type": "code",
3953
- "execution_count": 112,
4014
+ "execution_count": 114,
3954
4015
  "id": "2e40ac09-cb7f-4978-87e8-53f84f16f7c7",
3955
4016
  "metadata": {},
3956
4017
  "outputs": [
@@ -3960,7 +4021,7 @@
3960
4021
  "1.0"
3961
4022
  ]
3962
4023
  },
3963
- "execution_count": 112,
4024
+ "execution_count": 114,
3964
4025
  "metadata": {},
3965
4026
  "output_type": "execute_result"
3966
4027
  }
@@ -3972,7 +4033,7 @@
3972
4033
  },
3973
4034
  {
3974
4035
  "cell_type": "code",
3975
- "execution_count": 113,
4036
+ "execution_count": 115,
3976
4037
  "id": "e6158e3b-4af8-467c-a355-8e9f2e579548",
3977
4038
  "metadata": {},
3978
4039
  "outputs": [
@@ -3982,7 +4043,7 @@
3982
4043
  "0.6666666666666666"
3983
4044
  ]
3984
4045
  },
3985
- "execution_count": 113,
4046
+ "execution_count": 115,
3986
4047
  "metadata": {},
3987
4048
  "output_type": "execute_result"
3988
4049
  }
@@ -3993,7 +4054,7 @@
3993
4054
  },
3994
4055
  {
3995
4056
  "cell_type": "code",
3996
- "execution_count": 114,
4057
+ "execution_count": 116,
3997
4058
  "id": "d64d39f2-d979-49f1-9946-65890f40d646",
3998
4059
  "metadata": {},
3999
4060
  "outputs": [
@@ -4003,7 +4064,7 @@
4003
4064
  "1.0"
4004
4065
  ]
4005
4066
  },
4006
- "execution_count": 114,
4067
+ "execution_count": 116,
4007
4068
  "metadata": {},
4008
4069
  "output_type": "execute_result"
4009
4070
  }
@@ -4031,18 +4092,18 @@
4031
4092
  },
4032
4093
  {
4033
4094
  "cell_type": "code",
4034
- "execution_count": 115,
4095
+ "execution_count": 117,
4035
4096
  "id": "ab5a357a-e98c-40a1-9b89-0b38645e416f",
4036
4097
  "metadata": {},
4037
4098
  "outputs": [
4038
4099
  {
4039
4100
  "data": {
4040
4101
  "text/plain": [
4041
- "#<RedAmber::Vector(:double, size=3):0x000000000000f6e0>\n",
4102
+ "#<RedAmber::Vector(:double, size=3):0x000000000000f794>\n",
4042
4103
  "[-1.0, 2.0, -3.0]\n"
4043
4104
  ]
4044
4105
  },
4045
- "execution_count": 115,
4106
+ "execution_count": 117,
4046
4107
  "metadata": {},
4047
4108
  "output_type": "execute_result"
4048
4109
  }
@@ -4054,18 +4115,18 @@
4054
4115
  },
4055
4116
  {
4056
4117
  "cell_type": "code",
4057
- "execution_count": 116,
4118
+ "execution_count": 118,
4058
4119
  "id": "8a06c856-d61c-4752-a296-1fa207ffd9a1",
4059
4120
  "metadata": {},
4060
4121
  "outputs": [
4061
4122
  {
4062
4123
  "data": {
4063
4124
  "text/plain": [
4064
- "#<RedAmber::Vector(:double, size=3):0x000000000000f6f4>\n",
4125
+ "#<RedAmber::Vector(:double, size=3):0x000000000000f7a8>\n",
4065
4126
  "[-1.0, 2.0, -3.0]\n"
4066
4127
  ]
4067
4128
  },
4068
- "execution_count": 116,
4129
+ "execution_count": 118,
4069
4130
  "metadata": {},
4070
4131
  "output_type": "execute_result"
4071
4132
  }
@@ -4098,18 +4159,18 @@
4098
4159
  },
4099
4160
  {
4100
4161
  "cell_type": "code",
4101
- "execution_count": 117,
4162
+ "execution_count": 119,
4102
4163
  "id": "e7a069b0-3547-4cd2-a2f0-0740f186b191",
4103
4164
  "metadata": {},
4104
4165
  "outputs": [
4105
4166
  {
4106
4167
  "data": {
4107
4168
  "text/plain": [
4108
- "#<RedAmber::Vector(:double, size=5):0x000000000000f708>\n",
4169
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f7bc>\n",
4109
4170
  "[15.15, 2.5, 3.5, -4.5, -5.5]\n"
4110
4171
  ]
4111
4172
  },
4112
- "execution_count": 117,
4173
+ "execution_count": 119,
4113
4174
  "metadata": {},
4114
4175
  "output_type": "execute_result"
4115
4176
  }
@@ -4120,18 +4181,18 @@
4120
4181
  },
4121
4182
  {
4122
4183
  "cell_type": "code",
4123
- "execution_count": 118,
4184
+ "execution_count": 120,
4124
4185
  "id": "5ee84b24-8830-4788-a404-d5e1cca22abf",
4125
4186
  "metadata": {},
4126
4187
  "outputs": [
4127
4188
  {
4128
4189
  "data": {
4129
4190
  "text/plain": [
4130
- "#<RedAmber::Vector(:double, size=5):0x000000000000f71c>\n",
4191
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f7d0>\n",
4131
4192
  "[15.0, 2.0, 4.0, -4.0, -6.0]\n"
4132
4193
  ]
4133
4194
  },
4134
- "execution_count": 118,
4195
+ "execution_count": 120,
4135
4196
  "metadata": {},
4136
4197
  "output_type": "execute_result"
4137
4198
  }
@@ -4142,18 +4203,18 @@
4142
4203
  },
4143
4204
  {
4144
4205
  "cell_type": "code",
4145
- "execution_count": 119,
4206
+ "execution_count": 121,
4146
4207
  "id": "20adb1ad-473c-4245-b959-7848c239fb76",
4147
4208
  "metadata": {},
4148
4209
  "outputs": [
4149
4210
  {
4150
4211
  "data": {
4151
4212
  "text/plain": [
4152
- "#<RedAmber::Vector(:double, size=5):0x000000000000f730>\n",
4213
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f7e4>\n",
4153
4214
  "[15.0, 2.0, 4.0, -4.0, -6.0]\n"
4154
4215
  ]
4155
4216
  },
4156
- "execution_count": 119,
4217
+ "execution_count": 121,
4157
4218
  "metadata": {},
4158
4219
  "output_type": "execute_result"
4159
4220
  }
@@ -4164,18 +4225,18 @@
4164
4225
  },
4165
4226
  {
4166
4227
  "cell_type": "code",
4167
- "execution_count": 120,
4228
+ "execution_count": 122,
4168
4229
  "id": "d2777ad8-2c24-48e4-8f5f-77403e3109ea",
4169
4230
  "metadata": {},
4170
4231
  "outputs": [
4171
4232
  {
4172
4233
  "data": {
4173
4234
  "text/plain": [
4174
- "#<RedAmber::Vector(:double, size=5):0x000000000000f744>\n",
4235
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f7f8>\n",
4175
4236
  "[16.0, 3.0, 4.0, -5.0, -6.0]\n"
4176
4237
  ]
4177
4238
  },
4178
- "execution_count": 120,
4239
+ "execution_count": 122,
4179
4240
  "metadata": {},
4180
4241
  "output_type": "execute_result"
4181
4242
  }
@@ -4186,18 +4247,18 @@
4186
4247
  },
4187
4248
  {
4188
4249
  "cell_type": "code",
4189
- "execution_count": 121,
4250
+ "execution_count": 123,
4190
4251
  "id": "a8ab2735-74cb-4cfe-a5a2-61bfa90c72ac",
4191
4252
  "metadata": {},
4192
4253
  "outputs": [
4193
4254
  {
4194
4255
  "data": {
4195
4256
  "text/plain": [
4196
- "#<RedAmber::Vector(:double, size=5):0x000000000000f758>\n",
4257
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f80c>\n",
4197
4258
  "[15.0, 3.0, 4.0, -4.0, -5.0]\n"
4198
4259
  ]
4199
4260
  },
4200
- "execution_count": 121,
4261
+ "execution_count": 123,
4201
4262
  "metadata": {},
4202
4263
  "output_type": "execute_result"
4203
4264
  }
@@ -4208,18 +4269,18 @@
4208
4269
  },
4209
4270
  {
4210
4271
  "cell_type": "code",
4211
- "execution_count": 122,
4272
+ "execution_count": 124,
4212
4273
  "id": "3575481c-40ed-405f-a69c-7581d4dce2cf",
4213
4274
  "metadata": {},
4214
4275
  "outputs": [
4215
4276
  {
4216
4277
  "data": {
4217
4278
  "text/plain": [
4218
- "#<RedAmber::Vector(:double, size=5):0x000000000000f76c>\n",
4279
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f820>\n",
4219
4280
  "[15.0, 2.0, 3.0, -4.0, -5.0]\n"
4220
4281
  ]
4221
4282
  },
4222
- "execution_count": 122,
4283
+ "execution_count": 124,
4223
4284
  "metadata": {},
4224
4285
  "output_type": "execute_result"
4225
4286
  }
@@ -4230,18 +4291,18 @@
4230
4291
  },
4231
4292
  {
4232
4293
  "cell_type": "code",
4233
- "execution_count": 123,
4294
+ "execution_count": 125,
4234
4295
  "id": "a86e4c5c-aced-4a88-b692-4e26b90f1653",
4235
4296
  "metadata": {},
4236
4297
  "outputs": [
4237
4298
  {
4238
4299
  "data": {
4239
4300
  "text/plain": [
4240
- "#<RedAmber::Vector(:double, size=5):0x000000000000f780>\n",
4301
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f834>\n",
4241
4302
  "[15.0, 3.0, 4.0, -5.0, -6.0]\n"
4242
4303
  ]
4243
4304
  },
4244
- "execution_count": 123,
4305
+ "execution_count": 125,
4245
4306
  "metadata": {},
4246
4307
  "output_type": "execute_result"
4247
4308
  }
@@ -4252,18 +4313,18 @@
4252
4313
  },
4253
4314
  {
4254
4315
  "cell_type": "code",
4255
- "execution_count": 124,
4316
+ "execution_count": 126,
4256
4317
  "id": "73f51bab-ff46-4b99-96a5-8c6547ad9d35",
4257
4318
  "metadata": {},
4258
4319
  "outputs": [
4259
4320
  {
4260
4321
  "data": {
4261
4322
  "text/plain": [
4262
- "#<RedAmber::Vector(:double, size=5):0x000000000000f794>\n",
4323
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f848>\n",
4263
4324
  "[15.0, 3.0, 3.0, -5.0, -5.0]\n"
4264
4325
  ]
4265
4326
  },
4266
- "execution_count": 124,
4327
+ "execution_count": 126,
4267
4328
  "metadata": {},
4268
4329
  "output_type": "execute_result"
4269
4330
  }
@@ -4274,18 +4335,18 @@
4274
4335
  },
4275
4336
  {
4276
4337
  "cell_type": "code",
4277
- "execution_count": 125,
4338
+ "execution_count": 127,
4278
4339
  "id": "a12c684c-4a63-4dac-a81b-969978812a24",
4279
4340
  "metadata": {},
4280
4341
  "outputs": [
4281
4342
  {
4282
4343
  "data": {
4283
4344
  "text/plain": [
4284
- "#<RedAmber::Vector(:double, size=5):0x000000000000f7a8>\n",
4345
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f85c>\n",
4285
4346
  "[15.0, 2.0, 4.0, -4.0, -6.0]\n"
4286
4347
  ]
4287
4348
  },
4288
- "execution_count": 125,
4349
+ "execution_count": 127,
4289
4350
  "metadata": {},
4290
4351
  "output_type": "execute_result"
4291
4352
  }
@@ -4296,18 +4357,18 @@
4296
4357
  },
4297
4358
  {
4298
4359
  "cell_type": "code",
4299
- "execution_count": 126,
4360
+ "execution_count": 128,
4300
4361
  "id": "17370f2b-0957-411b-8145-56aa9fc956ac",
4301
4362
  "metadata": {},
4302
4363
  "outputs": [
4303
4364
  {
4304
4365
  "data": {
4305
4366
  "text/plain": [
4306
- "#<RedAmber::Vector(:double, size=5):0x000000000000f7bc>\n",
4367
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f870>\n",
4307
4368
  "[15.2, 2.5, 3.5, -4.5, -5.5]\n"
4308
4369
  ]
4309
4370
  },
4310
- "execution_count": 126,
4371
+ "execution_count": 128,
4311
4372
  "metadata": {},
4312
4373
  "output_type": "execute_result"
4313
4374
  }
@@ -4318,18 +4379,18 @@
4318
4379
  },
4319
4380
  {
4320
4381
  "cell_type": "code",
4321
- "execution_count": 127,
4382
+ "execution_count": 129,
4322
4383
  "id": "53072cff-b28b-4672-b30a-8ca37562bc21",
4323
4384
  "metadata": {},
4324
4385
  "outputs": [
4325
4386
  {
4326
4387
  "data": {
4327
4388
  "text/plain": [
4328
- "#<RedAmber::Vector(:double, size=5):0x000000000000f7d0>\n",
4389
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f884>\n",
4329
4390
  "[20.0, 0.0, 0.0, -0.0, -10.0]\n"
4330
4391
  ]
4331
4392
  },
4332
- "execution_count": 127,
4393
+ "execution_count": 129,
4333
4394
  "metadata": {},
4334
4395
  "output_type": "execute_result"
4335
4396
  }
@@ -4358,18 +4419,18 @@
4358
4419
  },
4359
4420
  {
4360
4421
  "cell_type": "code",
4361
- "execution_count": 128,
4422
+ "execution_count": 130,
4362
4423
  "id": "2d4f5853-1ed9-4d8b-87a9-b5c1faac5fae",
4363
4424
  "metadata": {},
4364
4425
  "outputs": [
4365
4426
  {
4366
4427
  "data": {
4367
4428
  "text/plain": [
4368
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f7e4>\n",
4429
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f898>\n",
4369
4430
  "[true, false, nil, false, false, false, nil, false, nil]\n"
4370
4431
  ]
4371
4432
  },
4372
- "execution_count": 128,
4433
+ "execution_count": 130,
4373
4434
  "metadata": {},
4374
4435
  "output_type": "execute_result"
4375
4436
  }
@@ -4383,18 +4444,18 @@
4383
4444
  },
4384
4445
  {
4385
4446
  "cell_type": "code",
4386
- "execution_count": 129,
4447
+ "execution_count": 131,
4387
4448
  "id": "236c9733-8d45-467e-b288-e6c18b9c39d2",
4388
4449
  "metadata": {},
4389
4450
  "outputs": [
4390
4451
  {
4391
4452
  "data": {
4392
4453
  "text/plain": [
4393
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f7f8>\n",
4454
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f8ac>\n",
4394
4455
  "[true, false, nil, true, false, nil, true, false, nil]\n"
4395
4456
  ]
4396
4457
  },
4397
- "execution_count": 129,
4458
+ "execution_count": 131,
4398
4459
  "metadata": {},
4399
4460
  "output_type": "execute_result"
4400
4461
  }
@@ -4406,18 +4467,18 @@
4406
4467
  },
4407
4468
  {
4408
4469
  "cell_type": "code",
4409
- "execution_count": 130,
4470
+ "execution_count": 132,
4410
4471
  "id": "4e984a9c-7d9c-465d-bf26-0c685dedd4bf",
4411
4472
  "metadata": {},
4412
4473
  "outputs": [
4413
4474
  {
4414
4475
  "data": {
4415
4476
  "text/plain": [
4416
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f80c>\n",
4477
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f8c0>\n",
4417
4478
  "[true, false, nil, false, false, nil, nil, nil, nil]\n"
4418
4479
  ]
4419
4480
  },
4420
- "execution_count": 130,
4481
+ "execution_count": 132,
4421
4482
  "metadata": {},
4422
4483
  "output_type": "execute_result"
4423
4484
  }
@@ -4429,18 +4490,18 @@
4429
4490
  },
4430
4491
  {
4431
4492
  "cell_type": "code",
4432
- "execution_count": 131,
4493
+ "execution_count": 133,
4433
4494
  "id": "0120ebf5-355d-41f5-83d5-49b9802f337b",
4434
4495
  "metadata": {},
4435
4496
  "outputs": [
4436
4497
  {
4437
4498
  "data": {
4438
4499
  "text/plain": [
4439
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f820>\n",
4500
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f8d4>\n",
4440
4501
  "[true, true, true, true, false, nil, true, nil, nil]\n"
4441
4502
  ]
4442
4503
  },
4443
- "execution_count": 131,
4504
+ "execution_count": 133,
4444
4505
  "metadata": {},
4445
4506
  "output_type": "execute_result"
4446
4507
  }
@@ -4451,18 +4512,18 @@
4451
4512
  },
4452
4513
  {
4453
4514
  "cell_type": "code",
4454
- "execution_count": 132,
4515
+ "execution_count": 134,
4455
4516
  "id": "24ceee23-79df-4fcd-afd8-f3839a087785",
4456
4517
  "metadata": {},
4457
4518
  "outputs": [
4458
4519
  {
4459
4520
  "data": {
4460
4521
  "text/plain": [
4461
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f834>\n",
4522
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f8e8>\n",
4462
4523
  "[true, true, true, false, false, false, nil, nil, nil]\n"
4463
4524
  ]
4464
4525
  },
4465
- "execution_count": 132,
4526
+ "execution_count": 134,
4466
4527
  "metadata": {},
4467
4528
  "output_type": "execute_result"
4468
4529
  }
@@ -4474,18 +4535,18 @@
4474
4535
  },
4475
4536
  {
4476
4537
  "cell_type": "code",
4477
- "execution_count": 133,
4538
+ "execution_count": 135,
4478
4539
  "id": "c152d04b-71a0-4b18-acd1-b5ab9e413d00",
4479
4540
  "metadata": {},
4480
4541
  "outputs": [
4481
4542
  {
4482
4543
  "data": {
4483
4544
  "text/plain": [
4484
- "#<RedAmber::Vector(:boolean, size=9):0x000000000000f848>\n",
4545
+ "#<RedAmber::Vector(:boolean, size=9):0x000000000000f8fc>\n",
4485
4546
  "[true, true, nil, true, false, nil, nil, nil, nil]\n"
4486
4547
  ]
4487
4548
  },
4488
- "execution_count": 133,
4549
+ "execution_count": 135,
4489
4550
  "metadata": {},
4490
4551
  "output_type": "execute_result"
4491
4552
  }
@@ -4513,18 +4574,18 @@
4513
4574
  },
4514
4575
  {
4515
4576
  "cell_type": "code",
4516
- "execution_count": 134,
4577
+ "execution_count": 136,
4517
4578
  "id": "19558f9e-fdc4-46e5-90d0-724e4e8fbd8e",
4518
4579
  "metadata": {},
4519
4580
  "outputs": [
4520
4581
  {
4521
4582
  "data": {
4522
4583
  "text/plain": [
4523
- "#<RedAmber::Vector(:double, size=5):0x000000000000f85c>\n",
4584
+ "#<RedAmber::Vector(:double, size=5):0x000000000000f910>\n",
4524
4585
  "[3.141592653589793, Infinity, -Infinity, NaN, nil]\n"
4525
4586
  ]
4526
4587
  },
4527
- "execution_count": 134,
4588
+ "execution_count": 136,
4528
4589
  "metadata": {},
4529
4590
  "output_type": "execute_result"
4530
4591
  }
@@ -4535,18 +4596,18 @@
4535
4596
  },
4536
4597
  {
4537
4598
  "cell_type": "code",
4538
- "execution_count": 135,
4599
+ "execution_count": 137,
4539
4600
  "id": "d90a7168-1f87-4363-9589-c1f161babc7d",
4540
4601
  "metadata": {},
4541
4602
  "outputs": [
4542
4603
  {
4543
4604
  "data": {
4544
4605
  "text/plain": [
4545
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f870>\n",
4606
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f924>\n",
4546
4607
  "[true, false, false, false, nil]\n"
4547
4608
  ]
4548
4609
  },
4549
- "execution_count": 135,
4610
+ "execution_count": 137,
4550
4611
  "metadata": {},
4551
4612
  "output_type": "execute_result"
4552
4613
  }
@@ -4557,18 +4618,18 @@
4557
4618
  },
4558
4619
  {
4559
4620
  "cell_type": "code",
4560
- "execution_count": 136,
4621
+ "execution_count": 138,
4561
4622
  "id": "7d88049b-695f-4b0c-a105-8fb5797a58b1",
4562
4623
  "metadata": {},
4563
4624
  "outputs": [
4564
4625
  {
4565
4626
  "data": {
4566
4627
  "text/plain": [
4567
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f884>\n",
4628
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f938>\n",
4568
4629
  "[false, true, true, false, nil]\n"
4569
4630
  ]
4570
4631
  },
4571
- "execution_count": 136,
4632
+ "execution_count": 138,
4572
4633
  "metadata": {},
4573
4634
  "output_type": "execute_result"
4574
4635
  }
@@ -4579,18 +4640,18 @@
4579
4640
  },
4580
4641
  {
4581
4642
  "cell_type": "code",
4582
- "execution_count": 137,
4643
+ "execution_count": 139,
4583
4644
  "id": "7d86a7b5-84bf-4031-9811-4076281920cf",
4584
4645
  "metadata": {},
4585
4646
  "outputs": [
4586
4647
  {
4587
4648
  "data": {
4588
4649
  "text/plain": [
4589
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f898>\n",
4650
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f94c>\n",
4590
4651
  "[false, false, false, true, true]\n"
4591
4652
  ]
4592
4653
  },
4593
- "execution_count": 137,
4654
+ "execution_count": 139,
4594
4655
  "metadata": {},
4595
4656
  "output_type": "execute_result"
4596
4657
  }
@@ -4601,18 +4662,18 @@
4601
4662
  },
4602
4663
  {
4603
4664
  "cell_type": "code",
4604
- "execution_count": 138,
4665
+ "execution_count": 140,
4605
4666
  "id": "d562f826-7a37-4c57-8f92-777555987246",
4606
4667
  "metadata": {},
4607
4668
  "outputs": [
4608
4669
  {
4609
4670
  "data": {
4610
4671
  "text/plain": [
4611
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f8ac>\n",
4672
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f960>\n",
4612
4673
  "[false, false, false, false, true]\n"
4613
4674
  ]
4614
4675
  },
4615
- "execution_count": 138,
4676
+ "execution_count": 140,
4616
4677
  "metadata": {},
4617
4678
  "output_type": "execute_result"
4618
4679
  }
@@ -4623,18 +4684,18 @@
4623
4684
  },
4624
4685
  {
4625
4686
  "cell_type": "code",
4626
- "execution_count": 139,
4687
+ "execution_count": 141,
4627
4688
  "id": "e460dc6b-e48f-4462-9ce8-aa6069ebae27",
4628
4689
  "metadata": {},
4629
4690
  "outputs": [
4630
4691
  {
4631
4692
  "data": {
4632
4693
  "text/plain": [
4633
- "#<RedAmber::Vector(:boolean, size=5):0x000000000000f8c0>\n",
4694
+ "#<RedAmber::Vector(:boolean, size=5):0x000000000000f974>\n",
4634
4695
  "[true, true, true, true, false]\n"
4635
4696
  ]
4636
4697
  },
4637
- "execution_count": 139,
4698
+ "execution_count": 141,
4638
4699
  "metadata": {},
4639
4700
  "output_type": "execute_result"
4640
4701
  }
@@ -4653,8 +4714,8 @@
4653
4714
  },
4654
4715
  {
4655
4716
  "cell_type": "code",
4656
- "execution_count": 140,
4657
- "id": "e0e56ecc-b24c-4a40-b3bb-26bb64eb59ef",
4717
+ "execution_count": 142,
4718
+ "id": "0751e820-a22d-45b5-9005-df523d2353be",
4658
4719
  "metadata": {},
4659
4720
  "outputs": [
4660
4721
  {
@@ -4663,7 +4724,7 @@
4663
4724
  "RedAmber::DataFrame <68 x 9 vectors> <table><tr><th>index</th><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>2</td><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>3</td><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>5</td><td>Adelie</td><td>Torgersen</td><td>36.7</td><td>19.3</td><td>193</td><td>3450</td><td>female</td><td>2007</td></tr><tr><td>7</td><td>Adelie</td><td>Torgersen</td><td>38.9</td><td>17.8</td><td>181</td><td>3625</td><td>female</td><td>2007</td></tr><tr><td colspan='9'>&#8942;</td></tr><tr><td>317</td><td>Gentoo</td><td>Biscoe</td><td>49.4</td><td>15.8</td><td>216</td><td>4925</td><td>male</td><td>2009</td></tr><tr><td>331</td><td>Gentoo</td><td>Biscoe</td><td>50.5</td><td>15.2</td><td>216</td><td>5000</td><td>female</td><td>2009</td></tr><tr><td>337</td><td>Gentoo</td><td>Biscoe</td><td>44.5</td><td>15.7</td><td>217</td><td>4875</td><td><i>(nil)</i></td><td>2009</td></tr></table>"
4664
4725
  ],
4665
4726
  "text/plain": [
4666
- "#<RedAmber::DataFrame : 68 x 9 Vectors, 0x000000000000f8d4>\n",
4727
+ "#<RedAmber::DataFrame : 68 x 9 Vectors, 0x000000000000f988>\n",
4667
4728
  " index species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
4668
4729
  " <uint16> <string> <string> <double> <double> <uint8> ... <uint16>\n",
4669
4730
  " 1 2 Adelie Torgersen 39.5 17.4 186 ... 2007\n",
@@ -4677,7 +4738,7 @@
4677
4738
  "68 337 Gentoo Biscoe 44.5 15.7 217 ... 2009\n"
4678
4739
  ]
4679
4740
  },
4680
- "execution_count": 140,
4741
+ "execution_count": 142,
4681
4742
  "metadata": {},
4682
4743
  "output_type": "execute_result"
4683
4744
  }
@@ -4685,11 +4746,8 @@
4685
4746
  "source": [
4686
4747
  "# prime-th rows ... Don't ask me what it means.\n",
4687
4748
  "require 'prime'\n",
4688
- "penguins_with_index =\n",
4689
- " penguins.assign do\n",
4690
- " { index: Vector.new(penguins.indices) + 1 }\n",
4691
- " end.pick { [keys[-1], keys[0..-2]] }\n",
4692
- "penguins_with_index.slice { Vector.new(Prime.each(size).to_a) - 1 }"
4749
+ "penguins.assign_left(:index, Vector.new(penguins.indices) + 1) # since 0.2.0\n",
4750
+ " .slice { Vector.new(Prime.each(size).to_a) - 1 }"
4693
4751
  ]
4694
4752
  },
4695
4753
  {
@@ -4710,7 +4768,7 @@
4710
4768
  },
4711
4769
  {
4712
4770
  "cell_type": "code",
4713
- "execution_count": 141,
4771
+ "execution_count": 143,
4714
4772
  "id": "b2a118fa-f3c0-4f31-9b45-6db27ccbebe6",
4715
4773
  "metadata": {},
4716
4774
  "outputs": [
@@ -4720,7 +4778,7 @@
4720
4778
  "RedAmber::DataFrame <35 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>37.8</td><td>17.1</td><td>186</td><td>3300</td><td><i>(nil)</i></td><td>2007</td></tr><tr><td>Adelie</td><td>Biscoe</td><td>37.8</td><td>18.3</td><td>174</td><td>3400</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Dream</td><td>39.5</td><td>16.7</td><td>178</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>48.5</td><td>15.0</td><td>219</td><td>4850</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.5</td><td>15.2</td><td>216</td><td>5000</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>46.8</td><td>14.3</td><td>215</td><td>4850</td><td>female</td><td>2009</td></tr></table>"
4721
4779
  ],
4722
4780
  "text/plain": [
4723
- "#<RedAmber::DataFrame : 35 x 8 Vectors, 0x000000000000f8e8>\n",
4781
+ "#<RedAmber::DataFrame : 35 x 8 Vectors, 0x000000000000f99c>\n",
4724
4782
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
4725
4783
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
4726
4784
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -4734,7 +4792,7 @@
4734
4792
  "35 Gentoo Biscoe 46.8 14.3 215 ... 2009\n"
4735
4793
  ]
4736
4794
  },
4737
- "execution_count": 141,
4795
+ "execution_count": 143,
4738
4796
  "metadata": {},
4739
4797
  "output_type": "execute_result"
4740
4798
  }
@@ -4762,7 +4820,7 @@
4762
4820
  },
4763
4821
  {
4764
4822
  "cell_type": "code",
4765
- "execution_count": 142,
4823
+ "execution_count": 144,
4766
4824
  "id": "a721804b-006e-44c6-8d38-885eae747eaa",
4767
4825
  "metadata": {},
4768
4826
  "outputs": [
@@ -4772,7 +4830,7 @@
4772
4830
  "RedAmber::DataFrame <344 x 8 vectors> <table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181</td><td>3750</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186</td><td>3800</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195</td><td>3250</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td><i>(nil)</i></td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222</td><td>5750</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212</td><td>5200</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213</td><td>5400</td><td>male</td><td>2009</td></tr></table>"
4773
4831
  ],
4774
4832
  "text/plain": [
4775
- "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f21c>\n",
4833
+ "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f2bc>\n",
4776
4834
  " species island bill_length_mm bill_depth_mm flipper_length_mm ... year\n",
4777
4835
  " <string> <string> <double> <double> <uint8> ... <uint16>\n",
4778
4836
  " 1 Adelie Torgersen 39.1 18.7 181 ... 2007\n",
@@ -4786,7 +4844,7 @@
4786
4844
  "344 Gentoo Biscoe 49.9 16.1 213 ... 2009\n"
4787
4845
  ]
4788
4846
  },
4789
- "execution_count": 142,
4847
+ "execution_count": 144,
4790
4848
  "metadata": {},
4791
4849
  "output_type": "execute_result"
4792
4850
  }
@@ -4798,7 +4856,7 @@
4798
4856
  },
4799
4857
  {
4800
4858
  "cell_type": "code",
4801
- "execution_count": 143,
4859
+ "execution_count": 145,
4802
4860
  "id": "e4c9f70c-a4b1-4a81-bbc4-e9b14a6b6cb0",
4803
4861
  "metadata": {},
4804
4862
  "outputs": [
@@ -4806,7 +4864,7 @@
4806
4864
  "name": "stdout",
4807
4865
  "output_type": "stream",
4808
4866
  "text": [
4809
- "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f21c>\n",
4867
+ "#<RedAmber::DataFrame : 344 x 8 Vectors, 0x000000000000f2bc>\n",
4810
4868
  "Vectors : 5 numeric, 3 strings\n",
4811
4869
  "# key type level data_preview\n",
4812
4870
  "1 :species string 3 {\"Adelie\"=>152, \"Chinstrap\"=>68, \"Gentoo\"=>124}\n",
@@ -4824,7 +4882,7 @@
4824
4882
  },
4825
4883
  {
4826
4884
  "cell_type": "code",
4827
- "execution_count": 144,
4885
+ "execution_count": 146,
4828
4886
  "id": "2786e9a7-e321-43c5-b56e-9f2ca9d62f8b",
4829
4887
  "metadata": {},
4830
4888
  "outputs": [
@@ -4844,7 +4902,7 @@
4844
4902
  "8 :year uint16 3 {2007=>110, 2008=>114, 2009=>120}\n"
4845
4903
  ]
4846
4904
  },
4847
- "execution_count": 144,
4905
+ "execution_count": 146,
4848
4906
  "metadata": {},
4849
4907
  "output_type": "execute_result"
4850
4908
  }
@@ -4855,7 +4913,7 @@
4855
4913
  },
4856
4914
  {
4857
4915
  "cell_type": "code",
4858
- "execution_count": 145,
4916
+ "execution_count": 147,
4859
4917
  "id": "b00c858b-b14a-492b-bc22-d6a707bcc1ba",
4860
4918
  "metadata": {},
4861
4919
  "outputs": [
@@ -4865,7 +4923,7 @@
4865
4923
  "\"Table\""
4866
4924
  ]
4867
4925
  },
4868
- "execution_count": 145,
4926
+ "execution_count": 147,
4869
4927
  "metadata": {},
4870
4928
  "output_type": "execute_result"
4871
4929
  }
@@ -4896,7 +4954,7 @@
4896
4954
  },
4897
4955
  {
4898
4956
  "cell_type": "code",
4899
- "execution_count": 146,
4957
+ "execution_count": 148,
4900
4958
  "id": "13569004-bb23-45fa-8d11-fe5f367641a6",
4901
4959
  "metadata": {},
4902
4960
  "outputs": [
@@ -4906,14 +4964,14 @@
4906
4964
  "RedAmber::DataFrame <2 x 2 vectors> <table><tr><th>unnamed2</th><th>unnamed1</th></tr><tr><td>1</td><td>3</td></tr><tr><td>2</td><td>4</td></tr></table>"
4907
4965
  ],
4908
4966
  "text/plain": [
4909
- "#<RedAmber::DataFrame : 2 x 2 Vectors, 0x000000000000f8fc>\n",
4967
+ "#<RedAmber::DataFrame : 2 x 2 Vectors, 0x000000000000f9b0>\n",
4910
4968
  " unnamed2 unnamed1\n",
4911
4969
  " <uint8> <uint8>\n",
4912
4970
  "1 1 3\n",
4913
4971
  "2 2 4\n"
4914
4972
  ]
4915
4973
  },
4916
- "execution_count": 146,
4974
+ "execution_count": 148,
4917
4975
  "metadata": {},
4918
4976
  "output_type": "execute_result"
4919
4977
  }
@@ -4944,18 +5002,18 @@
4944
5002
  },
4945
5003
  {
4946
5004
  "cell_type": "code",
4947
- "execution_count": 147,
5005
+ "execution_count": 149,
4948
5006
  "id": "ee602e52-7988-4fab-b5e3-c466acf01c98",
4949
5007
  "metadata": {},
4950
5008
  "outputs": [
4951
5009
  {
4952
5010
  "data": {
4953
5011
  "text/plain": [
4954
- "#<RedAmber::Group:0x000000000000f910\n",
5012
+ "#<RedAmber::Group:0x000000000000f9c4\n",
4955
5013
  "{:species=>{\"Adelie\"=>152, \"Chinstrap\"=>68, \"Gentoo\"=>124}}>"
4956
5014
  ]
4957
5015
  },
4958
- "execution_count": 147,
5016
+ "execution_count": 149,
4959
5017
  "metadata": {},
4960
5018
  "output_type": "execute_result"
4961
5019
  }
@@ -4976,7 +5034,7 @@
4976
5034
  },
4977
5035
  {
4978
5036
  "cell_type": "code",
4979
- "execution_count": 148,
5037
+ "execution_count": 150,
4980
5038
  "id": "20b23ada-b895-4921-b57b-8d46b451e494",
4981
5039
  "metadata": {},
4982
5040
  "outputs": [
@@ -4986,7 +5044,7 @@
4986
5044
  "RedAmber::DataFrame <3 x 8 vectors> <table><tr><th>species</th><th>count(island)</th><th>count(bill_length_mm)</th><th>count(bill_depth_mm)</th><th>count(flipper_length_mm)</th><th>count(body_mass_g)</th><th>count(sex)</th><th>count(year)</th></tr><tr><td>Adelie</td><td>152</td><td>151</td><td>151</td><td>151</td><td>151</td><td>146</td><td>152</td></tr><tr><td>Chinstrap</td><td>68</td><td>68</td><td>68</td><td>68</td><td>68</td><td>68</td><td>68</td></tr><tr><td>Gentoo</td><td>124</td><td>123</td><td>123</td><td>123</td><td>123</td><td>119</td><td>124</td></tr></table>"
4987
5045
  ],
4988
5046
  "text/plain": [
4989
- "#<RedAmber::DataFrame : 3 x 8 Vectors, 0x000000000000f924>\n",
5047
+ "#<RedAmber::DataFrame : 3 x 8 Vectors, 0x000000000000f9d8>\n",
4990
5048
  " species count(island) count(bill_length_mm) count(bill_depth_mm) ... count(year)\n",
4991
5049
  " <string> <int64> <int64> <int64> ... <int64>\n",
4992
5050
  "1 Adelie 152 151 151 ... 152\n",
@@ -4994,7 +5052,7 @@
4994
5052
  "3 Gentoo 124 123 123 ... 124\n"
4995
5053
  ]
4996
5054
  },
4997
- "execution_count": 148,
5055
+ "execution_count": 150,
4998
5056
  "metadata": {},
4999
5057
  "output_type": "execute_result"
5000
5058
  }
@@ -5013,7 +5071,7 @@
5013
5071
  },
5014
5072
  {
5015
5073
  "cell_type": "code",
5016
- "execution_count": 149,
5074
+ "execution_count": 151,
5017
5075
  "id": "e6936488-9f23-47bd-8492-537c5be1afb3",
5018
5076
  "metadata": {},
5019
5077
  "outputs": [
@@ -5023,7 +5081,7 @@
5023
5081
  "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>species</th><th>count</th></tr><tr><td>Adelie</td><td>151</td></tr><tr><td>Chinstrap</td><td>68</td></tr><tr><td>Gentoo</td><td>123</td></tr></table>"
5024
5082
  ],
5025
5083
  "text/plain": [
5026
- "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f938>\n",
5084
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000f9ec>\n",
5027
5085
  " species count\n",
5028
5086
  " <string> <int64>\n",
5029
5087
  "1 Adelie 151\n",
@@ -5031,7 +5089,7 @@
5031
5089
  "3 Gentoo 123\n"
5032
5090
  ]
5033
5091
  },
5034
- "execution_count": 149,
5092
+ "execution_count": 151,
5035
5093
  "metadata": {},
5036
5094
  "output_type": "execute_result"
5037
5095
  }
@@ -5070,7 +5128,7 @@
5070
5128
  },
5071
5129
  {
5072
5130
  "cell_type": "code",
5073
- "execution_count": 150,
5131
+ "execution_count": 152,
5074
5132
  "id": "913f576b-ec86-4e94-af05-7c656ea24cc2",
5075
5133
  "metadata": {},
5076
5134
  "outputs": [
@@ -5080,15 +5138,15 @@
5080
5138
  "RedAmber::DataFrame <3 x 3 vectors> <table><tr><th>species</th><th>count</th><th>mean(body_mass_g)</th></tr><tr><td>Adelie</td><td>152</td><td>3700.662251655629</td></tr><tr><td>Chinstrap</td><td>68</td><td>3733.0882352941176</td></tr><tr><td>Gentoo</td><td>124</td><td>5076.016260162602</td></tr></table>"
5081
5139
  ],
5082
5140
  "text/plain": [
5083
- "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000f94c>\n",
5141
+ "#<RedAmber::DataFrame : 3 x 3 Vectors, 0x000000000000fa00>\n",
5084
5142
  " species count mean(body_mass_g)\n",
5085
5143
  " <string> <int64> <double>\n",
5086
- "1 Adelie 152 3700.7\n",
5087
- "2 Chinstrap 68 3733.1\n",
5088
- "3 Gentoo 124 5076.0\n"
5144
+ "1 Adelie 152 3700.66\n",
5145
+ "2 Chinstrap 68 3733.09\n",
5146
+ "3 Gentoo 124 5076.02\n"
5089
5147
  ]
5090
5148
  },
5091
- "execution_count": 150,
5149
+ "execution_count": 152,
5092
5150
  "metadata": {},
5093
5151
  "output_type": "execute_result"
5094
5152
  }
@@ -5107,7 +5165,7 @@
5107
5165
  },
5108
5166
  {
5109
5167
  "cell_type": "code",
5110
- "execution_count": 151,
5168
+ "execution_count": 153,
5111
5169
  "id": "67c7fc55-7b30-469c-bd0c-cda5732863fe",
5112
5170
  "metadata": {},
5113
5171
  "outputs": [
@@ -5117,15 +5175,15 @@
5117
5175
  "RedAmber::DataFrame <3 x 7 vectors> <table><tr><th>species</th><th>count</th><th>mean(bill_length_mm)</th><th>mean(bill_depth_mm)</th><th>mean(flipper_length_mm)</th><th>mean(body_mass_g)</th><th>mean(year)</th></tr><tr><td>Adelie</td><td>152</td><td>38.79139072847684</td><td>18.346357615894032</td><td>189.95364238410596</td><td>3700.662251655629</td><td>2008.0131578947369</td></tr><tr><td>Chinstrap</td><td>68</td><td>48.83382352941177</td><td>18.420588235294115</td><td>195.8235294117647</td><td>3733.0882352941176</td><td>2007.9705882352941</td></tr><tr><td>Gentoo</td><td>124</td><td>47.504878048780476</td><td>14.982113821138206</td><td>217.1869918699187</td><td>5076.016260162602</td><td>2008.0806451612902</td></tr></table>"
5118
5176
  ],
5119
5177
  "text/plain": [
5120
- "#<RedAmber::DataFrame : 3 x 7 Vectors, 0x000000000000f960>\n",
5178
+ "#<RedAmber::DataFrame : 3 x 7 Vectors, 0x000000000000fa14>\n",
5121
5179
  " species count mean(bill_length_mm) mean(bill_depth_mm) ... mean(year)\n",
5122
5180
  " <string> <int64> <double> <double> ... <double>\n",
5123
- "1 Adelie 152 38.8 18.3 ... 2008.0\n",
5124
- "2 Chinstrap 68 48.8 18.4 ... 2008.0\n",
5125
- "3 Gentoo 124 47.5 15.0 ... 2008.1\n"
5181
+ "1 Adelie 152 38.79 18.35 ... 2008.01\n",
5182
+ "2 Chinstrap 68 48.83 18.42 ... 2007.97\n",
5183
+ "3 Gentoo 124 47.5 14.98 ... 2008.08\n"
5126
5184
  ]
5127
5185
  },
5128
- "execution_count": 151,
5186
+ "execution_count": 153,
5129
5187
  "metadata": {},
5130
5188
  "output_type": "execute_result"
5131
5189
  }
@@ -5156,18 +5214,18 @@
5156
5214
  },
5157
5215
  {
5158
5216
  "cell_type": "code",
5159
- "execution_count": 152,
5217
+ "execution_count": 154,
5160
5218
  "id": "013f2db6-3e1d-481f-a908-57605729b51d",
5161
5219
  "metadata": {},
5162
5220
  "outputs": [
5163
5221
  {
5164
5222
  "data": {
5165
5223
  "text/plain": [
5166
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f974>\n",
5224
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000fa28>\n",
5167
5225
  "[nil, 1, 2, 3, 4]\n"
5168
5226
  ]
5169
5227
  },
5170
- "execution_count": 152,
5228
+ "execution_count": 154,
5171
5229
  "metadata": {},
5172
5230
  "output_type": "execute_result"
5173
5231
  }
@@ -5179,18 +5237,18 @@
5179
5237
  },
5180
5238
  {
5181
5239
  "cell_type": "code",
5182
- "execution_count": 153,
5240
+ "execution_count": 155,
5183
5241
  "id": "7625acd7-d6a0-4775-b5e0-ca87f95f4f28",
5184
5242
  "metadata": {},
5185
5243
  "outputs": [
5186
5244
  {
5187
5245
  "data": {
5188
5246
  "text/plain": [
5189
- "#<RedAmber::Vector(:uint8, size=5):0x000000000000f988>\n",
5247
+ "#<RedAmber::Vector(:uint8, size=5):0x000000000000fa3c>\n",
5190
5248
  "[3, 4, 5, nil, nil]\n"
5191
5249
  ]
5192
5250
  },
5193
- "execution_count": 153,
5251
+ "execution_count": 155,
5194
5252
  "metadata": {},
5195
5253
  "output_type": "execute_result"
5196
5254
  }
@@ -5201,18 +5259,18 @@
5201
5259
  },
5202
5260
  {
5203
5261
  "cell_type": "code",
5204
- "execution_count": 154,
5262
+ "execution_count": 156,
5205
5263
  "id": "34a9ac2a-2e3f-44bc-8ba7-c4487dc3528e",
5206
5264
  "metadata": {},
5207
5265
  "outputs": [
5208
5266
  {
5209
5267
  "data": {
5210
5268
  "text/plain": [
5211
- "#<RedAmber::Vector(:double, size=5):0x000000000000f99c>\n",
5269
+ "#<RedAmber::Vector(:double, size=5):0x000000000000fa50>\n",
5212
5270
  "[NaN, 1.0, 2.0, 3.0, 4.0]\n"
5213
5271
  ]
5214
5272
  },
5215
- "execution_count": 154,
5273
+ "execution_count": 156,
5216
5274
  "metadata": {},
5217
5275
  "output_type": "execute_result"
5218
5276
  }
@@ -5256,7 +5314,7 @@
5256
5314
  },
5257
5315
  {
5258
5316
  "cell_type": "code",
5259
- "execution_count": 155,
5317
+ "execution_count": 157,
5260
5318
  "id": "24774ccc-8f0f-4ce4-9ba0-bebed8781c38",
5261
5319
  "metadata": {},
5262
5320
  "outputs": [
@@ -5266,7 +5324,7 @@
5266
5324
  "RedAmber::DataFrame <4 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>4</td><td>10</td><td>100</td></tr><tr><td>5</td><td>-1</td><td>50</td></tr><tr><td>6</td><td>-1</td><td>-30</td></tr><tr><td>7</td><td>-1</td><td>-50</td></tr></table>"
5267
5325
  ],
5268
5326
  "text/plain": [
5269
- "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000f9b0>\n",
5327
+ "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000fa64>\n",
5270
5328
  " AAA BBB CCC\n",
5271
5329
  " <uint8> <int8> <int8>\n",
5272
5330
  "1 4 10 100\n",
@@ -5275,7 +5333,7 @@
5275
5333
  "4 7 -1 -50\n"
5276
5334
  ]
5277
5335
  },
5278
- "execution_count": 155,
5336
+ "execution_count": 157,
5279
5337
  "metadata": {},
5280
5338
  "output_type": "execute_result"
5281
5339
  }
@@ -5286,7 +5344,7 @@
5286
5344
  " \"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50] # You can omit {}\n",
5287
5345
  ")\n",
5288
5346
  "\n",
5289
- "df.assign( BBB: df[:BBB].replace(df[:AAA] >= 5, -1) )"
5347
+ "df.assign(BBB: df[:BBB].replace(df[:AAA] >= 5, -1))"
5290
5348
  ]
5291
5349
  },
5292
5350
  {
@@ -5299,7 +5357,7 @@
5299
5357
  },
5300
5358
  {
5301
5359
  "cell_type": "code",
5302
- "execution_count": 156,
5360
+ "execution_count": 158,
5303
5361
  "id": "3f97227b-cbee-4515-b76d-3514401967d9",
5304
5362
  "metadata": {},
5305
5363
  "outputs": [
@@ -5309,7 +5367,7 @@
5309
5367
  "RedAmber::DataFrame <4 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>4</td><td>10</td><td>100</td></tr><tr><td>5</td><td>-1</td><td>-2</td></tr><tr><td>6</td><td>-1</td><td>-2</td></tr><tr><td>7</td><td>-1</td><td>-2</td></tr></table>"
5310
5368
  ],
5311
5369
  "text/plain": [
5312
- "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000f9c4>\n",
5370
+ "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000fa78>\n",
5313
5371
  " AAA BBB CCC\n",
5314
5372
  " <uint8> <int8> <int8>\n",
5315
5373
  "1 4 10 100\n",
@@ -5318,7 +5376,7 @@
5318
5376
  "4 7 -1 -2\n"
5319
5377
  ]
5320
5378
  },
5321
- "execution_count": 156,
5379
+ "execution_count": 158,
5322
5380
  "metadata": {},
5323
5381
  "output_type": "execute_result"
5324
5382
  }
@@ -5340,7 +5398,7 @@
5340
5398
  "tags": []
5341
5399
  },
5342
5400
  "source": [
5343
- "## 53. From the Pandas cookbook (splitting)\n",
5401
+ "## 53. From the Pandas cookbook (Splitting)\n",
5344
5402
  "Split a frame with a boolean criterion\n",
5345
5403
  "\n",
5346
5404
  "https://pandas.pydata.org/docs/user_guide/cookbook.html#splitting"
@@ -5374,7 +5432,7 @@
5374
5432
  },
5375
5433
  {
5376
5434
  "cell_type": "code",
5377
- "execution_count": 157,
5435
+ "execution_count": 159,
5378
5436
  "id": "b08e74d4-aba8-4fb5-a815-5d5384e92f81",
5379
5437
  "metadata": {},
5380
5438
  "outputs": [
@@ -5384,14 +5442,14 @@
5384
5442
  "RedAmber::DataFrame <2 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>4</td><td>10</td><td>100</td></tr><tr><td>5</td><td>20</td><td>50</td></tr></table>"
5385
5443
  ],
5386
5444
  "text/plain": [
5387
- "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000f9d8>\n",
5445
+ "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000fa8c>\n",
5388
5446
  " AAA BBB CCC\n",
5389
5447
  " <uint8> <uint8> <int8>\n",
5390
5448
  "1 4 10 100\n",
5391
5449
  "2 5 20 50\n"
5392
5450
  ]
5393
5451
  },
5394
- "execution_count": 157,
5452
+ "execution_count": 159,
5395
5453
  "metadata": {},
5396
5454
  "output_type": "execute_result"
5397
5455
  }
@@ -5403,12 +5461,13 @@
5403
5461
  " \"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]\n",
5404
5462
  ")\n",
5405
5463
  "\n",
5406
- "df.slice(df[:AAA] <= 5)"
5464
+ "df.slice(df[:AAA] <= 5)\n",
5465
+ "# df[df[:AAA] <= 5] # is also OK"
5407
5466
  ]
5408
5467
  },
5409
5468
  {
5410
5469
  "cell_type": "code",
5411
- "execution_count": 158,
5470
+ "execution_count": 160,
5412
5471
  "id": "caa72796-ff7e-4275-849f-04698114ee08",
5413
5472
  "metadata": {},
5414
5473
  "outputs": [
@@ -5418,14 +5477,14 @@
5418
5477
  "RedAmber::DataFrame <2 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>6</td><td>30</td><td>-30</td></tr><tr><td>7</td><td>40</td><td>-50</td></tr></table>"
5419
5478
  ],
5420
5479
  "text/plain": [
5421
- "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000f9ec>\n",
5480
+ "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000faa0>\n",
5422
5481
  " AAA BBB CCC\n",
5423
5482
  " <uint8> <uint8> <int8>\n",
5424
5483
  "1 6 30 -30\n",
5425
5484
  "2 7 40 -50\n"
5426
5485
  ]
5427
5486
  },
5428
- "execution_count": 158,
5487
+ "execution_count": 160,
5429
5488
  "metadata": {},
5430
5489
  "output_type": "execute_result"
5431
5490
  }
@@ -5434,6 +5493,1276 @@
5434
5493
  "df.remove(df[:AAA] <= 5)\n",
5435
5494
  "# df.slice(df[:AAA] > 5) # do the same thing"
5436
5495
  ]
5496
+ },
5497
+ {
5498
+ "cell_type": "markdown",
5499
+ "id": "ba7588e9-bbac-4547-a56c-3eea9f819460",
5500
+ "metadata": {
5501
+ "tags": []
5502
+ },
5503
+ "source": [
5504
+ "## 54. From the Pandas cookbook (Building criteria)\n",
5505
+ "Split a frame with a boolean criterion\n",
5506
+ "\n",
5507
+ "https://pandas.pydata.org/docs/user_guide/cookbook.html#building-criteria"
5508
+ ]
5509
+ },
5510
+ {
5511
+ "cell_type": "markdown",
5512
+ "id": "c6d01b08-1af7-47b0-a9e4-f27ab41fe24e",
5513
+ "metadata": {},
5514
+ "source": [
5515
+ "```python\n",
5516
+ "# by Python Pandas\n",
5517
+ "df = pd.DataFrame(\n",
5518
+ " {\"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]}\n",
5519
+ ")\n",
5520
+ "\n",
5521
+ "# and\n",
5522
+ "df.loc[(df[\"BBB\"] < 25) & (df[\"CCC\"] >= -40), \"AAA\"]\n",
5523
+ "\n",
5524
+ "# returns a series =>\n",
5525
+ "0 4\n",
5526
+ "1 5\n",
5527
+ "Name: AAA, dtype: int64\n",
5528
+ "\n",
5529
+ "# or\n",
5530
+ "df.loc[(df[\"BBB\"] > 25) | (df[\"CCC\"] >= -40), \"AAA\"]\n",
5531
+ "\n",
5532
+ "# returns a series =>\n",
5533
+ "0 4\n",
5534
+ "1 5\n",
5535
+ "2 6\n",
5536
+ "3 7\n",
5537
+ "Name: AAA, dtype: int64\n",
5538
+ "```"
5539
+ ]
5540
+ },
5541
+ {
5542
+ "cell_type": "code",
5543
+ "execution_count": 161,
5544
+ "id": "46066e96-91e5-4a96-9840-7e4ce6f06818",
5545
+ "metadata": {},
5546
+ "outputs": [
5547
+ {
5548
+ "data": {
5549
+ "text/html": [
5550
+ "RedAmber::DataFrame <2 x 1 vector> <table><tr><th>AAA</th></tr><tr><td>4</td></tr><tr><td>5</td></tr></table>"
5551
+ ],
5552
+ "text/plain": [
5553
+ "#<RedAmber::DataFrame : 2 x 1 Vector, 0x000000000000fab4>\n",
5554
+ " AAA\n",
5555
+ " <uint8>\n",
5556
+ "1 4\n",
5557
+ "2 5\n"
5558
+ ]
5559
+ },
5560
+ "execution_count": 161,
5561
+ "metadata": {},
5562
+ "output_type": "execute_result"
5563
+ }
5564
+ ],
5565
+ "source": [
5566
+ "# Red Amber\n",
5567
+ "df = DataFrame.new(\n",
5568
+ " # You can omit {}\n",
5569
+ " \"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]\n",
5570
+ ")\n",
5571
+ "\n",
5572
+ "df.slice( (df[:BBB] < 25) & (df[:CCC] >= 40) ).pick(:AAA)"
5573
+ ]
5574
+ },
5575
+ {
5576
+ "cell_type": "code",
5577
+ "execution_count": 162,
5578
+ "id": "dc8304c2-be28-420e-b2d5-a4b636eaac8b",
5579
+ "metadata": {},
5580
+ "outputs": [
5581
+ {
5582
+ "data": {
5583
+ "text/html": [
5584
+ "RedAmber::DataFrame <4 x 1 vector> <table><tr><th>AAA</th></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr></table>"
5585
+ ],
5586
+ "text/plain": [
5587
+ "#<RedAmber::DataFrame : 4 x 1 Vector, 0x000000000000fac8>\n",
5588
+ " AAA\n",
5589
+ " <uint8>\n",
5590
+ "1 4\n",
5591
+ "2 5\n",
5592
+ "3 6\n",
5593
+ "4 7\n"
5594
+ ]
5595
+ },
5596
+ "execution_count": 162,
5597
+ "metadata": {},
5598
+ "output_type": "execute_result"
5599
+ }
5600
+ ],
5601
+ "source": [
5602
+ "df.slice( (df[:BBB] > 25) | (df[:CCC] >= 40) ).pick(:AAA)\n",
5603
+ "# df[ (df[:BBB] > 25) | (df[:CCC] >= 40) ][:AAA)] # also OK"
5604
+ ]
5605
+ },
5606
+ {
5607
+ "cell_type": "markdown",
5608
+ "id": "79616705-f497-4bb4-ad1d-5ee93c0093ce",
5609
+ "metadata": {},
5610
+ "source": [
5611
+ "```python\n",
5612
+ "# by Python Pandas\n",
5613
+ "# or (with assignment)\n",
5614
+ "df.loc[(df[\"BBB\"] > 25) | (df[\"CCC\"] >= 75), \"AAA\"] = 0.1\n",
5615
+ "df\n",
5616
+ "\n",
5617
+ "# returns a dataframe =>\n",
5618
+ " AAA BBB CCC\n",
5619
+ "0 0.1 10 100\n",
5620
+ "1 5.0 20 50\n",
5621
+ "2 0.1 30 -30\n",
5622
+ "3 0.1 40 -50\n",
5623
+ "```"
5624
+ ]
5625
+ },
5626
+ {
5627
+ "cell_type": "code",
5628
+ "execution_count": 163,
5629
+ "id": "7ab3b044-5a0f-4a38-8a42-aed1228b6462",
5630
+ "metadata": {},
5631
+ "outputs": [
5632
+ {
5633
+ "data": {
5634
+ "text/html": [
5635
+ "RedAmber::DataFrame <4 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>0.1</td><td>10</td><td>100</td></tr><tr><td>5.0</td><td>20</td><td>50</td></tr><tr><td>0.1</td><td>30</td><td>-30</td></tr><tr><td>0.1</td><td>40</td><td>-50</td></tr></table>"
5636
+ ],
5637
+ "text/plain": [
5638
+ "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000fadc>\n",
5639
+ " AAA BBB CCC\n",
5640
+ " <double> <uint8> <int8>\n",
5641
+ "1 0.1 10 100\n",
5642
+ "2 5.0 20 50\n",
5643
+ "3 0.1 30 -30\n",
5644
+ "4 0.1 40 -50\n"
5645
+ ]
5646
+ },
5647
+ "execution_count": 163,
5648
+ "metadata": {},
5649
+ "output_type": "execute_result"
5650
+ }
5651
+ ],
5652
+ "source": [
5653
+ "# df.assign(AAA: df[:AAA].replace((df[:BBB] > 25) | (df[:CCC] >= 75), 0.1)) # by one liner\n",
5654
+ "\n",
5655
+ "booleans = (df[:BBB] > 25) | (df[:CCC] >= 75)\n",
5656
+ "replaced = df[:AAA].replace(booleans, 0.1)\n",
5657
+ "df.assign(AAA: replaced)"
5658
+ ]
5659
+ },
5660
+ {
5661
+ "cell_type": "markdown",
5662
+ "id": "6cd4a47c-f619-462b-94c0-4c488761d5b0",
5663
+ "metadata": {},
5664
+ "source": [
5665
+ "```python\n",
5666
+ "# by Python Pandas\n",
5667
+ "# Select rows with data closest to certain value using argsort\n",
5668
+ "df = pd.DataFrame(\n",
5669
+ " {\"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]}\n",
5670
+ ")\n",
5671
+ "aValue = 43.0\n",
5672
+ "df.loc[(df.CCC - aValue).abs().argsort()]\n",
5673
+ "\n",
5674
+ "# returns a dataframe =>\n",
5675
+ " AAA BBB CCC\n",
5676
+ "1 5 20 50\n",
5677
+ "0 4 10 100\n",
5678
+ "2 6 30 -30\n",
5679
+ "3 7 40 -50\n",
5680
+ "```"
5681
+ ]
5682
+ },
5683
+ {
5684
+ "cell_type": "code",
5685
+ "execution_count": 164,
5686
+ "id": "13cb1d45-2d13-4708-ad76-57efd72e609b",
5687
+ "metadata": {},
5688
+ "outputs": [
5689
+ {
5690
+ "data": {
5691
+ "text/html": [
5692
+ "RedAmber::DataFrame <4 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>5</td><td>20</td><td>50</td></tr><tr><td>4</td><td>10</td><td>100</td></tr><tr><td>6</td><td>30</td><td>-30</td></tr><tr><td>7</td><td>40</td><td>-50</td></tr></table>"
5693
+ ],
5694
+ "text/plain": [
5695
+ "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000faf0>\n",
5696
+ " AAA BBB CCC\n",
5697
+ " <uint8> <uint8> <int8>\n",
5698
+ "1 5 20 50\n",
5699
+ "2 4 10 100\n",
5700
+ "3 6 30 -30\n",
5701
+ "4 7 40 -50\n"
5702
+ ]
5703
+ },
5704
+ "execution_count": 164,
5705
+ "metadata": {},
5706
+ "output_type": "execute_result"
5707
+ }
5708
+ ],
5709
+ "source": [
5710
+ "a_value = 43\n",
5711
+ "df[(df[:CCC] - a_value).abs.sort_indexes]\n",
5712
+ "# df.slice (df[:CCC] - a_value).abs.sort_indexes # also OK"
5713
+ ]
5714
+ },
5715
+ {
5716
+ "cell_type": "markdown",
5717
+ "id": "9330117b-40e0-4574-8900-7857622daad4",
5718
+ "metadata": {},
5719
+ "source": [
5720
+ "```python\n",
5721
+ "# by Python Pandas\n",
5722
+ "# Dynamically reduce a list of criteria using a binary operators\n",
5723
+ "df = pd.DataFrame(\n",
5724
+ " {\"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]}\n",
5725
+ ")\n",
5726
+ "Crit1 = df.AAA <= 5.5\n",
5727
+ "Crit2 = df.BBB == 10.0\n",
5728
+ "Crit3 = df.CCC > -40.0\n",
5729
+ "AllCrit = Crit1 & Crit2 & Crit3\n",
5730
+ "\n",
5731
+ "import functools\n",
5732
+ "\n",
5733
+ "CritList = [Crit1, Crit2, Crit3]\n",
5734
+ "AllCrit = functools.reduce(lambda x, y: x & y, CritList)\n",
5735
+ "df[AllCrit]\n",
5736
+ "\n",
5737
+ "# returns a dataframe =>\n",
5738
+ " AAA BBB CCC\n",
5739
+ "0 4 10 100\n",
5740
+ "```"
5741
+ ]
5742
+ },
5743
+ {
5744
+ "cell_type": "code",
5745
+ "execution_count": 165,
5746
+ "id": "40336e62-d411-4655-8ec5-8d30876ada47",
5747
+ "metadata": {},
5748
+ "outputs": [
5749
+ {
5750
+ "data": {
5751
+ "text/html": [
5752
+ "RedAmber::DataFrame <1 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>4</td><td>10</td><td>100</td></tr></table>"
5753
+ ],
5754
+ "text/plain": [
5755
+ "#<RedAmber::DataFrame : 1 x 3 Vectors, 0x000000000000fb04>\n",
5756
+ " AAA BBB CCC\n",
5757
+ " <uint8> <uint8> <int8>\n",
5758
+ "1 4 10 100\n"
5759
+ ]
5760
+ },
5761
+ "execution_count": 165,
5762
+ "metadata": {},
5763
+ "output_type": "execute_result"
5764
+ }
5765
+ ],
5766
+ "source": [
5767
+ "crit1 = df[:AAA] <= 5.5\n",
5768
+ "crit2 = df[:BBB] == 10.0\n",
5769
+ "crit3 = df[:CCC] >= -40.0\n",
5770
+ "df[crit1 & crit2 & crit3]"
5771
+ ]
5772
+ },
5773
+ {
5774
+ "cell_type": "markdown",
5775
+ "id": "62e03375-573d-4368-a26e-1be3a4d58cf8",
5776
+ "metadata": {
5777
+ "tags": []
5778
+ },
5779
+ "source": [
5780
+ "## 55. From the Pandas cookbook (Dataframes)\n",
5781
+ "\n",
5782
+ "https://pandas.pydata.org/docs/user_guide/cookbook.html#dataframes"
5783
+ ]
5784
+ },
5785
+ {
5786
+ "cell_type": "raw",
5787
+ "id": "55cee55f-7caf-423c-863a-187f96fa3072",
5788
+ "metadata": {},
5789
+ "source": [
5790
+ "```python\n",
5791
+ "# by Python Pandas\n",
5792
+ "# Using both row labels and value conditionals\n",
5793
+ "df = pd.DataFrame(\n",
5794
+ " {\"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]}\n",
5795
+ ")\n",
5796
+ "df[(df.AAA <= 6) & (df.index.isin([0, 2, 4]))] \n",
5797
+ "\n",
5798
+ "# returns =>\n",
5799
+ " AAA BBB CCC\n",
5800
+ "0 4 10 100\n",
5801
+ "2 6 30 -30\n",
5802
+ "```"
5803
+ ]
5804
+ },
5805
+ {
5806
+ "cell_type": "code",
5807
+ "execution_count": 166,
5808
+ "id": "272396f6-f689-43d5-ba34-e7c6ac0e1c28",
5809
+ "metadata": {},
5810
+ "outputs": [
5811
+ {
5812
+ "data": {
5813
+ "text/html": [
5814
+ "RedAmber::DataFrame <2 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>4</td><td>10</td><td>100</td></tr><tr><td>6</td><td>30</td><td>-30</td></tr></table>"
5815
+ ],
5816
+ "text/plain": [
5817
+ "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000fb18>\n",
5818
+ " AAA BBB CCC\n",
5819
+ " <uint8> <uint8> <int8>\n",
5820
+ "1 4 10 100\n",
5821
+ "2 6 30 -30\n"
5822
+ ]
5823
+ },
5824
+ "execution_count": 166,
5825
+ "metadata": {},
5826
+ "output_type": "execute_result"
5827
+ }
5828
+ ],
5829
+ "source": [
5830
+ "# Red Amber\n",
5831
+ "df = DataFrame.new(\n",
5832
+ " \"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]\n",
5833
+ ")\n",
5834
+ "\n",
5835
+ "df[(df[:AAA] <= 6) & df.indices.map { |i| [0, 2, 4].include? i }]"
5836
+ ]
5837
+ },
5838
+ {
5839
+ "cell_type": "markdown",
5840
+ "id": "26bfea62-12e4-4a01-976e-6184ecafa2fd",
5841
+ "metadata": {},
5842
+ "source": [
5843
+ "```python\n",
5844
+ "# by Python Pandas\n",
5845
+ "# Use loc for label-oriented slicing and iloc positional slicing GH2904\n",
5846
+ "df = pd.DataFrame(\n",
5847
+ " {\"AAA\": [4, 5, 6, 7], \"BBB\": [10, 20, 30, 40], \"CCC\": [100, 50, -30, -50]},\n",
5848
+ " index=[\"foo\", \"bar\", \"boo\", \"kar\"],\n",
5849
+ ")\n",
5850
+ "\n",
5851
+ "# There are 2 explicit slicing methods, with a third general case\n",
5852
+ "# 1. Positional-oriented (Python slicing style : exclusive of end)\n",
5853
+ "# 2. Label-oriented (Non-Python slicing style : inclusive of end)\n",
5854
+ "# 3. General (Either slicing style : depends on if the slice contains labels or positions)\n",
5855
+ "\n",
5856
+ "df.loc[\"bar\":\"kar\"] # Label\n",
5857
+ "# returns =>\n",
5858
+ " AAA BBB CCC\n",
5859
+ "bar 5 20 50\n",
5860
+ "boo 6 30 -30\n",
5861
+ "kar 7 40 -50\n",
5862
+ "\n",
5863
+ "# Generic\n",
5864
+ "df[0:3]\n",
5865
+ "# returns =>\n",
5866
+ " AAA BBB CCC\n",
5867
+ "foo 4 10 100\n",
5868
+ "bar 5 20 50\n",
5869
+ "boo 6 30 -30\n",
5870
+ "\n",
5871
+ "df[\"bar\":\"kar\"]\n",
5872
+ "# returns =>\n",
5873
+ " AAA BBB CCC\n",
5874
+ "bar 5 20 50\n",
5875
+ "boo 6 30 -30\n",
5876
+ "kar 7 40 -50\n",
5877
+ "```"
5878
+ ]
5879
+ },
5880
+ {
5881
+ "cell_type": "code",
5882
+ "execution_count": 167,
5883
+ "id": "ccabc137-33d3-47e8-ad09-88a285765380",
5884
+ "metadata": {},
5885
+ "outputs": [
5886
+ {
5887
+ "data": {
5888
+ "text/html": [
5889
+ "RedAmber::DataFrame <4 x 4 vectors> <table><tr><th>index</th><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>foo</td><td>4</td><td>10</td><td>100</td></tr><tr><td>bar</td><td>5</td><td>20</td><td>50</td></tr><tr><td>boo</td><td>6</td><td>30</td><td>-30</td></tr><tr><td>kar</td><td>7</td><td>40</td><td>-50</td></tr></table>"
5890
+ ],
5891
+ "text/plain": [
5892
+ "#<RedAmber::DataFrame : 4 x 4 Vectors, 0x000000000000fb2c>\n",
5893
+ " index AAA BBB CCC\n",
5894
+ " <string> <uint8> <uint8> <int8>\n",
5895
+ "1 foo 4 10 100\n",
5896
+ "2 bar 5 20 50\n",
5897
+ "3 boo 6 30 -30\n",
5898
+ "4 kar 7 40 -50\n"
5899
+ ]
5900
+ },
5901
+ "execution_count": 167,
5902
+ "metadata": {},
5903
+ "output_type": "execute_result"
5904
+ }
5905
+ ],
5906
+ "source": [
5907
+ "# Red Amber does not have row index. Use a new column as indexes.\n",
5908
+ "labeled = df.assign_left(index: %w[foo bar boo kar])\n",
5909
+ "# labeled = df.assign(index: %w[foo bar boo kar]).pick { [keys[-1], keys[0...-1]] } # until v0.1.8"
5910
+ ]
5911
+ },
5912
+ {
5913
+ "cell_type": "code",
5914
+ "execution_count": 168,
5915
+ "id": "f0871131-725e-4e33-a3cc-1fccd610a4b2",
5916
+ "metadata": {},
5917
+ "outputs": [
5918
+ {
5919
+ "data": {
5920
+ "text/html": [
5921
+ "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>index</th><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>bar</td><td>5</td><td>20</td><td>50</td></tr><tr><td>boo</td><td>6</td><td>30</td><td>-30</td></tr><tr><td>kar</td><td>7</td><td>40</td><td>-50</td></tr></table>"
5922
+ ],
5923
+ "text/plain": [
5924
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000fb40>\n",
5925
+ " index AAA BBB CCC\n",
5926
+ " <string> <uint8> <uint8> <int8>\n",
5927
+ "1 bar 5 20 50\n",
5928
+ "2 boo 6 30 -30\n",
5929
+ "3 kar 7 40 -50\n"
5930
+ ]
5931
+ },
5932
+ "execution_count": 168,
5933
+ "metadata": {},
5934
+ "output_type": "execute_result"
5935
+ }
5936
+ ],
5937
+ "source": [
5938
+ "labeled[1..3]"
5939
+ ]
5940
+ },
5941
+ {
5942
+ "cell_type": "code",
5943
+ "execution_count": 169,
5944
+ "id": "dffc55f0-481e-4076-aa3f-89f1294655b9",
5945
+ "metadata": {},
5946
+ "outputs": [
5947
+ {
5948
+ "data": {
5949
+ "text/html": [
5950
+ "RedAmber::DataFrame <3 x 4 vectors> <table><tr><th>index</th><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>bar</td><td>5</td><td>20</td><td>50</td></tr><tr><td>boo</td><td>6</td><td>30</td><td>-30</td></tr><tr><td>kar</td><td>7</td><td>40</td><td>-50</td></tr></table>"
5951
+ ],
5952
+ "text/plain": [
5953
+ "#<RedAmber::DataFrame : 3 x 4 Vectors, 0x000000000000fb54>\n",
5954
+ " index AAA BBB CCC\n",
5955
+ " <string> <uint8> <uint8> <int8>\n",
5956
+ "1 bar 5 20 50\n",
5957
+ "2 boo 6 30 -30\n",
5958
+ "3 kar 7 40 -50\n"
5959
+ ]
5960
+ },
5961
+ "execution_count": 169,
5962
+ "metadata": {},
5963
+ "output_type": "execute_result"
5964
+ }
5965
+ ],
5966
+ "source": [
5967
+ "labeled.slice do\n",
5968
+ " v = v(:index)\n",
5969
+ " v.index(\"bar\")..v.index(\"kar\")\n",
5970
+ "end"
5971
+ ]
5972
+ },
5973
+ {
5974
+ "cell_type": "markdown",
5975
+ "id": "d72b067c-d15d-499b-8d2a-8b79f5287e97",
5976
+ "metadata": {},
5977
+ "source": [
5978
+ "```python\n",
5979
+ "# by Python Pandas\n",
5980
+ "# Ambiguity arises when an index consists of integers with a non-zero start or non-unit increment.\n",
5981
+ "df2 = pd.DataFrame(data=data, index=[1, 2, 3, 4]) # Note index starts at 1.\n",
5982
+ "\n",
5983
+ "df2.iloc[1:3] # Position-oriented\n",
5984
+ "# returns =>\n",
5985
+ " AAA BBB CCC\n",
5986
+ "2 5 20 50\n",
5987
+ "3 6 30 -30\n",
5988
+ "\n",
5989
+ "df2.loc[1:3] # Label-oriented\n",
5990
+ "# returns =>\n",
5991
+ " AAA BBB CCC\n",
5992
+ "1 4 10 100\n",
5993
+ "2 5 20 50\n",
5994
+ "3 6 30 -30\n",
5995
+ "```"
5996
+ ]
5997
+ },
5998
+ {
5999
+ "cell_type": "code",
6000
+ "execution_count": 170,
6001
+ "id": "f023a23a-ea1d-415c-b395-195801351433",
6002
+ "metadata": {},
6003
+ "outputs": [],
6004
+ "source": [
6005
+ "# RedAmber only have an implicit integer index 0...size,\n",
6006
+ "# does not happen any ambiguity unless you create a new column and use it for indexes :-)."
6007
+ ]
6008
+ },
6009
+ {
6010
+ "cell_type": "markdown",
6011
+ "id": "5cada26c-a37a-4eff-bfa5-66635d278671",
6012
+ "metadata": {},
6013
+ "source": [
6014
+ "```python\n",
6015
+ "# by Python Pandas\n",
6016
+ "# Using inverse operator (~) to take the complement of a mask\n",
6017
+ "df[~((df.AAA <= 6) & (df.index.isin([0, 2, 4])))]\n",
6018
+ "\n",
6019
+ "# returns =>\n",
6020
+ " AAA BBB CCC\n",
6021
+ "1 5 20 50\n",
6022
+ "3 7 40 -50\n",
6023
+ "```"
6024
+ ]
6025
+ },
6026
+ {
6027
+ "cell_type": "code",
6028
+ "execution_count": 171,
6029
+ "id": "29b81efe-5b9b-4640-89b1-422ae94cf01d",
6030
+ "metadata": {},
6031
+ "outputs": [
6032
+ {
6033
+ "data": {
6034
+ "text/html": [
6035
+ "RedAmber::DataFrame <2 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>5</td><td>20</td><td>50</td></tr><tr><td>7</td><td>40</td><td>-50</td></tr></table>"
6036
+ ],
6037
+ "text/plain": [
6038
+ "#<RedAmber::DataFrame : 2 x 3 Vectors, 0x000000000000fb68>\n",
6039
+ " AAA BBB CCC\n",
6040
+ " <uint8> <uint8> <int8>\n",
6041
+ "1 5 20 50\n",
6042
+ "2 7 40 -50\n"
6043
+ ]
6044
+ },
6045
+ "execution_count": 171,
6046
+ "metadata": {},
6047
+ "output_type": "execute_result"
6048
+ }
6049
+ ],
6050
+ "source": [
6051
+ "# RedAmber offers #! method for boolean Vector.\n",
6052
+ "df[!((df[:AAA] <= 6) & df.indices.map { |i| [0, 2, 4].include? i })]\n",
6053
+ "\n",
6054
+ "# or\n",
6055
+ "# df[((df[:AAA] <= 6) & df.indices.map { |i| [0, 2, 4].include? i }).invert]"
6056
+ ]
6057
+ },
6058
+ {
6059
+ "cell_type": "markdown",
6060
+ "id": "4fb7103f-00ed-4e74-81e5-7d480004e681",
6061
+ "metadata": {},
6062
+ "source": [
6063
+ "If you have `nil` in your data, consider #primitive_invert for consistent result. See example #26."
6064
+ ]
6065
+ },
6066
+ {
6067
+ "cell_type": "markdown",
6068
+ "id": "a1780372-b566-41f5-84d6-6213e3f9efa7",
6069
+ "metadata": {
6070
+ "tags": []
6071
+ },
6072
+ "source": [
6073
+ "## 56. From the Pandas cookbook (New columns)\n",
6074
+ "\n",
6075
+ "https://pandas.pydata.org/docs/user_guide/cookbook.html#new-columns"
6076
+ ]
6077
+ },
6078
+ {
6079
+ "cell_type": "markdown",
6080
+ "id": "5f5f9d8b-7550-44f6-9f79-64f940f5000a",
6081
+ "metadata": {},
6082
+ "source": [
6083
+ "```python\n",
6084
+ "# by Python Pandas\n",
6085
+ "# Efficiently and dynamically creating new columns using applymap\n",
6086
+ "df = pd.DataFrame({\"AAA\": [1, 2, 1, 3], \"BBB\": [1, 1, 2, 2], \"CCC\": [2, 1, 3, 1]})\n",
6087
+ "df\n",
6088
+ "\n",
6089
+ "# returns =>\n",
6090
+ " AAA BBB CCC\n",
6091
+ "0 1 1 2\n",
6092
+ "1 2 1 1\n",
6093
+ "2 1 2 3\n",
6094
+ "3 3 2 1\n",
6095
+ "\n",
6096
+ "source_cols = df.columns # Or some subset would work too\n",
6097
+ "new_cols = [str(x) + \"_cat\" for x in source_cols]\n",
6098
+ "categories = {1: \"Alpha\", 2: \"Beta\", 3: \"Charlie\"}\n",
6099
+ "df[new_cols] = df[source_cols].applymap(categories.get)\n",
6100
+ "df\n",
6101
+ "\n",
6102
+ "# returns =>\n",
6103
+ " AAA BBB CCC AAA_cat BBB_cat CCC_cat\n",
6104
+ "0 1 1 2 Alpha Alpha Beta\n",
6105
+ "1 2 1 1 Beta Alpha Alpha\n",
6106
+ "2 1 2 3 Alpha Beta Charlie\n",
6107
+ "3 3 2 1 Charlie Beta Alpha\n",
6108
+ "```"
6109
+ ]
6110
+ },
6111
+ {
6112
+ "cell_type": "code",
6113
+ "execution_count": 172,
6114
+ "id": "265d63e6-0c01-4080-8d5b-c3153be595a5",
6115
+ "metadata": {},
6116
+ "outputs": [
6117
+ {
6118
+ "data": {
6119
+ "text/html": [
6120
+ "RedAmber::DataFrame <4 x 3 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th></tr><tr><td>1</td><td>1</td><td>2</td></tr><tr><td>2</td><td>1</td><td>1</td></tr><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>3</td><td>2</td><td>1</td></tr></table>"
6121
+ ],
6122
+ "text/plain": [
6123
+ "#<RedAmber::DataFrame : 4 x 3 Vectors, 0x000000000000fb7c>\n",
6124
+ " AAA BBB CCC\n",
6125
+ " <uint8> <uint8> <uint8>\n",
6126
+ "1 1 1 2\n",
6127
+ "2 2 1 1\n",
6128
+ "3 1 2 3\n",
6129
+ "4 3 2 1\n"
6130
+ ]
6131
+ },
6132
+ "execution_count": 172,
6133
+ "metadata": {},
6134
+ "output_type": "execute_result"
6135
+ }
6136
+ ],
6137
+ "source": [
6138
+ "# RedAmber\n",
6139
+ "df = DataFrame.new({\"AAA\": [1, 2, 1, 3], \"BBB\": [1, 1, 2, 2], \"CCC\": [2, 1, 3, 1]})"
6140
+ ]
6141
+ },
6142
+ {
6143
+ "cell_type": "code",
6144
+ "execution_count": 173,
6145
+ "id": "4be751d7-69a8-4400-b094-9932bf3d577b",
6146
+ "metadata": {},
6147
+ "outputs": [
6148
+ {
6149
+ "data": {
6150
+ "text/html": [
6151
+ "RedAmber::DataFrame <4 x 6 vectors> <table><tr><th>AAA</th><th>BBB</th><th>CCC</th><th>AAA_cat</th><th>BBB_cat</th><th>CCC_cat</th></tr><tr><td>1</td><td>1</td><td>2</td><td>Alpha</td><td>Alpha</td><td>Beta</td></tr><tr><td>2</td><td>1</td><td>1</td><td>Beta</td><td>Alpha</td><td>Alpha</td></tr><tr><td>1</td><td>2</td><td>3</td><td>Alpha</td><td>Beta</td><td>Charlie</td></tr><tr><td>3</td><td>2</td><td>1</td><td>Charlie</td><td>Beta</td><td>Alpha</td></tr></table>"
6152
+ ],
6153
+ "text/plain": [
6154
+ "#<RedAmber::DataFrame : 4 x 6 Vectors, 0x000000000000fb90>\n",
6155
+ " AAA BBB CCC AAA_cat BBB_cat CCC_cat\n",
6156
+ " <uint8> <uint8> <uint8> <string> <string> <string>\n",
6157
+ "1 1 1 2 Alpha Alpha Beta\n",
6158
+ "2 2 1 1 Beta Alpha Alpha\n",
6159
+ "3 1 2 3 Alpha Beta Charlie\n",
6160
+ "4 3 2 1 Charlie Beta Alpha\n"
6161
+ ]
6162
+ },
6163
+ "execution_count": 173,
6164
+ "metadata": {},
6165
+ "output_type": "execute_result"
6166
+ }
6167
+ ],
6168
+ "source": [
6169
+ "categories = {1 => \"Alpha\", 2 => \"Beta\", 3 => \"Charlie\"}\n",
6170
+ "\n",
6171
+ "# Creating a Hash from keys\n",
6172
+ "df.assign do\n",
6173
+ " keys.each_with_object({}) do |key, h|\n",
6174
+ " h[\"#{key}_cat\"] = v(key).to_a.map { |x| categories[x] }\n",
6175
+ " end\n",
6176
+ "end\n",
6177
+ "\n",
6178
+ "# Creating an Array from vectors, from v0.2.0\n",
6179
+ "df.assign do\n",
6180
+ " vectors.map do |v|\n",
6181
+ " [\"#{v.key}_cat\", v.to_a.map { |x| categories[x] } ]\n",
6182
+ " end\n",
6183
+ "end"
6184
+ ]
6185
+ },
6186
+ {
6187
+ "cell_type": "markdown",
6188
+ "id": "aa8214e5-a897-406e-bb5e-95ad9fea0cdd",
6189
+ "metadata": {},
6190
+ "source": [
6191
+ "```python\n",
6192
+ "# by Python Pandas\n",
6193
+ "# Keep other columns when using min() with groupby\n",
6194
+ "df = pd.DataFrame(\n",
6195
+ " {\"AAA\": [1, 1, 1, 2, 2, 2, 3, 3], \"BBB\": [2, 1, 3, 4, 5, 1, 2, 3]}\n",
6196
+ ")\n",
6197
+ "df\n",
6198
+ "\n",
6199
+ "# returns =>\n",
6200
+ " AAA BBB\n",
6201
+ "0 1 2\n",
6202
+ "1 1 1\n",
6203
+ "2 1 3\n",
6204
+ "3 2 4\n",
6205
+ "4 2 5\n",
6206
+ "5 2 1\n",
6207
+ "6 3 2\n",
6208
+ "7 3 3\n",
6209
+ "\n",
6210
+ "# Method 1 : idxmin() to get the index of the minimums\n",
6211
+ "df.loc[df.groupby(\"AAA\")[\"BBB\"].idxmin()]\n",
6212
+ "\n",
6213
+ "# returns =>\n",
6214
+ " AAA BBB\n",
6215
+ "1 1 1\n",
6216
+ "5 2 1\n",
6217
+ "6 3 2\n",
6218
+ "\n",
6219
+ "# Method 2 : sort then take first of each\n",
6220
+ "df.sort_values(by=\"BBB\").groupby(\"AAA\", as_index=False).first()\n",
6221
+ "\n",
6222
+ "# returns =>\n",
6223
+ " AAA BBB\n",
6224
+ "0 1 1\n",
6225
+ "1 2 1\n",
6226
+ "2 3 2\n",
6227
+ "\n",
6228
+ "# Notice the same results, with the exception of the index.\n",
6229
+ "```"
6230
+ ]
6231
+ },
6232
+ {
6233
+ "cell_type": "code",
6234
+ "execution_count": 174,
6235
+ "id": "5dd5f7dc-21a3-4397-9ef6-c5bc630ff858",
6236
+ "metadata": {},
6237
+ "outputs": [
6238
+ {
6239
+ "data": {
6240
+ "text/html": [
6241
+ "RedAmber::DataFrame <8 x 2 vectors> <table><tr><th>AAA</th><th>BBB</th></tr><tr><td>1</td><td>2</td></tr><tr><td>1</td><td>1</td></tr><tr><td>1</td><td>3</td></tr><tr><td>2</td><td>4</td></tr><tr><td>2</td><td>5</td></tr><tr><td>2</td><td>1</td></tr><tr><td>3</td><td>2</td></tr><tr><td>3</td><td>3</td></tr></table>"
6242
+ ],
6243
+ "text/plain": [
6244
+ "#<RedAmber::DataFrame : 8 x 2 Vectors, 0x000000000000fba4>\n",
6245
+ " AAA BBB\n",
6246
+ " <uint8> <uint8>\n",
6247
+ "1 1 2\n",
6248
+ "2 1 1\n",
6249
+ "3 1 3\n",
6250
+ "4 2 4\n",
6251
+ "5 2 5\n",
6252
+ ": : :\n",
6253
+ "7 3 2\n",
6254
+ "8 3 3\n"
6255
+ ]
6256
+ },
6257
+ "execution_count": 174,
6258
+ "metadata": {},
6259
+ "output_type": "execute_result"
6260
+ }
6261
+ ],
6262
+ "source": [
6263
+ "# RedAmber\n",
6264
+ "df = DataFrame.new(AAA: [1, 1, 1, 2, 2, 2, 3, 3], BBB: [2, 1, 3, 4, 5, 1, 2, 3])"
6265
+ ]
6266
+ },
6267
+ {
6268
+ "cell_type": "code",
6269
+ "execution_count": 175,
6270
+ "id": "000c1632-8faf-407f-bb7d-e583ef573442",
6271
+ "metadata": {},
6272
+ "outputs": [
6273
+ {
6274
+ "data": {
6275
+ "text/html": [
6276
+ "RedAmber::DataFrame <3 x 2 vectors> <table><tr><th>AAA</th><th>min(BBB)</th></tr><tr><td>1</td><td>1</td></tr><tr><td>2</td><td>1</td></tr><tr><td>3</td><td>2</td></tr></table>"
6277
+ ],
6278
+ "text/plain": [
6279
+ "#<RedAmber::DataFrame : 3 x 2 Vectors, 0x000000000000fbb8>\n",
6280
+ " AAA min(BBB)\n",
6281
+ " <uint8> <uint8>\n",
6282
+ "1 1 1\n",
6283
+ "2 2 1\n",
6284
+ "3 3 2\n"
6285
+ ]
6286
+ },
6287
+ "execution_count": 175,
6288
+ "metadata": {},
6289
+ "output_type": "execute_result"
6290
+ }
6291
+ ],
6292
+ "source": [
6293
+ "df.group(:AAA).min\n",
6294
+ "\n",
6295
+ "# Add `.rename { [keys[-1], :BBB] }` if you want."
6296
+ ]
6297
+ },
6298
+ {
6299
+ "cell_type": "markdown",
6300
+ "id": "5aa5b4ab-2fb3-4a22-804e-55d6351dd427",
6301
+ "metadata": {
6302
+ "tags": []
6303
+ },
6304
+ "source": [
6305
+ "## 57. Summary/describe"
6306
+ ]
6307
+ },
6308
+ {
6309
+ "cell_type": "code",
6310
+ "execution_count": 176,
6311
+ "id": "610be94e-b7ce-43f5-a5c1-ddef745d6bac",
6312
+ "metadata": {},
6313
+ "outputs": [
6314
+ {
6315
+ "data": {
6316
+ "text/html": [
6317
+ "RedAmber::DataFrame <5 x 9 vectors> <table><tr><th>variables</th><th>count</th><th>mean</th><th>std</th><th>min</th><th>25%</th><th>median</th><th>75%</th><th>max</th></tr><tr><td>bill_length_mm</td><td>342</td><td>43.92192982456141</td><td>5.4595837139265315</td><td>32.1</td><td>39.225</td><td>44.382000000000005</td><td>48.5</td><td>59.6</td></tr><tr><td>bill_depth_mm</td><td>342</td><td>17.151169590643274</td><td>1.9747931568167814</td><td>13.1</td><td>15.6</td><td>17.32</td><td>18.7</td><td>21.5</td></tr><tr><td>flipper_length_mm</td><td>342</td><td>200.91520467836258</td><td>14.061713679356888</td><td>172.0</td><td>190.0</td><td>197.0</td><td>213.0</td><td>231.0</td></tr><tr><td>body_mass_g</td><td>342</td><td>4201.754385964912</td><td>801.9545356980955</td><td>2700.0</td><td>3550.0</td><td>4031.5</td><td>4750.0</td><td>6300.0</td></tr><tr><td>year</td><td>344</td><td>2008.0290697674418</td><td>0.8183559254837041</td><td>2007.0</td><td>2007.0</td><td>2008.0</td><td>2009.0</td><td>2009.0</td></tr></table>"
6318
+ ],
6319
+ "text/plain": [
6320
+ "#<RedAmber::DataFrame : 5 x 9 Vectors, 0x000000000000fbcc>\n",
6321
+ " variables count mean std min 25% median ... max\n",
6322
+ " <dictionary> <uint16> <double> <double> <double> <double> <double> ... <double>\n",
6323
+ "1 bill_length_mm 342 43.92 5.46 32.1 39.23 44.38 ... 59.6\n",
6324
+ "2 bill_depth_mm 342 17.15 1.97 13.1 15.6 17.32 ... 21.5\n",
6325
+ "3 flipper_length_mm 342 200.92 14.06 172.0 190.0 197.0 ... 231.0\n",
6326
+ "4 body_mass_g 342 4201.75 801.95 2700.0 3550.0 4031.5 ... 6300.0\n",
6327
+ "5 year 344 2008.03 0.82 2007.0 2007.0 2008.0 ... 2009.0\n"
6328
+ ]
6329
+ },
6330
+ "execution_count": 176,
6331
+ "metadata": {},
6332
+ "output_type": "execute_result"
6333
+ }
6334
+ ],
6335
+ "source": [
6336
+ "penguins.summary\n",
6337
+ "# or\n",
6338
+ "penguins.describe"
6339
+ ]
6340
+ },
6341
+ {
6342
+ "cell_type": "markdown",
6343
+ "id": "982a735e-c887-4c15-be82-4f3a28138fa7",
6344
+ "metadata": {},
6345
+ "source": [
6346
+ "## 58. Quantile"
6347
+ ]
6348
+ },
6349
+ {
6350
+ "cell_type": "markdown",
6351
+ "id": "d0832e36-7281-4d3c-a35d-5a89aecc341e",
6352
+ "metadata": {},
6353
+ "source": [
6354
+ "`Vector#quantile(prob)` returns quantile at probability `prob`.\n",
6355
+ "\n",
6356
+ "(Since 0.2.0)"
6357
+ ]
6358
+ },
6359
+ {
6360
+ "cell_type": "code",
6361
+ "execution_count": 177,
6362
+ "id": "88c6ed5d-b41e-4c17-b93f-47ce15702974",
6363
+ "metadata": {},
6364
+ "outputs": [
6365
+ {
6366
+ "data": {
6367
+ "text/plain": [
6368
+ "17.3"
6369
+ ]
6370
+ },
6371
+ "execution_count": 177,
6372
+ "metadata": {},
6373
+ "output_type": "execute_result"
6374
+ }
6375
+ ],
6376
+ "source": [
6377
+ "penguins[:bill_depth_mm].quantile # default value is prob = 0.5"
6378
+ ]
6379
+ },
6380
+ {
6381
+ "cell_type": "markdown",
6382
+ "id": "07368c10-65d4-4081-ace7-12bebca493c2",
6383
+ "metadata": {},
6384
+ "source": [
6385
+ "`Vector#quantiles` accepts an Array for multiple quantiles. Returns a DataFrame."
6386
+ ]
6387
+ },
6388
+ {
6389
+ "cell_type": "code",
6390
+ "execution_count": 178,
6391
+ "id": "3cbac413-fc36-42a2-abd3-1343e3b88467",
6392
+ "metadata": {},
6393
+ "outputs": [
6394
+ {
6395
+ "data": {
6396
+ "text/html": [
6397
+ "RedAmber::DataFrame <2 x 2 vectors> <table><tr><th>probs</th><th>quantiles</th></tr><tr><td>0.05</td><td>13.9</td></tr><tr><td>0.95</td><td>20.0</td></tr></table>"
6398
+ ],
6399
+ "text/plain": [
6400
+ "#<RedAmber::DataFrame : 2 x 2 Vectors, 0x000000000000fbe0>\n",
6401
+ " probs quantiles\n",
6402
+ " <double> <double>\n",
6403
+ "1 0.05 13.9\n",
6404
+ "2 0.95 20.0\n"
6405
+ ]
6406
+ },
6407
+ "execution_count": 178,
6408
+ "metadata": {},
6409
+ "output_type": "execute_result"
6410
+ }
6411
+ ],
6412
+ "source": [
6413
+ "penguins[:bill_depth_mm].quantiles([0.05, 0.95])"
6414
+ ]
6415
+ },
6416
+ {
6417
+ "cell_type": "markdown",
6418
+ "id": "54800864-c33d-4fec-818b-1a12a7e4d015",
6419
+ "metadata": {},
6420
+ "source": [
6421
+ "## 59. Transpose"
6422
+ ]
6423
+ },
6424
+ {
6425
+ "cell_type": "markdown",
6426
+ "id": "517281cf-3f29-4725-816c-5a866e9cc9cc",
6427
+ "metadata": {},
6428
+ "source": [
6429
+ "`DataFrame#transpose` creates transposed DataFrame for wide type dataframe.\n",
6430
+ "\n",
6431
+ "(Since 0.2.0)"
6432
+ ]
6433
+ },
6434
+ {
6435
+ "cell_type": "code",
6436
+ "execution_count": 179,
6437
+ "id": "a2fe66cb-e86d-402e-8724-eced2420e3d0",
6438
+ "metadata": {},
6439
+ "outputs": [
6440
+ {
6441
+ "data": {
6442
+ "text/html": [
6443
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>Year</th><th>Audi</th><th>BMW</th><th>BMW_MINI</th><th>Mercedes-Benz</th><th>VW</th></tr><tr><td>2021</td><td>22535</td><td>35905</td><td>18211</td><td>51722</td><td>35215</td></tr><tr><td>2020</td><td>22304</td><td>35712</td><td>20196</td><td>57041</td><td>36576</td></tr><tr><td>2019</td><td>24222</td><td>46814</td><td>23813</td><td>66553</td><td>46794</td></tr><tr><td>2018</td><td>26473</td><td>50982</td><td>25984</td><td>67554</td><td>51961</td></tr><tr><td>2017</td><td>28336</td><td>52527</td><td>25427</td><td>68221</td><td>49040</td></tr></table>"
6444
+ ],
6445
+ "text/plain": [
6446
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fbf4>\n",
6447
+ " Year Audi BMW BMW_MINI Mercedes-Benz VW\n",
6448
+ " <int64> <int64> <int64> <int64> <int64> <int64>\n",
6449
+ "1 2021 22535 35905 18211 51722 35215\n",
6450
+ "2 2020 22304 35712 20196 57041 36576\n",
6451
+ "3 2019 24222 46814 23813 66553 46794\n",
6452
+ "4 2018 26473 50982 25984 67554 51961\n",
6453
+ "5 2017 28336 52527 25427 68221 49040\n"
6454
+ ]
6455
+ },
6456
+ "execution_count": 179,
6457
+ "metadata": {},
6458
+ "output_type": "execute_result"
6459
+ }
6460
+ ],
6461
+ "source": [
6462
+ "import_cars = RedAmber::DataFrame.load('../test/entity/import_cars.tsv')"
6463
+ ]
6464
+ },
6465
+ {
6466
+ "cell_type": "code",
6467
+ "execution_count": 180,
6468
+ "id": "b4ef2b48-33de-4982-b082-1966749fcf65",
6469
+ "metadata": {},
6470
+ "outputs": [
6471
+ {
6472
+ "data": {
6473
+ "text/html": [
6474
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>name</th><th>2021</th><th>2020</th><th>2019</th><th>2018</th><th>2017</th></tr><tr><td>Audi</td><td>22535</td><td>22304</td><td>24222</td><td>26473</td><td>28336</td></tr><tr><td>BMW</td><td>35905</td><td>35712</td><td>46814</td><td>50982</td><td>52527</td></tr><tr><td>BMW_MINI</td><td>18211</td><td>20196</td><td>23813</td><td>25984</td><td>25427</td></tr><tr><td>Mercedes-Benz</td><td>51722</td><td>57041</td><td>66553</td><td>67554</td><td>68221</td></tr><tr><td>VW</td><td>35215</td><td>36576</td><td>46794</td><td>51961</td><td>49040</td></tr></table>"
6475
+ ],
6476
+ "text/plain": [
6477
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fc08>\n",
6478
+ " name 2021 2020 2019 2018 2017\n",
6479
+ " <dictionary> <uint16> <uint16> <uint32> <uint32> <uint32>\n",
6480
+ "1 Audi 22535 22304 24222 26473 28336\n",
6481
+ "2 BMW 35905 35712 46814 50982 52527\n",
6482
+ "3 BMW_MINI 18211 20196 23813 25984 25427\n",
6483
+ "4 Mercedes-Benz 51722 57041 66553 67554 68221\n",
6484
+ "5 VW 35215 36576 46794 51961 49040\n"
6485
+ ]
6486
+ },
6487
+ "execution_count": 180,
6488
+ "metadata": {},
6489
+ "output_type": "execute_result"
6490
+ }
6491
+ ],
6492
+ "source": [
6493
+ "import_cars.transpose"
6494
+ ]
6495
+ },
6496
+ {
6497
+ "cell_type": "markdown",
6498
+ "id": "556e5c2d-bb01-4e16-9bf6-bdfd302d5b2a",
6499
+ "metadata": {},
6500
+ "source": [
6501
+ "You can specify index column by option `:key` even if it is at the middle of the original DataFrame."
6502
+ ]
6503
+ },
6504
+ {
6505
+ "cell_type": "code",
6506
+ "execution_count": 181,
6507
+ "id": "31edb594-93fb-493f-8036-14e8273596ed",
6508
+ "metadata": {},
6509
+ "outputs": [
6510
+ {
6511
+ "data": {
6512
+ "text/html": [
6513
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>Audi</th><th>BMW</th><th>Year</th><th>BMW_MINI</th><th>Mercedes-Benz</th><th>VW</th></tr><tr><td>22535</td><td>35905</td><td>2021</td><td>18211</td><td>51722</td><td>35215</td></tr><tr><td>22304</td><td>35712</td><td>2020</td><td>20196</td><td>57041</td><td>36576</td></tr><tr><td>24222</td><td>46814</td><td>2019</td><td>23813</td><td>66553</td><td>46794</td></tr><tr><td>26473</td><td>50982</td><td>2018</td><td>25984</td><td>67554</td><td>51961</td></tr><tr><td>28336</td><td>52527</td><td>2017</td><td>25427</td><td>68221</td><td>49040</td></tr></table>"
6514
+ ],
6515
+ "text/plain": [
6516
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fc1c>\n",
6517
+ " Audi BMW Year BMW_MINI Mercedes-Benz VW\n",
6518
+ " <int64> <int64> <int64> <int64> <int64> <int64>\n",
6519
+ "1 22535 35905 2021 18211 51722 35215\n",
6520
+ "2 22304 35712 2020 20196 57041 36576\n",
6521
+ "3 24222 46814 2019 23813 66553 46794\n",
6522
+ "4 26473 50982 2018 25984 67554 51961\n",
6523
+ "5 28336 52527 2017 25427 68221 49040\n"
6524
+ ]
6525
+ },
6526
+ "execution_count": 181,
6527
+ "metadata": {},
6528
+ "output_type": "execute_result"
6529
+ }
6530
+ ],
6531
+ "source": [
6532
+ "df = import_cars.pick { [keys[1..2], keys[0], keys[3..]] }"
6533
+ ]
6534
+ },
6535
+ {
6536
+ "cell_type": "code",
6537
+ "execution_count": 182,
6538
+ "id": "ffa7cecc-5298-49d6-b483-b2b5cf2e1820",
6539
+ "metadata": {},
6540
+ "outputs": [
6541
+ {
6542
+ "data": {
6543
+ "text/html": [
6544
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>name</th><th>2021</th><th>2020</th><th>2019</th><th>2018</th><th>2017</th></tr><tr><td>Audi</td><td>22535</td><td>22304</td><td>24222</td><td>26473</td><td>28336</td></tr><tr><td>BMW</td><td>35905</td><td>35712</td><td>46814</td><td>50982</td><td>52527</td></tr><tr><td>BMW_MINI</td><td>18211</td><td>20196</td><td>23813</td><td>25984</td><td>25427</td></tr><tr><td>Mercedes-Benz</td><td>51722</td><td>57041</td><td>66553</td><td>67554</td><td>68221</td></tr><tr><td>VW</td><td>35215</td><td>36576</td><td>46794</td><td>51961</td><td>49040</td></tr></table>"
6545
+ ],
6546
+ "text/plain": [
6547
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fc30>\n",
6548
+ " name 2021 2020 2019 2018 2017\n",
6549
+ " <dictionary> <uint16> <uint16> <uint32> <uint32> <uint32>\n",
6550
+ "1 Audi 22535 22304 24222 26473 28336\n",
6551
+ "2 BMW 35905 35712 46814 50982 52527\n",
6552
+ "3 BMW_MINI 18211 20196 23813 25984 25427\n",
6553
+ "4 Mercedes-Benz 51722 57041 66553 67554 68221\n",
6554
+ "5 VW 35215 36576 46794 51961 49040\n"
6555
+ ]
6556
+ },
6557
+ "execution_count": 182,
6558
+ "metadata": {},
6559
+ "output_type": "execute_result"
6560
+ }
6561
+ ],
6562
+ "source": [
6563
+ "df.transpose(key: :Year)"
6564
+ ]
6565
+ },
6566
+ {
6567
+ "cell_type": "markdown",
6568
+ "id": "8c0e6fd9-2355-43dc-bfdb-254fdbd405fb",
6569
+ "metadata": {},
6570
+ "source": [
6571
+ "## 60. To_long"
6572
+ ]
6573
+ },
6574
+ {
6575
+ "cell_type": "markdown",
6576
+ "id": "8970bf89-6841-44aa-8faa-8c2e97842a8d",
6577
+ "metadata": {},
6578
+ "source": [
6579
+ "`DataFrame#to_long(*keep_keys)` reshapes wide DataFrame to a longer DataFrame.\n",
6580
+ "\n",
6581
+ "- Parameter `keep_keys` specifies the key names to keep.\n",
6582
+ "\n",
6583
+ "(Since 0.2.0)"
6584
+ ]
6585
+ },
6586
+ {
6587
+ "cell_type": "code",
6588
+ "execution_count": 183,
6589
+ "id": "f188cf35-3364-45aa-ad3c-1e079ed7b1a3",
6590
+ "metadata": {},
6591
+ "outputs": [
6592
+ {
6593
+ "data": {
6594
+ "text/html": [
6595
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>Year</th><th>Audi</th><th>BMW</th><th>BMW_MINI</th><th>Mercedes-Benz</th><th>VW</th></tr><tr><td>2021</td><td>22535</td><td>35905</td><td>18211</td><td>51722</td><td>35215</td></tr><tr><td>2020</td><td>22304</td><td>35712</td><td>20196</td><td>57041</td><td>36576</td></tr><tr><td>2019</td><td>24222</td><td>46814</td><td>23813</td><td>66553</td><td>46794</td></tr><tr><td>2018</td><td>26473</td><td>50982</td><td>25984</td><td>67554</td><td>51961</td></tr><tr><td>2017</td><td>28336</td><td>52527</td><td>25427</td><td>68221</td><td>49040</td></tr></table>"
6596
+ ],
6597
+ "text/plain": [
6598
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fc44>\n",
6599
+ " Year Audi BMW BMW_MINI Mercedes-Benz VW\n",
6600
+ " <int64> <int64> <int64> <int64> <int64> <int64>\n",
6601
+ "1 2021 22535 35905 18211 51722 35215\n",
6602
+ "2 2020 22304 35712 20196 57041 36576\n",
6603
+ "3 2019 24222 46814 23813 66553 46794\n",
6604
+ "4 2018 26473 50982 25984 67554 51961\n",
6605
+ "5 2017 28336 52527 25427 68221 49040\n"
6606
+ ]
6607
+ },
6608
+ "execution_count": 183,
6609
+ "metadata": {},
6610
+ "output_type": "execute_result"
6611
+ }
6612
+ ],
6613
+ "source": [
6614
+ "import_cars = RedAmber::DataFrame.load('../test/entity/import_cars.tsv')"
6615
+ ]
6616
+ },
6617
+ {
6618
+ "cell_type": "code",
6619
+ "execution_count": 184,
6620
+ "id": "bee776ae-7a82-41aa-8a31-c53af6b9ad9f",
6621
+ "metadata": {},
6622
+ "outputs": [
6623
+ {
6624
+ "data": {
6625
+ "text/html": [
6626
+ "RedAmber::DataFrame <25 x 3 vectors> <table><tr><th>Year</th><th>name</th><th>value</th></tr><tr><td>2021</td><td>Audi</td><td>22535</td></tr><tr><td>2021</td><td>BMW</td><td>35905</td></tr><tr><td>2021</td><td>BMW_MINI</td><td>18211</td></tr><tr><td>2021</td><td>Mercedes-Benz</td><td>51722</td></tr><tr><td colspan='3'>&#8942;</td></tr><tr><td>2017</td><td>BMW_MINI</td><td>25427</td></tr><tr><td>2017</td><td>Mercedes-Benz</td><td>68221</td></tr><tr><td>2017</td><td>VW</td><td>49040</td></tr></table>"
6627
+ ],
6628
+ "text/plain": [
6629
+ "#<RedAmber::DataFrame : 25 x 3 Vectors, 0x000000000000fc58>\n",
6630
+ " Year name value\n",
6631
+ " <uint16> <dictionary> <uint32>\n",
6632
+ " 1 2021 Audi 22535\n",
6633
+ " 2 2021 BMW 35905\n",
6634
+ " 3 2021 BMW_MINI 18211\n",
6635
+ " 4 2021 Mercedes-Benz 51722\n",
6636
+ " 5 2021 VW 35215\n",
6637
+ " : : : :\n",
6638
+ "23 2017 BMW_MINI 25427\n",
6639
+ "24 2017 Mercedes-Benz 68221\n",
6640
+ "25 2017 VW 49040\n"
6641
+ ]
6642
+ },
6643
+ "execution_count": 184,
6644
+ "metadata": {},
6645
+ "output_type": "execute_result"
6646
+ }
6647
+ ],
6648
+ "source": [
6649
+ "import_cars.to_long(:Year)"
6650
+ ]
6651
+ },
6652
+ {
6653
+ "cell_type": "markdown",
6654
+ "id": "771aac21-e739-4eea-9d75-cc99f691f87e",
6655
+ "metadata": {},
6656
+ "source": [
6657
+ "- Option `:name` : key of the column which is come **from key names**.\n",
6658
+ "- Option `:value` : key of the column which is come **from values**."
6659
+ ]
6660
+ },
6661
+ {
6662
+ "cell_type": "code",
6663
+ "execution_count": 185,
6664
+ "id": "b7f7aeab-d545-4a28-82ce-db844029cc9c",
6665
+ "metadata": {},
6666
+ "outputs": [
6667
+ {
6668
+ "data": {
6669
+ "text/html": [
6670
+ "RedAmber::DataFrame <25 x 3 vectors> <table><tr><th>Year</th><th>Manufacturer</th><th>Num_of_imported</th></tr><tr><td>2021</td><td>Audi</td><td>22535</td></tr><tr><td>2021</td><td>BMW</td><td>35905</td></tr><tr><td>2021</td><td>BMW_MINI</td><td>18211</td></tr><tr><td>2021</td><td>Mercedes-Benz</td><td>51722</td></tr><tr><td colspan='3'>&#8942;</td></tr><tr><td>2017</td><td>BMW_MINI</td><td>25427</td></tr><tr><td>2017</td><td>Mercedes-Benz</td><td>68221</td></tr><tr><td>2017</td><td>VW</td><td>49040</td></tr></table>"
6671
+ ],
6672
+ "text/plain": [
6673
+ "#<RedAmber::DataFrame : 25 x 3 Vectors, 0x000000000000fc6c>\n",
6674
+ " Year Manufacturer Num_of_imported\n",
6675
+ " <uint16> <dictionary> <uint32>\n",
6676
+ " 1 2021 Audi 22535\n",
6677
+ " 2 2021 BMW 35905\n",
6678
+ " 3 2021 BMW_MINI 18211\n",
6679
+ " 4 2021 Mercedes-Benz 51722\n",
6680
+ " 5 2021 VW 35215\n",
6681
+ " : : : :\n",
6682
+ "23 2017 BMW_MINI 25427\n",
6683
+ "24 2017 Mercedes-Benz 68221\n",
6684
+ "25 2017 VW 49040\n"
6685
+ ]
6686
+ },
6687
+ "execution_count": 185,
6688
+ "metadata": {},
6689
+ "output_type": "execute_result"
6690
+ }
6691
+ ],
6692
+ "source": [
6693
+ "import_cars.to_long(:Year, name: :Manufacturer, value: :Num_of_imported)"
6694
+ ]
6695
+ },
6696
+ {
6697
+ "cell_type": "markdown",
6698
+ "id": "44361299-695f-4aef-8847-9b8a9dddc3d1",
6699
+ "metadata": {},
6700
+ "source": [
6701
+ "## 61. To_wide"
6702
+ ]
6703
+ },
6704
+ {
6705
+ "cell_type": "markdown",
6706
+ "id": "7fa18ac8-99e1-4d55-bed4-cc02469496b5",
6707
+ "metadata": {},
6708
+ "source": [
6709
+ "`DataFrame#to_wide(*keep_keys)` reshapes long DataFrame to a wider DataFrame.\n",
6710
+ "\n",
6711
+ "- Option `:name` : key of the column which will be expanded **to key name**.\n",
6712
+ "- Option `:value` : key of the column which will be expanded **to values**.\n",
6713
+ "\n",
6714
+ "(Since 0.2.0)"
6715
+ ]
6716
+ },
6717
+ {
6718
+ "cell_type": "code",
6719
+ "execution_count": 186,
6720
+ "id": "1d59c42f-c5ec-4df2-9fbe-592092ad2f8b",
6721
+ "metadata": {},
6722
+ "outputs": [
6723
+ {
6724
+ "data": {
6725
+ "text/html": [
6726
+ "RedAmber::DataFrame <5 x 6 vectors> <table><tr><th>Year</th><th>Audi</th><th>BMW</th><th>BMW_MINI</th><th>Mercedes-Benz</th><th>VW</th></tr><tr><td>2021</td><td>22535</td><td>35905</td><td>18211</td><td>51722</td><td>35215</td></tr><tr><td>2020</td><td>22304</td><td>35712</td><td>20196</td><td>57041</td><td>36576</td></tr><tr><td>2019</td><td>24222</td><td>46814</td><td>23813</td><td>66553</td><td>46794</td></tr><tr><td>2018</td><td>26473</td><td>50982</td><td>25984</td><td>67554</td><td>51961</td></tr><tr><td>2017</td><td>28336</td><td>52527</td><td>25427</td><td>68221</td><td>49040</td></tr></table>"
6727
+ ],
6728
+ "text/plain": [
6729
+ "#<RedAmber::DataFrame : 5 x 6 Vectors, 0x000000000000fc80>\n",
6730
+ " Year Audi BMW BMW_MINI Mercedes-Benz VW\n",
6731
+ " <uint16> <uint16> <uint16> <uint16> <uint32> <uint16>\n",
6732
+ "1 2021 22535 35905 18211 51722 35215\n",
6733
+ "2 2020 22304 35712 20196 57041 36576\n",
6734
+ "3 2019 24222 46814 23813 66553 46794\n",
6735
+ "4 2018 26473 50982 25984 67554 51961\n",
6736
+ "5 2017 28336 52527 25427 68221 49040\n"
6737
+ ]
6738
+ },
6739
+ "execution_count": 186,
6740
+ "metadata": {},
6741
+ "output_type": "execute_result"
6742
+ }
6743
+ ],
6744
+ "source": [
6745
+ "import_cars.to_long(:Year).to_wide"
6746
+ ]
6747
+ },
6748
+ {
6749
+ "cell_type": "code",
6750
+ "execution_count": 187,
6751
+ "id": "84b7909a-200c-4aec-b192-25016399a7c4",
6752
+ "metadata": {},
6753
+ "outputs": [],
6754
+ "source": [
6755
+ "# import_cars.to_long(:Year).to_wide(name: :name, value: :value)\n",
6756
+ "# is also OK"
6757
+ ]
6758
+ },
6759
+ {
6760
+ "cell_type": "code",
6761
+ "execution_count": null,
6762
+ "id": "c92c2fe0-23a5-4153-bd03-7a07664b4d9e",
6763
+ "metadata": {},
6764
+ "outputs": [],
6765
+ "source": []
5437
6766
  }
5438
6767
  ],
5439
6768
  "metadata": {