--- /srv/rebuilderd/tmp/rebuilderdWwj7IT/inputs/python-pandas-doc_2.2.3+dfsg-9_all.deb
+++ /srv/rebuilderd/tmp/rebuilderdWwj7IT/out/python-pandas-doc_2.2.3+dfsg-9_all.deb
├── file list
│ @@ -1,3 +1,3 @@
│ -rw-r--r-- 0 0 0 4 2025-03-29 13:01:52.000000 debian-binary
│ --rw-r--r-- 0 0 0 147368 2025-03-29 13:01:52.000000 control.tar.xz
│ --rw-r--r-- 0 0 0 10646756 2025-03-29 13:01:52.000000 data.tar.xz
│ +-rw-r--r-- 0 0 0 147376 2025-03-29 13:01:52.000000 control.tar.xz
│ +-rw-r--r-- 0 0 0 10646416 2025-03-29 13:01:52.000000 data.tar.xz
├── control.tar.xz
│ ├── control.tar
│ │ ├── ./control
│ │ │ @@ -1,13 +1,13 @@
│ │ │ Package: python-pandas-doc
│ │ │ Source: pandas
│ │ │ Version: 2.2.3+dfsg-9
│ │ │ Architecture: all
│ │ │ Maintainer: Debian Science Team
│ │ │ -Installed-Size: 209900
│ │ │ +Installed-Size: 209903
│ │ │ Depends: libjs-sphinxdoc (>= 8.1), libjs-mathjax
│ │ │ Suggests: python3-pandas
│ │ │ Section: doc
│ │ │ Priority: optional
│ │ │ Multi-Arch: foreign
│ │ │ Homepage: https://pandas.pydata.org/
│ │ │ Description: data structures for "relational" or "labeled" data - documentation
│ │ ├── ./md5sums
│ │ │ ├── ./md5sums
│ │ │ │┄ Files differ
├── data.tar.xz
│ ├── data.tar
│ │ ├── file list
│ │ │ @@ -6256,47 +6256,47 @@
│ │ │ -rw-r--r-- 0 root (0) root (0) 210184 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/reference/series.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 48665 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/reference/style.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 48657 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/reference/testing.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 53295 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/reference/window.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 244 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/release.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 269 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/reshaping.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 17010 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/search.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 2358635 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/searchindex.js
│ │ │ +-rw-r--r-- 0 root (0) root (0) 2358581 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/searchindex.js
│ │ │ -rw-r--r-- 0 root (0) root (0) 259 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/sparse.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 244 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/style.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 255 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/text.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 256 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/timedeltas.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 277 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/timeseries.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 272 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/tutorials.html
│ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/
│ │ │ -rw-r--r-- 0 root (0) root (0) 171380 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/10min.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 283837 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html
│ │ │ +-rw-r--r-- 0 root (0) root (0) 283839 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 436075 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/basics.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 36646 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/boolean.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 217515 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/categorical.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 18313 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/cookbook.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 66125 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/copy_on_write.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 160414 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/dsintro.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 81376 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/duplicates.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 115451 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html
│ │ │ +-rw-r--r-- 0 root (0) root (0) 115454 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 107882 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/gotchas.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 300850 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/groupby.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 59715 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/index.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 395484 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/indexing.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 41778 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/integer_na.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 1145820 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/io.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 208885 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/merging.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 178690 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/missing_data.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 112153 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/options.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 147524 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/pyarrow.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 162660 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/reshaping.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 115580 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html
│ │ │ +-rw-r--r-- 0 root (0) root (0) 115581 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 65863 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/sparse.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 698240 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 87860 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz
│ │ │ +-rw-r--r-- 0 root (0) root (0) 87785 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz
│ │ │ -rw-r--r-- 0 root (0) root (0) 165302 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/text.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 100947 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/timedeltas.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 486621 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/timeseries.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 204461 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/visualization.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 141947 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/window.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 270 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/visualization.html
│ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/
│ │ │ @@ -6316,18 +6316,18 @@
│ │ │ -rw-r--r-- 0 root (0) root (0) 145199 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.16.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 115518 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.16.1.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 64656 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.16.2.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 231394 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.17.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 95028 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.17.1.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 224091 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.18.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 171888 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.18.1.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 349360 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.19.0.html
│ │ │ +-rw-r--r-- 0 root (0) root (0) 350916 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.19.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 45179 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.19.1.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 48525 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.19.2.html
│ │ │ --rw-r--r-- 0 root (0) root (0) 406224 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.20.0.html
│ │ │ +-rw-r--r-- 0 root (0) root (0) 407739 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.20.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 52898 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.20.2.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 43404 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.20.3.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 255116 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.21.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 61789 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.21.1.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 59841 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.22.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 401704 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.23.0.html
│ │ │ -rw-r--r-- 0 root (0) root (0) 59871 2025-03-29 13:01:52.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.23.1.html
│ │ ├── ./usr/share/doc/python-pandas-doc/html/searchindex.js
│ │ │ ├── js-beautify {}
│ │ │ │ @@ -21531,26 +21531,26 @@
│ │ │ │ "005000": 2218,
│ │ │ │ "005361": 2207,
│ │ │ │ "005383": 2220,
│ │ │ │ "005446": 2219,
│ │ │ │ "005462": 2191,
│ │ │ │ "005977": 2199,
│ │ │ │ "005979": 2186,
│ │ │ │ + "006": 2193,
│ │ │ │ "006123": 2207,
│ │ │ │ "006154": [2185, 2197, 2199, 2202, 2204, 2215, 2257],
│ │ │ │ "0062": 2191,
│ │ │ │ "006349": 2195,
│ │ │ │ "006438": 2215,
│ │ │ │ "006549": [182, 760],
│ │ │ │ "006695": 2186,
│ │ │ │ "006747": [2185, 2197, 2199, 2202, 2204, 2215],
│ │ │ │ "006871": 2212,
│ │ │ │ "006888": 2220,
│ │ │ │ "006938": 2207,
│ │ │ │ - "007": 2193,
│ │ │ │ "007200": 2184,
│ │ │ │ "007207": [2184, 2214],
│ │ │ │ "007717": 2199,
│ │ │ │ "007824": 15,
│ │ │ │ "007952": 2207,
│ │ │ │ "007996": 2186,
│ │ │ │ "007f": 203,
│ │ │ │ @@ -21569,15 +21569,15 @@
│ │ │ │ "009673": 2195,
│ │ │ │ "009783": 2207,
│ │ │ │ "009797": 2186,
│ │ │ │ "009826": [102, 1158, 2205],
│ │ │ │ "009920": [2184, 2195, 2214],
│ │ │ │ "00am": 2230,
│ │ │ │ "00index": 2218,
│ │ │ │ - "01": [3, 15, 16, 17, 19, 29, 30, 31, 79, 80, 82, 88, 107, 121, 182, 187, 207, 213, 218, 219, 230, 242, 261, 270, 271, 276, 277, 278, 283, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 329, 330, 331, 332, 333, 345, 362, 363, 423, 445, 510, 511, 513, 514, 515, 516, 517, 519, 521, 523, 525, 529, 531, 532, 533, 534, 535, 536, 537, 541, 542, 543, 544, 545, 546, 547, 548, 549, 551, 554, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 575, 591, 592, 593, 600, 629, 637, 639, 640, 641, 642, 643, 644, 645, 646, 647, 649, 650, 651, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 665, 666, 667, 668, 670, 671, 673, 674, 675, 676, 677, 678, 679, 680, 684, 685, 686, 688, 689, 696, 760, 763, 781, 788, 793, 804, 817, 874, 893, 898, 899, 902, 903, 904, 905, 909, 910, 917, 919, 922, 929, 934, 939, 940, 943, 944, 945, 948, 949, 953, 954, 957, 959, 960, 969, 972, 982, 984, 997, 1000, 1001, 1003, 1004, 1005, 1011, 1014, 1016, 1017, 1020, 1021, 1024, 1051, 1075, 1078, 1106, 1118, 1122, 1141, 1144, 1145, 1147, 1157, 1164, 1170, 1171, 1176, 1180, 1185, 1192, 1195, 1197, 1206, 1214, 1221, 1227, 1228, 1233, 1239, 1245, 1246, 1253, 1256, 1258, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1344, 1345, 1367, 1391, 1392, 1393, 1436, 1447, 1452, 1475, 1488, 1490, 1498, 1500, 1501, 1506, 1524, 1542, 1560, 1620, 1699, 1720, 1741, 1793, 1815, 1857, 1930, 1947, 1982, 2036, 2054, 2090, 2108, 2127, 2163, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2209, 2210, 2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2225, 2226, 2228, 2229, 2230, 2231, 2232, 2235, 2238, 2240, 2241, 2246, 2249, 2261, 2264, 2265, 2271, 2283, 2289, 2294, 2298, 2302, 2307],
│ │ │ │ + "01": [3, 15, 16, 17, 19, 29, 30, 31, 79, 80, 82, 88, 107, 121, 182, 187, 207, 213, 218, 219, 230, 242, 261, 270, 271, 276, 277, 278, 283, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 329, 330, 331, 332, 333, 345, 362, 363, 423, 445, 510, 511, 513, 514, 515, 516, 517, 519, 521, 523, 525, 529, 531, 532, 533, 534, 535, 536, 537, 541, 542, 543, 544, 545, 546, 547, 548, 549, 551, 554, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 575, 591, 592, 593, 600, 629, 637, 639, 640, 641, 642, 643, 644, 645, 646, 647, 649, 650, 651, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 665, 666, 667, 668, 670, 671, 673, 674, 675, 676, 677, 678, 679, 680, 684, 685, 686, 688, 689, 696, 760, 763, 781, 788, 793, 804, 817, 874, 893, 898, 899, 902, 903, 904, 905, 909, 910, 917, 919, 922, 929, 934, 939, 940, 943, 944, 945, 948, 949, 953, 954, 957, 959, 960, 969, 972, 982, 984, 997, 1000, 1001, 1003, 1004, 1005, 1011, 1014, 1016, 1017, 1020, 1021, 1024, 1051, 1075, 1078, 1106, 1118, 1122, 1141, 1144, 1145, 1147, 1157, 1164, 1170, 1171, 1176, 1180, 1185, 1192, 1195, 1197, 1206, 1214, 1221, 1227, 1228, 1233, 1239, 1245, 1246, 1253, 1256, 1258, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1344, 1345, 1367, 1391, 1392, 1393, 1436, 1447, 1452, 1475, 1488, 1490, 1498, 1500, 1501, 1506, 1524, 1542, 1560, 1620, 1699, 1720, 1741, 1793, 1815, 1857, 1930, 1947, 1982, 2036, 2054, 2090, 2108, 2127, 2163, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2209, 2210, 2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2225, 2226, 2228, 2229, 2230, 2231, 2232, 2235, 2238, 2240, 2241, 2246, 2249, 2261, 2264, 2265, 2271, 2283, 2289, 2294, 2298, 2302, 2307],
│ │ │ │ "0100": [575, 893, 957, 970, 997, 1004, 1014, 1016, 1020, 1021, 1498, 2186, 2199, 2210, 2246, 2271],
│ │ │ │ "010000": [954, 1894],
│ │ │ │ "010010012": [923, 2209],
│ │ │ │ "010026": 2191,
│ │ │ │ "010081": 15,
│ │ │ │ "010165": 2199,
│ │ │ │ "010589": 2193,
│ │ │ │ @@ -21607,26 +21607,25 @@
│ │ │ │ "013684": [182, 760],
│ │ │ │ "013692": [102, 1158],
│ │ │ │ "013747": 2199,
│ │ │ │ "013768": 2230,
│ │ │ │ "013810": [182, 760],
│ │ │ │ "013863": 2199,
│ │ │ │ "013960": [2185, 2197, 2199, 2202, 2204, 2215, 2257],
│ │ │ │ - "014": 2191,
│ │ │ │ + "014": [2191, 2193],
│ │ │ │ "014061": 2207,
│ │ │ │ "014073": 2204,
│ │ │ │ "014103": 2207,
│ │ │ │ "014138": 2191,
│ │ │ │ "014144": [102, 1158],
│ │ │ │ "014648": 2186,
│ │ │ │ "014752": 2235,
│ │ │ │ "014805": 2202,
│ │ │ │ "014871": [2185, 2197, 2199, 2202],
│ │ │ │ "014888": 2207,
│ │ │ │ - "015": 2193,
│ │ │ │ "015083": 2186,
│ │ │ │ "015420": 2195,
│ │ │ │ "015458": 2207,
│ │ │ │ "015696": [2220, 2228, 2230],
│ │ │ │ "015906": 2186,
│ │ │ │ "015962": [2184, 2214],
│ │ │ │ "015988": 2186,
│ │ │ │ @@ -21670,25 +21669,26 @@
│ │ │ │ "020208": 2195,
│ │ │ │ "020376": 2207,
│ │ │ │ "020399": 2195,
│ │ │ │ "020485": 2207,
│ │ │ │ "020544": 2186,
│ │ │ │ "020762": 2220,
│ │ │ │ "020940": 2230,
│ │ │ │ + "021": 2193,
│ │ │ │ "021244": 2207,
│ │ │ │ "021255": 2230,
│ │ │ │ "021292": 2186,
│ │ │ │ "021377": 2207,
│ │ │ │ "021382": 2184,
│ │ │ │ "021499": 2186,
│ │ │ │ "02155": 30,
│ │ │ │ "022070": 2184,
│ │ │ │ "022196": 2207,
│ │ │ │ "022777": 2207,
│ │ │ │ - "023": [1447, 2193, 2200, 2232],
│ │ │ │ + "023": [1447, 2200, 2232],
│ │ │ │ "023100": 2195,
│ │ │ │ "023167": 15,
│ │ │ │ "023202": 2199,
│ │ │ │ "023526": 2191,
│ │ │ │ "023640": 2230,
│ │ │ │ "023688": [15, 2185, 2191, 2197],
│ │ │ │ "0237": 2204,
│ │ │ │ @@ -21863,15 +21863,14 @@
│ │ │ │ "046": 2207,
│ │ │ │ "046044": 2199,
│ │ │ │ "046582": 2207,
│ │ │ │ "046611": 2210,
│ │ │ │ "046731": 2207,
│ │ │ │ "046805": 2207,
│ │ │ │ "046882": 2199,
│ │ │ │ - "047": 2193,
│ │ │ │ "047046": 2210,
│ │ │ │ "047107": 2207,
│ │ │ │ "047208": 2199,
│ │ │ │ "047551": 2191,
│ │ │ │ "047578": 2186,
│ │ │ │ "047606": 2186,
│ │ │ │ "047609": 2184,
│ │ │ │ @@ -21907,14 +21906,15 @@
│ │ │ │ "050498": 2207,
│ │ │ │ "051514": 2186,
│ │ │ │ "051539": 2235,
│ │ │ │ "051686": 2186,
│ │ │ │ "051694": 2197,
│ │ │ │ "051824": 2207,
│ │ │ │ "051928": 2186,
│ │ │ │ + "052": 2193,
│ │ │ │ "052021": 2210,
│ │ │ │ "052127": 2207,
│ │ │ │ "052580": 2195,
│ │ │ │ "052589": 2193,
│ │ │ │ "052599": 2186,
│ │ │ │ "052721": 2219,
│ │ │ │ "052849": 2212,
│ │ │ │ @@ -22250,20 +22250,20 @@
│ │ │ │ "0n": [1489, 2298],
│ │ │ │ "0px": 2207,
│ │ │ │ "0rc0": 13,
│ │ │ │ "0th": [26, 249, 882, 1202, 2185, 2197, 2199, 2235],
│ │ │ │ "0x00": 2294,
│ │ │ │ "0x40": 2294,
│ │ │ │ "0x7efd0c0b0690": 3,
│ │ │ │ - "0x7f26874ba6d0": 2230,
│ │ │ │ - "0x7f268af58220": 2210,
│ │ │ │ - "0x7f26a60a7930": 2199,
│ │ │ │ - "0x7f26af3dba30": 2197,
│ │ │ │ - "0x7f26bd415d10": 2246,
│ │ │ │ - "0x7f26df0501d0": 2195,
│ │ │ │ + "0x7fe07efd7cf0": 2199,
│ │ │ │ + "0x7fe0b01bc8b0": 2197,
│ │ │ │ + "0x7fe0b195a510": 2195,
│ │ │ │ + "0x7fe0b2609e10": 2230,
│ │ │ │ + "0x7fe0bdb8bc40": 2210,
│ │ │ │ + "0x7fe0ccb9b230": 2246,
│ │ │ │ "1": [1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 39, 42, 44, 46, 49, 54, 56, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 148, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 321, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 337, 339, 341, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 361, 363, 364, 366, 367, 370, 371, 372, 375, 376, 377, 378, 380, 382, 384, 385, 386, 387, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, 408, 409, 411, 412, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 436, 437, 440, 446, 449, 450, 451, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 473, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 495, 496, 498, 499, 500, 501, 502, 503, 505, 509, 510, 511, 514, 516, 519, 525, 531, 532, 533, 534, 536, 540, 543, 545, 547, 548, 549, 551, 557, 558, 561, 565, 568, 569, 571, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 589, 590, 591, 592, 593, 594, 595, 596, 597, 599, 600, 601, 602, 603, 604, 609, 613, 614, 615, 616, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 673, 674, 675, 676, 678, 679, 680, 681, 682, 683, 684, 686, 688, 689, 690, 691, 692, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 743, 744, 747, 748, 749, 750, 751, 752, 753, 755, 756, 758, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 810, 812, 813, 814, 815, 816, 817, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 912, 913, 914, 916, 918, 921, 923, 927, 930, 938, 939, 940, 941, 942, 943, 945, 946, 947, 948, 949, 950, 951, 952, 953, 957, 959, 960, 970, 977, 979, 981, 984, 994, 997, 1003, 1004, 1005, 1006, 1011, 1012, 1021, 1031, 1032, 1033, 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 1093, 1095, 1096, 1097, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1118, 1119, 1121, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1347, 1348, 1350, 1354, 1355, 1358, 1359, 1362, 1363, 1368, 1369, 1372, 1373, 1374, 1375, 1377, 1380, 1381, 1382, 1383, 1384, 1385, 1387, 1388, 1389, 1390, 1391, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1413, 1414, 1415, 1416, 1417, 1419, 1421, 1422, 1423, 1424, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1453, 1454, 1455, 1457, 1458, 1459, 1460, 1462, 1463, 1464, 1466, 1467, 1468, 1469, 1470, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1482, 1483, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1502, 1506, 1507, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1524, 1525, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1542, 1543, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1560, 1561, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1578, 1580, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1598, 1600, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1620, 1621, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1637, 1638, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1657, 1659, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1677, 1679, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1699, 1701, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1720, 1722, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1741, 1742, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1758, 1759, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1793, 1794, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1815, 1816, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1839, 1840, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1857, 1858, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1876, 1877, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1894, 1895, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1912, 1913, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1930, 1931, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1947, 1948, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1964, 1965, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1982, 1983, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2018, 2019, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2036, 2037, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2054, 2055, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2073, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2090, 2091, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2108, 2109, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2127, 2128, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2145, 2146, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2163, 2164, 2165, 2166, 2184, 2185, 2186, 2187, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2208, 2209, 2210, 2211, 2212, 2214, 2216, 2217, 2218, 2220, 2222, 2224, 2225, 2227, 2228, 2230, 2232, 2238, 2240, 2241, 2243, 2245, 2246, 2249, 2257, 2259, 2260, 2263, 2298, 2307, 2309, 2310],
│ │ │ │ "10": [2, 3, 5, 6, 9, 10, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 68, 69, 74, 80, 83, 84, 85, 88, 91, 94, 97, 98, 102, 105, 109, 111, 113, 119, 120, 121, 129, 133, 137, 138, 139, 140, 142, 144, 160, 163, 171, 173, 187, 188, 189, 190, 192, 193, 199, 202, 203, 204, 206, 207, 212, 213, 215, 216, 217, 220, 221, 222, 223, 228, 230, 234, 244, 258, 265, 268, 275, 276, 278, 284, 286, 288, 289, 293, 295, 296, 298, 300, 302, 316, 317, 318, 322, 323, 324, 329, 330, 331, 345, 395, 423, 427, 440, 445, 509, 514, 516, 534, 536, 544, 546, 551, 554, 556, 560, 562, 568, 569, 570, 571, 572, 577, 583, 592, 594, 595, 596, 600, 620, 621, 627, 635, 639, 641, 645, 647, 648, 649, 650, 652, 670, 671, 673, 677, 678, 679, 681, 684, 685, 686, 695, 696, 708, 713, 714, 738, 741, 763, 764, 765, 766, 768, 781, 787, 788, 798, 804, 808, 836, 837, 838, 839, 840, 841, 842, 843, 844, 849, 852, 863, 868, 874, 889, 895, 902, 904, 912, 923, 940, 942, 943, 944, 948, 957, 959, 960, 970, 982, 984, 995, 997, 1001, 1003, 1004, 1005, 1011, 1016, 1020, 1021, 1069, 1071, 1072, 1075, 1109, 1154, 1158, 1162, 1163, 1173, 1174, 1175, 1180, 1185, 1189, 1195, 1200, 1205, 1219, 1220, 1230, 1239, 1246, 1250, 1256, 1261, 1264, 1267, 1284, 1288, 1291, 1292, 1294, 1297, 1298, 1299, 1306, 1308, 1319, 1324, 1343, 1344, 1345, 1350, 1367, 1387, 1391, 1403, 1411, 1416, 1418, 1420, 1421, 1440, 1447, 1451, 1452, 1458, 1462, 1467, 1473, 1478, 1479, 1482, 1485, 1488, 1490, 1491, 1498, 1598, 1657, 1677, 1699, 1720, 1741, 1758, 1894, 1912, 2018, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2234, 2235, 2238, 2240, 2241, 2246, 2249, 2254, 2257, 2260, 2261, 2264, 2265, 2271, 2277, 2283, 2289, 2290, 2294, 2298, 2302, 2307, 2308],
│ │ │ │ "100": [3, 15, 17, 22, 30, 68, 97, 98, 111, 118, 132, 135, 141, 142, 145, 159, 161, 175, 182, 192, 202, 207, 212, 213, 233, 273, 303, 345, 359, 360, 427, 577, 587, 588, 620, 621, 655, 709, 717, 760, 781, 787, 788, 900, 1345, 1391, 1398, 1447, 1457, 1472, 1473, 1488, 1490, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2194, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2220, 2222, 2223, 2225, 2226, 2230, 2231, 2232, 2235, 2241, 2242, 2246, 2249, 2302, 2307],
│ │ │ │ "1000": [9, 10, 15, 24, 25, 28, 29, 32, 102, 141, 183, 191, 193, 194, 427, 717, 761, 767, 768, 769, 874, 1154, 1158, 1456, 1465, 1467, 1876, 1964, 2184, 2185, 2186, 2188, 2193, 2195, 2199, 2205, 2206, 2207, 2210, 2211, 2220, 2223, 2229, 2230, 2235, 2238, 2246, 2249, 2261, 2294],
│ │ │ │ "10000": [192, 1485, 2185, 2201, 2206, 2210, 2220, 2228, 2266],
│ │ │ │ "100000": [1354, 1372, 2199, 2201, 2210],
│ │ │ │ "1000000": [144, 2199, 2228],
│ │ │ │ @@ -22305,15 +22305,15 @@
│ │ │ │ "10083": 2226,
│ │ │ │ "100845": 2207,
│ │ │ │ "10087": 2227,
│ │ │ │ "10089": 2229,
│ │ │ │ "10092": 2226,
│ │ │ │ "10096": 2227,
│ │ │ │ "100y": 1344,
│ │ │ │ - "101": [207, 781, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2222, 2230, 2231, 2232, 2235, 2246],
│ │ │ │ + "101": [207, 781, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2222, 2230, 2231, 2232, 2235, 2246],
│ │ │ │ "10103": 2231,
│ │ │ │ "10110": 2228,
│ │ │ │ "10114": 2228,
│ │ │ │ "10115": 2228,
│ │ │ │ "101154": 2207,
│ │ │ │ "10117": 2246,
│ │ │ │ "10119": 2227,
│ │ │ │ @@ -22465,15 +22465,15 @@
│ │ │ │ "10477": 2228,
│ │ │ │ "104803": 2195,
│ │ │ │ "10482": 2228,
│ │ │ │ "10483": 2228,
│ │ │ │ "10485": 2228,
│ │ │ │ "10486": 2230,
│ │ │ │ "104971": 2207,
│ │ │ │ - "105": [2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246, 2271],
│ │ │ │ + "105": [2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246, 2271],
│ │ │ │ "10503": 2230,
│ │ │ │ "10505": 2228,
│ │ │ │ "10508": 2228,
│ │ │ │ "10510": 2229,
│ │ │ │ "10511": 2249,
│ │ │ │ "1051201": 2205,
│ │ │ │ "1051471": 2205,
│ │ │ │ @@ -22665,15 +22665,15 @@
│ │ │ │ "10h": [2210, 2235],
│ │ │ │ "10m": [16, 1447, 2200],
│ │ │ │ "10min": 2230,
│ │ │ │ "10t00": 2261,
│ │ │ │ "10th": [2205, 2241],
│ │ │ │ "10x": [1469, 1486, 1498, 2216, 2219, 2225, 2257],
│ │ │ │ "11": [2, 10, 15, 17, 18, 19, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 88, 108, 111, 113, 120, 127, 139, 140, 157, 162, 196, 213, 286, 288, 289, 293, 295, 296, 300, 316, 317, 318, 323, 324, 329, 330, 420, 423, 440, 509, 512, 518, 522, 524, 526, 530, 534, 536, 554, 556, 600, 635, 639, 641, 645, 647, 649, 650, 652, 670, 671, 673, 678, 679, 681, 684, 685, 703, 732, 771, 788, 799, 940, 943, 948, 985, 993, 1010, 1019, 1023, 1025, 1169, 1174, 1175, 1195, 1200, 1226, 1256, 1261, 1276, 1292, 1298, 1299, 1306, 1308, 1321, 1433, 1452, 1482, 1498, 1542, 1560, 1598, 1620, 1637, 1677, 1699, 1720, 1741, 1839, 1930, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2215, 2217, 2218, 2219, 2220, 2222, 2223, 2224, 2225, 2228, 2229, 2230, 2231, 2232, 2235, 2238, 2240, 2241, 2246, 2249, 2250, 2257, 2261, 2264, 2265, 2271, 2277, 2278, 2283, 2289, 2294, 2297, 2298, 2302, 2307],
│ │ │ │ - "110": [213, 359, 360, 587, 588, 788, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2223, 2230, 2232, 2235, 2246],
│ │ │ │ + "110": [213, 359, 360, 587, 588, 788, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2223, 2230, 2232, 2235, 2246],
│ │ │ │ "1100": [2195, 2210],
│ │ │ │ "11000": [2185, 2220],
│ │ │ │ "11002": 2228,
│ │ │ │ "11007": 2229,
│ │ │ │ "1101": 2210,
│ │ │ │ "11010": 2228,
│ │ │ │ "11014": 2228,
│ │ │ │ @@ -23456,15 +23456,15 @@
│ │ │ │ "13078": 2232,
│ │ │ │ "13082": 2232,
│ │ │ │ "13083": 2238,
│ │ │ │ "130932": 2207,
│ │ │ │ "13097": 2235,
│ │ │ │ "13098": 2232,
│ │ │ │ "130980": 2195,
│ │ │ │ - "131": [2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2203, 2208, 2210, 2211, 2232, 2249, 2283],
│ │ │ │ + "131": [2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2203, 2208, 2210, 2211, 2232, 2249, 2283],
│ │ │ │ "1310": 2199,
│ │ │ │ "13101": 2239,
│ │ │ │ "13104": 2232,
│ │ │ │ "13107": 2232,
│ │ │ │ "13109": 2232,
│ │ │ │ "13110": 2232,
│ │ │ │ "13119": 2232,
│ │ │ │ @@ -23820,16 +23820,14 @@
│ │ │ │ "13965": 2235,
│ │ │ │ "13966": 2235,
│ │ │ │ "139683": 2235,
│ │ │ │ "13971": 2238,
│ │ │ │ "13972": 2232,
│ │ │ │ "13977": 2232,
│ │ │ │ "13980": 2232,
│ │ │ │ - "139804400157008": 2246,
│ │ │ │ - "139804622088560": 2246,
│ │ │ │ "13981": 2232,
│ │ │ │ "13985": 2232,
│ │ │ │ "139853": 2207,
│ │ │ │ "13988": 2232,
│ │ │ │ "13990": 2232,
│ │ │ │ "13994": 2232,
│ │ │ │ "139976": 2186,
│ │ │ │ @@ -23846,14 +23844,15 @@
│ │ │ │ "14015": 2235,
│ │ │ │ "14021": 2232,
│ │ │ │ "140249": 2207,
│ │ │ │ "14039": 2232,
│ │ │ │ "14041": 2232,
│ │ │ │ "140528": 2207,
│ │ │ │ "14058": 2232,
│ │ │ │ + "140603243132560": 2246,
│ │ │ │ "14065": 2232,
│ │ │ │ "14066": 2232,
│ │ │ │ "14068": [2232, 2233],
│ │ │ │ "1408": [2197, 2231],
│ │ │ │ "14086": 2232,
│ │ │ │ "14088": 2232,
│ │ │ │ "1409": [2185, 2197],
│ │ │ │ @@ -24145,15 +24144,15 @@
│ │ │ │ "14982": 2235,
│ │ │ │ "14983": 2235,
│ │ │ │ "1499": 2212,
│ │ │ │ "14992": 2235,
│ │ │ │ "14998": 2235,
│ │ │ │ "14t15": [955, 956, 957, 962, 970, 983, 990, 995, 997, 999, 1002, 1006, 1007, 1008, 1009, 1013, 1014],
│ │ │ │ "15": [4, 15, 16, 17, 18, 19, 22, 25, 26, 29, 30, 31, 72, 73, 81, 88, 91, 108, 112, 116, 121, 127, 133, 137, 157, 186, 208, 213, 230, 258, 268, 271, 277, 278, 345, 586, 600, 696, 703, 708, 732, 762, 782, 788, 804, 889, 899, 903, 904, 953, 955, 956, 957, 958, 970, 973, 992, 995, 997, 999, 1005, 1008, 1009, 1013, 1014, 1018, 1103, 1147, 1157, 1170, 1171, 1173, 1176, 1180, 1185, 1188, 1195, 1197, 1198, 1202, 1206, 1214, 1227, 1228, 1233, 1239, 1245, 1246, 1249, 1256, 1258, 1263, 1265, 1268, 1272, 1273, 1274, 1275, 1277, 1278, 1279, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1295, 1297, 1321, 1334, 1458, 1485, 1498, 1500, 1506, 1524, 1542, 1560, 1578, 1598, 1657, 1677, 1758, 1839, 1876, 1894, 1912, 1964, 2018, 2036, 2054, 2090, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2225, 2226, 2227, 2228, 2230, 2231, 2232, 2235, 2238, 2240, 2243, 2246, 2249, 2257, 2261, 2264, 2265, 2271, 2277, 2283, 2289, 2294, 2298, 2302, 2307],
│ │ │ │ - "150": [15, 111, 118, 132, 135, 159, 161, 175, 213, 233, 788, 2185, 2186, 2188, 2195, 2197, 2199, 2200, 2201, 2204, 2210, 2211, 2218],
│ │ │ │ + "150": [15, 111, 118, 132, 135, 159, 161, 175, 213, 233, 788, 2185, 2186, 2188, 2195, 2197, 2199, 2200, 2201, 2204, 2210, 2211],
│ │ │ │ "1500": [2212, 2241, 2246],
│ │ │ │ "15000": [2185, 2220],
│ │ │ │ "15001": 2238,
│ │ │ │ "150025": 2207,
│ │ │ │ "150031": 2207,
│ │ │ │ "150036": [2220, 2230],
│ │ │ │ "15005": 2235,
│ │ │ │ @@ -24247,15 +24246,15 @@
│ │ │ │ "15272": 2289,
│ │ │ │ "15277": 2235,
│ │ │ │ "15289": 2235,
│ │ │ │ "15296": 2241,
│ │ │ │ "152963": 2207,
│ │ │ │ "15297": 2235,
│ │ │ │ "152996": 2207,
│ │ │ │ - "153": [2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2210, 2211, 2231],
│ │ │ │ + "153": [2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2210, 2211, 2231],
│ │ │ │ "15300": 2235,
│ │ │ │ "153009": 2207,
│ │ │ │ "15305": 2238,
│ │ │ │ "15306": 2249,
│ │ │ │ "15314": 2246,
│ │ │ │ "153266": 2207,
│ │ │ │ "15328": 2235,
│ │ │ │ @@ -24404,15 +24403,15 @@
│ │ │ │ "15785": 2241,
│ │ │ │ "15787": 2235,
│ │ │ │ "157892": [15, 2185, 2186, 2191, 2197, 2199, 2202, 2215, 2216, 2218, 2219, 2235, 2241, 2264],
│ │ │ │ "157898": 2207,
│ │ │ │ "1579": [2184, 2186, 2191, 2194],
│ │ │ │ "15793": 2238,
│ │ │ │ "15797": 2235,
│ │ │ │ - "158": [2185, 2186, 2188, 2193, 2195, 2197, 2199, 2201, 2210, 2211, 2256],
│ │ │ │ + "158": [2185, 2186, 2188, 2195, 2197, 2199, 2201, 2210, 2211, 2256],
│ │ │ │ "1580": [2184, 2186, 2194],
│ │ │ │ "15800": 2241,
│ │ │ │ "158091": 15,
│ │ │ │ "158131": 2186,
│ │ │ │ "15819": 2236,
│ │ │ │ "15822": 2235,
│ │ │ │ "15828": 2235,
│ │ │ │ @@ -24726,15 +24725,15 @@
│ │ │ │ "16875": 2238,
│ │ │ │ "16877": 2238,
│ │ │ │ "1688": [2185, 2265],
│ │ │ │ "16889": 2238,
│ │ │ │ "1689": [2185, 2197, 2265],
│ │ │ │ "168904": 2197,
│ │ │ │ "16896": 2238,
│ │ │ │ - "169": [2185, 2186, 2188, 2195, 2197, 2199, 2200, 2201, 2210, 2211, 2283],
│ │ │ │ + "169": [2185, 2186, 2188, 2195, 2197, 2199, 2200, 2201, 2205, 2210, 2211, 2283],
│ │ │ │ "1690": [2185, 2197, 2265],
│ │ │ │ "16900": 2238,
│ │ │ │ "16905": 2238,
│ │ │ │ "169060": 2207,
│ │ │ │ "1690785": [1345, 1391, 1488, 1490, 2202],
│ │ │ │ "16909": 2238,
│ │ │ │ "1691": [2185, 2197, 2263, 2265],
│ │ │ │ @@ -24905,15 +24904,15 @@
│ │ │ │ "1747": 2197,
│ │ │ │ "17471": 2238,
│ │ │ │ "17474": 2238,
│ │ │ │ "1748": 2263,
│ │ │ │ "17493": 2249,
│ │ │ │ "174950": 15,
│ │ │ │ "17496": 2238,
│ │ │ │ - "175": [118, 132, 135, 159, 161, 175, 2185, 2186, 2188, 2195, 2197, 2199, 2200, 2203, 2210, 2211, 2283, 2298],
│ │ │ │ + "175": [118, 132, 135, 159, 161, 175, 2185, 2186, 2188, 2193, 2195, 2197, 2199, 2200, 2203, 2210, 2211, 2283, 2298],
│ │ │ │ "1750": 2246,
│ │ │ │ "17504": 2238,
│ │ │ │ "17508": 2238,
│ │ │ │ "17509": 2238,
│ │ │ │ "17513": 2238,
│ │ │ │ "17525": 2238,
│ │ │ │ "17527": 2238,
│ │ │ │ @@ -25036,15 +25035,15 @@
│ │ │ │ "1798606054": 2199,
│ │ │ │ "179861": [2185, 2197, 2199, 2202],
│ │ │ │ "17990": 2239,
│ │ │ │ "17994": 2246,
│ │ │ │ "179963": 2191,
│ │ │ │ "17min": [213, 345, 788, 2210, 2271],
│ │ │ │ "18": [0, 13, 15, 17, 18, 19, 22, 23, 25, 26, 29, 30, 31, 69, 72, 73, 109, 129, 171, 173, 195, 199, 204, 206, 213, 215, 216, 217, 219, 220, 221, 222, 230, 242, 244, 268, 271, 275, 345, 770, 788, 804, 817, 899, 1019, 1341, 1432, 1434, 1485, 1497, 1498, 1677, 1699, 1720, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2223, 2225, 2226, 2228, 2232, 2235, 2238, 2240, 2241, 2246, 2257, 2261, 2264, 2265, 2271, 2277, 2283, 2289, 2294, 2298, 2302, 2307],
│ │ │ │ - "180": [69, 109, 129, 171, 173, 199, 204, 206, 215, 216, 217, 220, 221, 222, 244, 272, 275, 1487, 2185, 2186, 2188, 2193, 2195, 2197, 2199, 2200, 2210, 2211, 2212, 2235, 2283],
│ │ │ │ + "180": [69, 109, 129, 171, 173, 199, 204, 206, 215, 216, 217, 220, 221, 222, 244, 272, 275, 1487, 2185, 2186, 2188, 2195, 2197, 2199, 2200, 2210, 2211, 2212, 2235, 2283],
│ │ │ │ "180000": 168,
│ │ │ │ "18000000000000": [1773, 1854, 1891, 1909, 1927, 1979, 2033, 2087],
│ │ │ │ "18002": 2241,
│ │ │ │ "18004": 2239,
│ │ │ │ "18020": 2239,
│ │ │ │ "18021": 2302,
│ │ │ │ "18034": 2241,
│ │ │ │ @@ -26347,15 +26346,15 @@
│ │ │ │ "22556": 2246,
│ │ │ │ "22557": 2246,
│ │ │ │ "22578": 2246,
│ │ │ │ "22579": 2246,
│ │ │ │ "22580": 2246,
│ │ │ │ "22591": 2246,
│ │ │ │ "225944": 2207,
│ │ │ │ - "226": [2185, 2186, 2188, 2195, 2197, 2199, 2207, 2210, 2218],
│ │ │ │ + "226": [2185, 2186, 2188, 2195, 2197, 2199, 2207, 2210],
│ │ │ │ "226001": 2207,
│ │ │ │ "22610": 2271,
│ │ │ │ "226127": 28,
│ │ │ │ "226169": [2185, 2197, 2199, 2202, 2204, 2215, 2257],
│ │ │ │ "2262": [985, 2210, 2220, 2250],
│ │ │ │ "22628": 2246,
│ │ │ │ "22631": 2246,
│ │ │ │ @@ -26672,15 +26671,15 @@
│ │ │ │ "24076": 2249,
│ │ │ │ "24077": 2246,
│ │ │ │ "240774": 2191,
│ │ │ │ "24084": 2246,
│ │ │ │ "240848": 2207,
│ │ │ │ "240893": 2207,
│ │ │ │ "240991": 2186,
│ │ │ │ - "241": [2185, 2186, 2188, 2193, 2195, 2197, 2199, 2207, 2210, 2220, 2246, 2254, 2298],
│ │ │ │ + "241": [2185, 2186, 2188, 2195, 2197, 2199, 2207, 2210, 2220, 2246, 2254, 2298],
│ │ │ │ "24103": 2302,
│ │ │ │ "241039": 2230,
│ │ │ │ "2411": 2214,
│ │ │ │ "24110": 2246,
│ │ │ │ "24112": 2265,
│ │ │ │ "24113": 2246,
│ │ │ │ "24114": 2265,
│ │ │ │ @@ -27149,15 +27148,15 @@
│ │ │ │ "26381": 2249,
│ │ │ │ "26385": 2250,
│ │ │ │ "26388": [2269, 2270],
│ │ │ │ "26390": 2249,
│ │ │ │ "263914": 2207,
│ │ │ │ "263952": [2184, 2214],
│ │ │ │ "26397": 2249,
│ │ │ │ - "264": [283, 910, 2186, 2188, 2195, 2197, 2199, 2210],
│ │ │ │ + "264": [283, 910, 2186, 2188, 2195, 2197, 2199, 2210, 2218],
│ │ │ │ "2640": 2215,
│ │ │ │ "264043": 2207,
│ │ │ │ "26405": [2249, 2265],
│ │ │ │ "2641": 2216,
│ │ │ │ "26411": 2283,
│ │ │ │ "26421": 2249,
│ │ │ │ "264223": 2197,
│ │ │ │ @@ -27241,15 +27240,15 @@
│ │ │ │ "26773": 2249,
│ │ │ │ "267767": [1148, 1149],
│ │ │ │ "267827": 2207,
│ │ │ │ "267828": 2207,
│ │ │ │ "2678400": 2218,
│ │ │ │ "2678703": 2218,
│ │ │ │ "2679": 2246,
│ │ │ │ - "268": [2186, 2188, 2195, 2197, 2199, 2210],
│ │ │ │ + "268": [2186, 2188, 2193, 2195, 2197, 2199, 2210],
│ │ │ │ "2680": 2215,
│ │ │ │ "268100": 2207,
│ │ │ │ "268106": 2207,
│ │ │ │ "268121": 2199,
│ │ │ │ "26825": 2249,
│ │ │ │ "2683": 2215,
│ │ │ │ "26835": 2249,
│ │ │ │ @@ -27342,15 +27341,15 @@
│ │ │ │ "27250": 2249,
│ │ │ │ "272593": 2230,
│ │ │ │ "27261": 2251,
│ │ │ │ "272673": 2207,
│ │ │ │ "27283": 2265,
│ │ │ │ "27292": 2265,
│ │ │ │ "272968": 2195,
│ │ │ │ - "273": [2186, 2188, 2195, 2197, 2199, 2202, 2210, 2257],
│ │ │ │ + "273": [2186, 2188, 2195, 2197, 2199, 2202, 2205, 2210, 2257],
│ │ │ │ "2730": 2199,
│ │ │ │ "27309": 2249,
│ │ │ │ "27311": 2265,
│ │ │ │ "27315": 2277,
│ │ │ │ "27321": 2249,
│ │ │ │ "273290": 2207,
│ │ │ │ "273322": 2207,
│ │ │ │ @@ -27386,15 +27385,15 @@
│ │ │ │ "27470": 2250,
│ │ │ │ "27481": 2250,
│ │ │ │ "27482": 2250,
│ │ │ │ "27484": 2250,
│ │ │ │ "27489": 2265,
│ │ │ │ "27495": 2265,
│ │ │ │ "27496": 2250,
│ │ │ │ - "275": [2186, 2188, 2195, 2197, 2199, 2210, 2220],
│ │ │ │ + "275": [2186, 2188, 2193, 2195, 2197, 2199, 2210, 2220],
│ │ │ │ "2750": 25,
│ │ │ │ "27500": 2250,
│ │ │ │ "27516": 2250,
│ │ │ │ "27519": 2265,
│ │ │ │ "27526": 2250,
│ │ │ │ "27529": 2265,
│ │ │ │ "27538": 2265,
│ │ │ │ @@ -27909,15 +27908,15 @@
│ │ │ │ "30163": 2265,
│ │ │ │ "30164": 2271,
│ │ │ │ "30171": 2265,
│ │ │ │ "30173": 2283,
│ │ │ │ "30175": 2265,
│ │ │ │ "301911": 2199,
│ │ │ │ "30193": 2298,
│ │ │ │ - "302": [2186, 2197, 2199, 2207, 2210, 2256],
│ │ │ │ + "302": [2186, 2193, 2197, 2199, 2207, 2210, 2256],
│ │ │ │ "30200": [2265, 2277],
│ │ │ │ "30208": 2265,
│ │ │ │ "302092": 2195,
│ │ │ │ "30219": 2298,
│ │ │ │ "30225": 2265,
│ │ │ │ "30227": 2265,
│ │ │ │ "30228": 2294,
│ │ │ │ @@ -27926,15 +27925,15 @@
│ │ │ │ "30253": 2265,
│ │ │ │ "30270": 2265,
│ │ │ │ "30280": 2265,
│ │ │ │ "302827": 2197,
│ │ │ │ "30288": 2265,
│ │ │ │ "30289": 2265,
│ │ │ │ "30296": [2265, 2298],
│ │ │ │ - "303": [2184, 2186, 2197, 2199, 2202, 2205, 2209, 2210, 2222, 2255],
│ │ │ │ + "303": [2184, 2186, 2197, 2199, 2202, 2209, 2210, 2222, 2255],
│ │ │ │ "30308": 2265,
│ │ │ │ "303099": 2186,
│ │ │ │ "3032": [2184, 2199, 2205],
│ │ │ │ "30320": 2271,
│ │ │ │ "303202": 2219,
│ │ │ │ "303218": 2207,
│ │ │ │ "30322": 2265,
│ │ │ │ @@ -28025,15 +28024,15 @@
│ │ │ │ "3087": 2257,
│ │ │ │ "30871": 2271,
│ │ │ │ "30876": 2271,
│ │ │ │ "30880": 2271,
│ │ │ │ "308847": [16, 19],
│ │ │ │ "30889": 2265,
│ │ │ │ "308975": 2210,
│ │ │ │ - "309": [2186, 2197, 2199, 2201, 2210, 2255],
│ │ │ │ + "309": [2186, 2197, 2199, 2201, 2210, 2218, 2255],
│ │ │ │ "309040": 2197,
│ │ │ │ "309059": 2197,
│ │ │ │ "30918": 2271,
│ │ │ │ "309210": 2207,
│ │ │ │ "30924": 2271,
│ │ │ │ "30929": 2265,
│ │ │ │ "30936": 2265,
│ │ │ │ @@ -28126,15 +28125,15 @@
│ │ │ │ "3136390": 2220,
│ │ │ │ "31364": 2277,
│ │ │ │ "31368": 2273,
│ │ │ │ "313805": 2207,
│ │ │ │ "31389": 2266,
│ │ │ │ "313939": 2199,
│ │ │ │ "31396": 2271,
│ │ │ │ - "314": [2186, 2197, 2199, 2201, 2210],
│ │ │ │ + "314": [2185, 2186, 2197, 2199, 2201, 2210],
│ │ │ │ "31401": 2271,
│ │ │ │ "3141": [1109, 2217, 2246],
│ │ │ │ "31413": 2271,
│ │ │ │ "314148": 2191,
│ │ │ │ "31415": 2271,
│ │ │ │ "314159265": 2,
│ │ │ │ "31422": 2277,
│ │ │ │ @@ -29177,15 +29176,15 @@
│ │ │ │ "36419": 2289,
│ │ │ │ "36430": 2274,
│ │ │ │ "36432": 2277,
│ │ │ │ "36451": 2274,
│ │ │ │ "364628": 2207,
│ │ │ │ "364886": 2230,
│ │ │ │ "36495": 2276,
│ │ │ │ - "365": [303, 445, 514, 516, 544, 546, 655, 923, 2186, 2191, 2195, 2197, 2199, 2205, 2209, 2210, 2249],
│ │ │ │ + "365": [303, 445, 514, 516, 544, 546, 655, 923, 2186, 2191, 2195, 2197, 2199, 2209, 2210, 2249],
│ │ │ │ "3650": 2218,
│ │ │ │ "36525": 2277,
│ │ │ │ "36526": 2274,
│ │ │ │ "36527": 2274,
│ │ │ │ "36530": 2277,
│ │ │ │ "36541": 2277,
│ │ │ │ "3656": 2217,
│ │ │ │ @@ -29276,15 +29275,15 @@
│ │ │ │ "36980": 2277,
│ │ │ │ "36984": 2289,
│ │ │ │ "369849": [2185, 2197, 2199, 2202],
│ │ │ │ "3698493577": 2199,
│ │ │ │ "369894": 2206,
│ │ │ │ "36991": 2283,
│ │ │ │ "37": [15, 17, 18, 19, 139, 140, 213, 230, 345, 788, 804, 1010, 1174, 1175, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2194, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2217, 2218, 2219, 2220, 2222, 2225, 2226, 2228, 2230, 2231, 2232, 2235, 2238, 2241, 2246, 2249, 2265, 2271, 2283, 2298],
│ │ │ │ - "370": [3, 134, 709, 1264, 2186, 2197, 2199, 2205, 2210, 2241, 2255],
│ │ │ │ + "370": [3, 134, 709, 1264, 2186, 2197, 2199, 2210, 2241, 2255],
│ │ │ │ "37001": 2277,
│ │ │ │ "370076": 2230,
│ │ │ │ "370079": 2210,
│ │ │ │ "3702": 2217,
│ │ │ │ "370251": 2230,
│ │ │ │ "370255": 2197,
│ │ │ │ "37037": 2277,
│ │ │ │ @@ -30133,15 +30132,15 @@
│ │ │ │ "410599": 2207,
│ │ │ │ "41062": 2294,
│ │ │ │ "41069": 2283,
│ │ │ │ "41074": 2282,
│ │ │ │ "410835": [2185, 2197, 2199, 2202, 2215, 2257],
│ │ │ │ "41090": 2302,
│ │ │ │ "41098": 2283,
│ │ │ │ - "411": [15, 2186, 2193, 2199, 2207, 2210],
│ │ │ │ + "411": [15, 2186, 2199, 2207, 2210],
│ │ │ │ "4110": 2219,
│ │ │ │ "411013": 2191,
│ │ │ │ "41108": 2283,
│ │ │ │ "41111": 2283,
│ │ │ │ "41118": 2298,
│ │ │ │ "4112": 2218,
│ │ │ │ "411202": 2199,
│ │ │ │ @@ -30871,15 +30870,15 @@
│ │ │ │ "44084": 2289,
│ │ │ │ "44085": 2289,
│ │ │ │ "440865": 2207,
│ │ │ │ "4409": 2218,
│ │ │ │ "44091": 2289,
│ │ │ │ "44096": 2289,
│ │ │ │ "44098": 2289,
│ │ │ │ - "441": [586, 2186, 2199, 2210],
│ │ │ │ + "441": [586, 2186, 2193, 2199, 2210],
│ │ │ │ "44100": 2289,
│ │ │ │ "44105": 2289,
│ │ │ │ "44106": 2288,
│ │ │ │ "441075": 2207,
│ │ │ │ "44109": 2289,
│ │ │ │ "441091": 2207,
│ │ │ │ "441153": 2191,
│ │ │ │ @@ -30891,15 +30890,15 @@
│ │ │ │ "44176": 2289,
│ │ │ │ "44178": 2289,
│ │ │ │ "44179": 2289,
│ │ │ │ "44181": 2289,
│ │ │ │ "44182": 2289,
│ │ │ │ "44190": 2288,
│ │ │ │ "44199": 2294,
│ │ │ │ - "442": [2186, 2199, 2210],
│ │ │ │ + "442": [2186, 2199, 2205, 2210],
│ │ │ │ "44201": 2289,
│ │ │ │ "4421": 2218,
│ │ │ │ "442118": 2207,
│ │ │ │ "44212": [2223, 2289],
│ │ │ │ "442141": 2230,
│ │ │ │ "442166": 2207,
│ │ │ │ "442353": 2186,
│ │ │ │ @@ -30918,15 +30917,15 @@
│ │ │ │ "44265": 2289,
│ │ │ │ "4427": [2192, 2197],
│ │ │ │ "44270": 2289,
│ │ │ │ "44276": 2289,
│ │ │ │ "44279": 2302,
│ │ │ │ "4428": [2192, 2197],
│ │ │ │ "4429": [2192, 2197],
│ │ │ │ - "443": [2193, 2199, 2210],
│ │ │ │ + "443": [2199, 2210],
│ │ │ │ "4430": [2192, 2197],
│ │ │ │ "44304": 2289,
│ │ │ │ "4431": [2192, 2197],
│ │ │ │ "443110": 2185,
│ │ │ │ "44312": 2289,
│ │ │ │ "44316": 2289,
│ │ │ │ "44322": 2289,
│ │ │ │ @@ -31014,15 +31013,15 @@
│ │ │ │ "44752": 2289,
│ │ │ │ "44764": 2294,
│ │ │ │ "44766": 2289,
│ │ │ │ "44772": 2289,
│ │ │ │ "44779": 2257,
│ │ │ │ "44787": 2294,
│ │ │ │ "44793": 2289,
│ │ │ │ - "448": [2193, 2199, 2210, 2249],
│ │ │ │ + "448": [2199, 2210, 2249],
│ │ │ │ "4480": 2218,
│ │ │ │ "44802": 2294,
│ │ │ │ "44818": 2289,
│ │ │ │ "4482": 2218,
│ │ │ │ "44821": 2289,
│ │ │ │ "44826": 2289,
│ │ │ │ "4486": 2218,
│ │ │ │ @@ -31030,15 +31029,15 @@
│ │ │ │ "44864": 2289,
│ │ │ │ "44873": 2289,
│ │ │ │ "4488": 2218,
│ │ │ │ "448851": 2195,
│ │ │ │ "44891": 2289,
│ │ │ │ "44896": 2298,
│ │ │ │ "448992": 2207,
│ │ │ │ - "449": [2199, 2210, 2249],
│ │ │ │ + "449": [2199, 2205, 2210, 2249],
│ │ │ │ "44900": 2289,
│ │ │ │ "449092": 2191,
│ │ │ │ "4491": 2219,
│ │ │ │ "44914": 2294,
│ │ │ │ "44916": 2289,
│ │ │ │ "44917": 2298,
│ │ │ │ "44923": 2298,
│ │ │ │ @@ -31470,15 +31469,15 @@
│ │ │ │ "4686": 2218,
│ │ │ │ "46867": 2292,
│ │ │ │ "46870": 2293,
│ │ │ │ "46877": 2302,
│ │ │ │ "4688": 2221,
│ │ │ │ "46891": 2293,
│ │ │ │ "46896": 2294,
│ │ │ │ - "469": [29, 2193, 2199, 2207, 2210, 2220],
│ │ │ │ + "469": [29, 2199, 2207, 2210, 2220],
│ │ │ │ "4690": 2221,
│ │ │ │ "46900": 2292,
│ │ │ │ "46903": 2294,
│ │ │ │ "46904": 2292,
│ │ │ │ "46906": 2298,
│ │ │ │ "469070": 2207,
│ │ │ │ "4691": [2184, 2186, 2191],
│ │ │ │ @@ -32627,15 +32626,14 @@
│ │ │ │ "5271": 2218,
│ │ │ │ "527146": 2210,
│ │ │ │ "527206": 2207,
│ │ │ │ "52728": 2302,
│ │ │ │ "527525": [1195, 1256, 1292],
│ │ │ │ "52760": 2299,
│ │ │ │ "52761": 2299,
│ │ │ │ - "527625": 2228,
│ │ │ │ "52764": 2302,
│ │ │ │ "527645": 2207,
│ │ │ │ "52777": 2302,
│ │ │ │ "52781": 2302,
│ │ │ │ "52788": 2302,
│ │ │ │ "52795": 2299,
│ │ │ │ "528": 2199,
│ │ │ │ @@ -32648,15 +32646,14 @@
│ │ │ │ "52836": 2302,
│ │ │ │ "52840": 2302,
│ │ │ │ "52843": 2299,
│ │ │ │ "52849": 2302,
│ │ │ │ "528496": 2199,
│ │ │ │ "52859": 2302,
│ │ │ │ "52872": 2300,
│ │ │ │ - "528798": 2228,
│ │ │ │ "528895": 2166,
│ │ │ │ "52897": 2302,
│ │ │ │ "52898": 2302,
│ │ │ │ "529": 2199,
│ │ │ │ "52904": 2302,
│ │ │ │ "52909": 2300,
│ │ │ │ "52927": 2307,
│ │ │ │ @@ -33841,15 +33838,15 @@
│ │ │ │ "619104": 2207,
│ │ │ │ "619366": 2207,
│ │ │ │ "6194": 2232,
│ │ │ │ "61941": 2257,
│ │ │ │ "6199759194": 2199,
│ │ │ │ "619976": [2185, 2191, 2197, 2199, 2202, 2204],
│ │ │ │ "619993": 2235,
│ │ │ │ - "62": [15, 17, 18, 19, 81, 187, 213, 242, 283, 763, 788, 817, 910, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271],
│ │ │ │ + "62": [15, 17, 18, 19, 81, 187, 213, 242, 283, 763, 788, 817, 910, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271],
│ │ │ │ "620": [16, 17, 18, 19, 2199, 2203, 2232, 2235, 2262, 2298],
│ │ │ │ "620145": 2191,
│ │ │ │ "62036035": [624, 1215],
│ │ │ │ "620399": 2199,
│ │ │ │ "620498": 2207,
│ │ │ │ "6205": 2220,
│ │ │ │ "620544": 2191,
│ │ │ │ @@ -34089,15 +34086,15 @@
│ │ │ │ "649682": 28,
│ │ │ │ "649711": 2212,
│ │ │ │ "649727": 2191,
│ │ │ │ "649748": 2186,
│ │ │ │ "64bit": 2298,
│ │ │ │ "64ec62289cb4": 2203,
│ │ │ │ "65": [17, 19, 259, 890, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2255, 2271],
│ │ │ │ - "650": [2199, 2298],
│ │ │ │ + "650": [2193, 2199, 2298],
│ │ │ │ "65000000": [176, 179, 754, 757, 1242, 1243],
│ │ │ │ "6504": 2220,
│ │ │ │ "650762": 2199,
│ │ │ │ "650776": 2202,
│ │ │ │ "650794": [121, 696],
│ │ │ │ "6508": 2249,
│ │ │ │ "650845e": 2191,
│ │ │ │ @@ -34168,15 +34165,15 @@
│ │ │ │ "658444": [2184, 2257],
│ │ │ │ "658537": 2184,
│ │ │ │ "658598": 2207,
│ │ │ │ "6587": 2220,
│ │ │ │ "6588664275960427": 2206,
│ │ │ │ "658899": 2207,
│ │ │ │ "6589": 2206,
│ │ │ │ - "659": [2193, 2199],
│ │ │ │ + "659": 2199,
│ │ │ │ "659221": 2207,
│ │ │ │ "659369": 2207,
│ │ │ │ "659584": 2207,
│ │ │ │ "659955": 2207,
│ │ │ │ "66": [17, 19, 139, 140, 219, 273, 900, 1174, 1175, 1433, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271],
│ │ │ │ "660": [2199, 2201],
│ │ │ │ "6600": 2220,
│ │ │ │ @@ -34386,27 +34383,27 @@
│ │ │ │ "6814": 2185,
│ │ │ │ "681456": [15, 2219],
│ │ │ │ "6815": 2185,
│ │ │ │ "6816": 2220,
│ │ │ │ "6817": [2185, 2220],
│ │ │ │ "6818": [2185, 2220],
│ │ │ │ "681973": 2207,
│ │ │ │ - "682": [2193, 2197],
│ │ │ │ + "682": 2197,
│ │ │ │ "682402": 2199,
│ │ │ │ "682596e": 2191,
│ │ │ │ "682781": 2207,
│ │ │ │ "683276": 2207,
│ │ │ │ "683333": 2222,
│ │ │ │ "6834": 2220,
│ │ │ │ "683463": 2230,
│ │ │ │ "683536": 2197,
│ │ │ │ "683763": 2186,
│ │ │ │ "683774": 2207,
│ │ │ │ "683847": 2195,
│ │ │ │ - "684": [2193, 2197],
│ │ │ │ + "684": 2197,
│ │ │ │ "684267": 2207,
│ │ │ │ "684360": 2195,
│ │ │ │ "684640": 2186,
│ │ │ │ "6847": 2220,
│ │ │ │ "684718": 2197,
│ │ │ │ "685": [2186, 2197, 2227],
│ │ │ │ "685094": 2207,
│ │ │ │ @@ -34489,15 +34486,15 @@
│ │ │ │ "693043": 2210,
│ │ │ │ "6932": 2222,
│ │ │ │ "693205": [2184, 2214],
│ │ │ │ "693429": 28,
│ │ │ │ "6937": 2221,
│ │ │ │ "693884": 2210,
│ │ │ │ "6939": 2220,
│ │ │ │ - "694": 2199,
│ │ │ │ + "694": [2193, 2199],
│ │ │ │ "694268": 28,
│ │ │ │ "6945": 2241,
│ │ │ │ "694592": 2207,
│ │ │ │ "695": 2199,
│ │ │ │ "6951": 2220,
│ │ │ │ "695148": 2186,
│ │ │ │ "6952": 2220,
│ │ │ │ @@ -34957,15 +34954,14 @@
│ │ │ │ "7534": 2221,
│ │ │ │ "753444": 2207,
│ │ │ │ "753606": 2199,
│ │ │ │ "753611": 2207,
│ │ │ │ "753623": 2191,
│ │ │ │ "753747": 2207,
│ │ │ │ "7539": 2221,
│ │ │ │ - "754": 2193,
│ │ │ │ "7540": 2222,
│ │ │ │ "754005": 2210,
│ │ │ │ "7542": 2222,
│ │ │ │ "7543": 2222,
│ │ │ │ "754659": 2191,
│ │ │ │ "755": [29, 2298],
│ │ │ │ "7551": 2221,
│ │ │ │ @@ -35109,25 +35105,27 @@
│ │ │ │ "775558e": 2222,
│ │ │ │ "775602": 2207,
│ │ │ │ "7757": 2238,
│ │ │ │ "7758": 2222,
│ │ │ │ "775880": 2186,
│ │ │ │ "7760": 2222,
│ │ │ │ "7761": 2222,
│ │ │ │ + "776196": 2228,
│ │ │ │ "7762": 2222,
│ │ │ │ "7763": 2222,
│ │ │ │ "7766": 2222,
│ │ │ │ "776734": 2207,
│ │ │ │ "7768": [2222, 2241],
│ │ │ │ "7769": 2191,
│ │ │ │ "776904": [2185, 2197, 2199, 2215, 2218, 2219, 2257],
│ │ │ │ "777037": 2207,
│ │ │ │ "7771": 2225,
│ │ │ │ "7772": 2222,
│ │ │ │ "7774": 2222,
│ │ │ │ + "777455": 2228,
│ │ │ │ "777482e": 2191,
│ │ │ │ "777490": 2207,
│ │ │ │ "7775": 2249,
│ │ │ │ "777643": 2207,
│ │ │ │ "7777": 2222,
│ │ │ │ "7778": 2222,
│ │ │ │ "7780": 2222,
│ │ │ │ @@ -35522,15 +35520,15 @@
│ │ │ │ "8285": 2225,
│ │ │ │ "8287": 2232,
│ │ │ │ "828904": 2191,
│ │ │ │ "8292": 2232,
│ │ │ │ "829645": 2207,
│ │ │ │ "829678": 2191,
│ │ │ │ "829721": 2212,
│ │ │ │ - "83": [15, 24, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271],
│ │ │ │ + "83": [15, 24, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271],
│ │ │ │ "8302": 2224,
│ │ │ │ "8303": 2222,
│ │ │ │ "830429": 2207,
│ │ │ │ "8305": 2222,
│ │ │ │ "830545": 2199,
│ │ │ │ "8306": [2243, 2246],
│ │ │ │ "830957": 2207,
│ │ │ │ @@ -36020,15 +36018,15 @@
│ │ │ │ "8983": 2224,
│ │ │ │ "8984": 2202,
│ │ │ │ "8984347": 2202,
│ │ │ │ "8986": 2225,
│ │ │ │ "898725": 2197,
│ │ │ │ "898872": 2214,
│ │ │ │ "8989": 2224,
│ │ │ │ - "899": 2199,
│ │ │ │ + "899": [2193, 2199],
│ │ │ │ "8991": 2289,
│ │ │ │ "899173761": 2199,
│ │ │ │ "899260": 15,
│ │ │ │ "8994": 2224,
│ │ │ │ "899734": 15,
│ │ │ │ "8999": 2229,
│ │ │ │ "8a2e": 2241,
│ │ │ │ @@ -36048,15 +36046,15 @@
│ │ │ │ "9009": 2225,
│ │ │ │ "900906": 2207,
│ │ │ │ "901": 2199,
│ │ │ │ "9011": 2224,
│ │ │ │ "9012": 2224,
│ │ │ │ "9016": 2225,
│ │ │ │ "902": 2199,
│ │ │ │ - "903": [2193, 2199],
│ │ │ │ + "903": 2199,
│ │ │ │ "9031": 2246,
│ │ │ │ "903246": 2207,
│ │ │ │ "903450": 1340,
│ │ │ │ "9037": 2225,
│ │ │ │ "903794": 2186,
│ │ │ │ "904": 2199,
│ │ │ │ "9046": 2277,
│ │ │ │ @@ -36234,15 +36232,15 @@
│ │ │ │ "929553": 2199,
│ │ │ │ "929556": 2207,
│ │ │ │ "929561": 2207,
│ │ │ │ "929563": 2191,
│ │ │ │ "929567": 2191,
│ │ │ │ "9297": 2230,
│ │ │ │ "93": [15, 718, 1447, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2207, 2208, 2209, 2210, 2211, 2214, 2218, 2220, 2222, 2226, 2230, 2232, 2235, 2246, 2257, 2298],
│ │ │ │ - "930": [2193, 2289],
│ │ │ │ + "930": 2289,
│ │ │ │ "930201": 2191,
│ │ │ │ "9304": 2283,
│ │ │ │ "930687": 2217,
│ │ │ │ "930806": 2210,
│ │ │ │ "9309": 2271,
│ │ │ │ "9311": [2225, 2228],
│ │ │ │ "931203": 2204,
│ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html
│ │ │ @@ -1847,25 +1847,25 @@
│ │ │ In [141]: indexer = np.arange(10000)
│ │ │
│ │ │ In [142]: random.shuffle(indexer)
│ │ │
│ │ │ In [143]: %timeit arr[indexer]
│ │ │ .....: %timeit arr.take(indexer, axis=0)
│ │ │ .....:
│ │ │ -191 us +- 30.1 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ -48 us +- 2.32 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ +314 us +- 57.1 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ +53.6 us +- 5.83 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │
│ │ │
│ │ │ In [144]: ser = pd.Series(arr[:, 0])
│ │ │
│ │ │ In [145]: %timeit ser.iloc[indexer]
│ │ │ .....: %timeit ser.take(indexer)
│ │ │ .....:
│ │ │ -103 us +- 20.5 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ -82.9 us +- 1.46 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ +96.1 us +- 1.56 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ +99.2 us +- 21.9 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │ Index types
│ │ │ We have discussed MultiIndex
in the previous sections pretty extensively.
│ │ │ Documentation about DatetimeIndex
and PeriodIndex
are shown here,
│ │ │ ├── html2text {}
│ │ │ │ @@ -1245,23 +1245,23 @@
│ │ │ │ In [141]: indexer = np.arange(10000)
│ │ │ │
│ │ │ │ In [142]: random.shuffle(indexer)
│ │ │ │
│ │ │ │ In [143]: %timeit arr[indexer]
│ │ │ │ .....: %timeit arr.take(indexer, axis=0)
│ │ │ │ .....:
│ │ │ │ -191 us +- 30.1 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ -48 us +- 2.32 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ +314 us +- 57.1 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ +53.6 us +- 5.83 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ In [144]: ser = pd.Series(arr[:, 0])
│ │ │ │
│ │ │ │ In [145]: %timeit ser.iloc[indexer]
│ │ │ │ .....: %timeit ser.take(indexer)
│ │ │ │ .....:
│ │ │ │ -103 us +- 20.5 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ -82.9 us +- 1.46 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ +96.1 us +- 1.56 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ +99.2 us +- 21.9 us per loop (mean +- std. dev. of 7 runs, 10,000 loops each)
│ │ │ │ ********** IInnddeexx ttyyppeess_## **********
│ │ │ │ We have discussed MultiIndex in the previous sections pretty extensively.
│ │ │ │ Documentation about DatetimeIndex and PeriodIndex are shown _h_e_r_e, and
│ │ │ │ documentation about TimedeltaIndex is found _h_e_r_e.
│ │ │ │ In the following sub-sections we will highlight some other index types.
│ │ │ │ ******** CCaatteeggoorriiccaallIInnddeexx_## ********
│ │ │ │ _C_a_t_e_g_o_r_i_c_a_l_I_n_d_e_x is a type of index that is useful for supporting indexing with
│ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html
│ │ │ @@ -592,31 +592,31 @@
│ │ │ ...: s += f(a + i * dx)
│ │ │ ...: return s * dx
│ │ │ ...:
│ │ │
│ │ │
│ │ │
We achieve our result by using DataFrame.apply()
(row-wise):
│ │ │ In [5]: %timeit df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1)
│ │ │ -56.6 ms +- 411 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ +49.3 ms +- 2.23 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │
│ │ │
│ │ │ Let’s take a look and see where the time is spent during this operation
│ │ │ using the prun ipython magic function:
│ │ │ # most time consuming 4 calls
│ │ │ In [6]: %prun -l 4 df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1) # noqa E999
│ │ │ - 605946 function calls (605928 primitive calls) in 0.180 seconds
│ │ │ + 605946 function calls (605928 primitive calls) in 0.175 seconds
│ │ │
│ │ │ Ordered by: internal time
│ │ │ List reduced from 159 to 4 due to restriction <4>
│ │ │
│ │ │ ncalls tottime percall cumtime percall filename:lineno(function)
│ │ │ - 1000 0.110 0.000 0.158 0.000 <ipython-input-4-c2a74e076cf0>:1(integrate_f)
│ │ │ - 552423 0.047 0.000 0.047 0.000 <ipython-input-3-c138bdd570e3>:1(f)
│ │ │ - 3000 0.004 0.000 0.015 0.000 series.py:1095(__getitem__)
│ │ │ - 3000 0.003 0.000 0.007 0.000 series.py:1220(_get_value)
│ │ │ + 1000 0.101 0.000 0.153 0.000 <ipython-input-4-c2a74e076cf0>:1(integrate_f)
│ │ │ + 552423 0.052 0.000 0.052 0.000 <ipython-input-3-c138bdd570e3>:1(f)
│ │ │ + 3000 0.004 0.000 0.014 0.000 series.py:1095(__getitem__)
│ │ │ + 3000 0.003 0.000 0.006 0.000 series.py:1220(_get_value)
│ │ │
│ │ │
│ │ │ By far the majority of time is spend inside either integrate_f
or f
,
│ │ │ hence we’ll concentrate our efforts cythonizing these two functions.
│ │ │
│ │ │
│ │ │ Plain Cython
│ │ │ @@ -634,15 +634,15 @@
│ │ │ ...: for i in range(N):
│ │ │ ...: s += f_plain(a + i * dx)
│ │ │ ...: return s * dx
│ │ │ ...:
│ │ │
│ │ │
│ │ │ In [9]: %timeit df.apply(lambda x: integrate_f_plain(x["a"], x["b"], x["N"]), axis=1)
│ │ │ -67.8 ms +- 13.3 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ +58.5 ms +- 2.13 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │
│ │ │
│ │ │ This has improved the performance compared to the pure Python approach by one-third.
│ │ │
│ │ │
│ │ │ Declaring C types
│ │ │ We can annotate the function variables and return types as well as use cdef
│ │ │ @@ -658,36 +658,36 @@
│ │ │ ....: for i in range(N):
│ │ │ ....: s += f_typed(a + i * dx)
│ │ │ ....: return s * dx
│ │ │ ....:
│ │ │
│ │ │
│ │ │
In [11]: %timeit df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]), axis=1)
│ │ │ -7.61 ms +- 469 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +6.66 ms +- 131 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ Annotating the functions with C types yields an over ten times performance improvement compared to
│ │ │ the original Python implementation.
│ │ │
│ │ │
│ │ │ Using ndarray
│ │ │ When re-profiling, time is spent creating a Series
from each row, and calling __getitem__
from both
│ │ │ the index and the series (three times for each row). These Python function calls are expensive and
│ │ │ can be improved by passing an np.ndarray
.
│ │ │ In [12]: %prun -l 4 df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]), axis=1)
│ │ │ - 52523 function calls (52505 primitive calls) in 0.023 seconds
│ │ │ + 52523 function calls (52505 primitive calls) in 0.021 seconds
│ │ │
│ │ │ Ordered by: internal time
│ │ │ List reduced from 157 to 4 due to restriction <4>
│ │ │
│ │ │ ncalls tottime percall cumtime percall filename:lineno(function)
│ │ │ - 3000 0.004 0.000 0.015 0.000 series.py:1095(__getitem__)
│ │ │ - 3000 0.003 0.000 0.007 0.000 series.py:1220(_get_value)
│ │ │ - 3000 0.002 0.000 0.003 0.000 base.py:3777(get_loc)
│ │ │ + 3000 0.004 0.000 0.014 0.000 series.py:1095(__getitem__)
│ │ │ + 3000 0.002 0.000 0.006 0.000 series.py:1220(_get_value)
│ │ │ 16098 0.002 0.000 0.003 0.000 {built-in method builtins.isinstance}
│ │ │ + 3000 0.002 0.000 0.002 0.000 base.py:3777(get_loc)
│ │ │
│ │ │
│ │ │ In [13]: %%cython
│ │ │ ....: cimport numpy as np
│ │ │ ....: import numpy as np
│ │ │ ....: cdef double f_typed(double x) except? -2:
│ │ │ ....: return x * (x - 1)
│ │ │ @@ -722,15 +722,15 @@
│ │ │
│ │ │
This implementation creates an array of zeros and inserts the result
│ │ │ of integrate_f_typed
applied over each row. Looping over an ndarray
is faster
│ │ │ in Cython than looping over a Series
object.
│ │ │
Since apply_integrate_f
is typed to accept an np.ndarray
, Series.to_numpy()
│ │ │ calls are needed to utilize this function.
│ │ │
In [14]: %timeit apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(), df["N"].to_numpy())
│ │ │ -930 us +- 30.9 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ +899 us +- 2.63 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │
│ │ │
│ │ │
Performance has improved from the prior implementation by almost ten times.
│ │ │
│ │ │
│ │ │ Disabling compiler directives
│ │ │ The majority of the time is now spent in apply_integrate_f
. Disabling Cython’s boundscheck
│ │ │ @@ -782,15 +782,15 @@
│ │ │ from /build/reproducible-path/pandas-2.2.3+dfsg/buildtmp/.cache/ipython/cython/_cython_magic_883da8958ecc60be73b28b7124368f9c7cc2d174.c:1251:
│ │ │ /usr/lib/x86_64-linux-gnu/python3-numpy/numpy/_core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
│ │ │ 17 | #warning "Using deprecated NumPy API, disable it with " \
│ │ │ | ^~~~~~~
│ │ │
│ │ │
│ │ │ In [17]: %timeit apply_integrate_f_wrap(df["a"].to_numpy(), df["b"].to_numpy(), df["N"].to_numpy())
│ │ │ -659 us +- 167 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ +650 us +- 2.36 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │
│ │ │
│ │ │ However, a loop indexer i
accessing an invalid location in an array would cause a segfault because memory access isn’t checked.
│ │ │ For more about boundscheck
and wraparound
, see the Cython docs on
│ │ │ compiler directives.
│ │ │
│ │ │
│ │ │ @@ -1148,19 +1148,19 @@
│ │ │ compared to standard Python syntax for large DataFrame
. This engine requires the
│ │ │ optional dependency numexpr
to be installed.
│ │ │ The 'python'
engine is generally not useful except for testing
│ │ │ other evaluation engines against it. You will achieve no performance
│ │ │ benefits using eval()
with engine='python'
and may
│ │ │ incur a performance hit.
│ │ │ In [40]: %timeit df1 + df2 + df3 + df4
│ │ │ -9.01 ms +- 448 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +10.3 ms +- 694 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ In [41]: %timeit pd.eval("df1 + df2 + df3 + df4", engine="python")
│ │ │ -12.3 ms +- 754 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +10.1 ms +- 441 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │ In addition to the top level pandas.eval()
function you can also
│ │ │ evaluate an expression in the “context” of a DataFrame
.
│ │ │ @@ -1275,39 +1275,39 @@
│ │ │ In [58]: nrows, ncols = 20000, 100
│ │ │
│ │ │ In [59]: df1, df2, df3, df4 = [pd.DataFrame(np.random.randn(nrows, ncols)) for _ in range(4)]
│ │ │
│ │ │
│ │ │ DataFrame
arithmetic:
│ │ │ In [60]: %timeit df1 + df2 + df3 + df4
│ │ │ -8.83 ms +- 443 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +9.27 ms +- 268 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ In [61]: %timeit pd.eval("df1 + df2 + df3 + df4")
│ │ │ -5.63 ms +- 684 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +3.64 ms +- 159 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ DataFrame
comparison:
│ │ │ In [62]: %timeit (df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)
│ │ │ -10.7 ms +- 903 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +4.3 ms +- 275 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ In [63]: %timeit pd.eval("(df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)")
│ │ │ -10.5 ms +- 682 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +5.26 ms +- 302 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ DataFrame
arithmetic with unaligned axes.
│ │ │ In [64]: s = pd.Series(np.random.randn(50))
│ │ │
│ │ │ In [65]: %timeit df1 + df2 + df3 + df4 + s
│ │ │ -22.8 ms +- 443 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ +15.1 ms +- 1.4 ms per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │ In [66]: %timeit pd.eval("df1 + df2 + df3 + df4 + s")
│ │ │ -8.5 ms +- 241 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ +3.53 ms +- 105 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │
│ │ │
│ │ │
│ │ │
Note
│ │ │
Operations such as
│ │ │
1 and 2 # would parse to 1 & 2, but should evaluate to 2
│ │ │ 3 or 4 # would parse to 3 | 4, but should evaluate to 3
│ │ │ ├── html2text {}
│ │ │ │ @@ -110,32 +110,32 @@
│ │ │ │ ...: dx = (b - a) / N
│ │ │ │ ...: for i in range(N):
│ │ │ │ ...: s += f(a + i * dx)
│ │ │ │ ...: return s * dx
│ │ │ │ ...:
│ │ │ │ We achieve our result by using _D_a_t_a_F_r_a_m_e_._a_p_p_l_y_(_) (row-wise):
│ │ │ │ In [5]: %timeit df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ -56.6 ms +- 411 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +49.3 ms +- 2.23 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ Let’s take a look and see where the time is spent during this operation using
│ │ │ │ the _p_r_u_n_ _i_p_y_t_h_o_n_ _m_a_g_i_c_ _f_u_n_c_t_i_o_n:
│ │ │ │ # most time consuming 4 calls
│ │ │ │ In [6]: %prun -l 4 df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]),
│ │ │ │ axis=1) # noqa E999
│ │ │ │ - 605946 function calls (605928 primitive calls) in 0.180 seconds
│ │ │ │ + 605946 function calls (605928 primitive calls) in 0.175 seconds
│ │ │ │
│ │ │ │ Ordered by: internal time
│ │ │ │ List reduced from 159 to 4 due to restriction <4>
│ │ │ │
│ │ │ │ ncalls tottime percall cumtime percall filename:lineno(function)
│ │ │ │ - 1000 0.110 0.000 0.158 0.000 :1
│ │ │ │ + 1000 0.101 0.000 0.153 0.000 :1
│ │ │ │ (integrate_f)
│ │ │ │ - 552423 0.047 0.000 0.047 0.000 :1
│ │ │ │ + 552423 0.052 0.000 0.052 0.000 :1
│ │ │ │ (f)
│ │ │ │ - 3000 0.004 0.000 0.015 0.000 series.py:1095(__getitem__)
│ │ │ │ - 3000 0.003 0.000 0.007 0.000 series.py:1220(_get_value)
│ │ │ │ + 3000 0.004 0.000 0.014 0.000 series.py:1095(__getitem__)
│ │ │ │ + 3000 0.003 0.000 0.006 0.000 series.py:1220(_get_value)
│ │ │ │ By far the majority of time is spend inside either integrate_f or f, hence
│ │ │ │ we’ll concentrate our efforts cythonizing these two functions.
│ │ │ │ ******** PPllaaiinn CCyytthhoonn_## ********
│ │ │ │ First we’re going to need to import the Cython magic function to IPython:
│ │ │ │ In [7]: %load_ext Cython
│ │ │ │ Now, let’s simply copy our functions over to Cython:
│ │ │ │ In [8]: %%cython
│ │ │ │ @@ -146,15 +146,15 @@
│ │ │ │ ...: dx = (b - a) / N
│ │ │ │ ...: for i in range(N):
│ │ │ │ ...: s += f_plain(a + i * dx)
│ │ │ │ ...: return s * dx
│ │ │ │ ...:
│ │ │ │ In [9]: %timeit df.apply(lambda x: integrate_f_plain(x["a"], x["b"], x["N"]),
│ │ │ │ axis=1)
│ │ │ │ -67.8 ms +- 13.3 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +58.5 ms +- 2.13 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ This has improved the performance compared to the pure Python approach by one-
│ │ │ │ third.
│ │ │ │ ******** DDeeccllaarriinngg CC ttyyppeess_## ********
│ │ │ │ We can annotate the function variables and return types as well as use cdef and
│ │ │ │ cpdef to improve performance:
│ │ │ │ In [10]: %%cython
│ │ │ │ ....: cdef double f_typed(double x) except? -2:
│ │ │ │ @@ -166,35 +166,35 @@
│ │ │ │ ....: dx = (b - a) / N
│ │ │ │ ....: for i in range(N):
│ │ │ │ ....: s += f_typed(a + i * dx)
│ │ │ │ ....: return s * dx
│ │ │ │ ....:
│ │ │ │ In [11]: %timeit df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]),
│ │ │ │ axis=1)
│ │ │ │ -7.61 ms +- 469 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +6.66 ms +- 131 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ Annotating the functions with C types yields an over ten times performance
│ │ │ │ improvement compared to the original Python implementation.
│ │ │ │ ******** UUssiinngg nnddaarrrraayy_## ********
│ │ │ │ When re-profiling, time is spent creating a _S_e_r_i_e_s from each row, and calling
│ │ │ │ __getitem__ from both the index and the series (three times for each row).
│ │ │ │ These Python function calls are expensive and can be improved by passing an
│ │ │ │ np.ndarray.
│ │ │ │ In [12]: %prun -l 4 df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x
│ │ │ │ ["N"]), axis=1)
│ │ │ │ - 52523 function calls (52505 primitive calls) in 0.023 seconds
│ │ │ │ + 52523 function calls (52505 primitive calls) in 0.021 seconds
│ │ │ │
│ │ │ │ Ordered by: internal time
│ │ │ │ List reduced from 157 to 4 due to restriction <4>
│ │ │ │
│ │ │ │ ncalls tottime percall cumtime percall filename:lineno(function)
│ │ │ │ - 3000 0.004 0.000 0.015 0.000 series.py:1095(__getitem__)
│ │ │ │ - 3000 0.003 0.000 0.007 0.000 series.py:1220(_get_value)
│ │ │ │ - 3000 0.002 0.000 0.003 0.000 base.py:3777(get_loc)
│ │ │ │ + 3000 0.004 0.000 0.014 0.000 series.py:1095(__getitem__)
│ │ │ │ + 3000 0.002 0.000 0.006 0.000 series.py:1220(_get_value)
│ │ │ │ 16098 0.002 0.000 0.003 0.000 {built-in method
│ │ │ │ builtins.isinstance}
│ │ │ │ + 3000 0.002 0.000 0.002 0.000 base.py:3777(get_loc)
│ │ │ │ In [13]: %%cython
│ │ │ │ ....: cimport numpy as np
│ │ │ │ ....: import numpy as np
│ │ │ │ ....: cdef double f_typed(double x) except? -2:
│ │ │ │ ....: return x * (x - 1)
│ │ │ │ ....: cpdef double integrate_f_typed(double a, double b, int N):
│ │ │ │ ....: cdef int i
│ │ │ │ @@ -235,15 +235,15 @@
│ │ │ │ This implementation creates an array of zeros and inserts the result of
│ │ │ │ integrate_f_typed applied over each row. Looping over an ndarray is faster in
│ │ │ │ Cython than looping over a _S_e_r_i_e_s object.
│ │ │ │ Since apply_integrate_f is typed to accept an np.ndarray, _S_e_r_i_e_s_._t_o___n_u_m_p_y_(_)
│ │ │ │ calls are needed to utilize this function.
│ │ │ │ In [14]: %timeit apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(), df
│ │ │ │ ["N"].to_numpy())
│ │ │ │ -930 us +- 30.9 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ +899 us +- 2.63 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ Performance has improved from the prior implementation by almost ten times.
│ │ │ │ ******** DDiissaabblliinngg ccoommppiilleerr ddiirreeccttiivveess_## ********
│ │ │ │ The majority of the time is now spent in apply_integrate_f. Disabling Cython’s
│ │ │ │ boundscheck and wraparound checks can yield more performance.
│ │ │ │ In [15]: %prun -l 4 apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(),
│ │ │ │ df["N"].to_numpy())
│ │ │ │ 78 function calls in 0.001 seconds
│ │ │ │ @@ -298,15 +298,15 @@
│ │ │ │ /usr/lib/x86_64-linux-gnu/python3-numpy/numpy/_core/include/numpy/
│ │ │ │ npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API,
│ │ │ │ disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
│ │ │ │ 17 | #warning "Using deprecated NumPy API, disable it with " \
│ │ │ │ | ^~~~~~~
│ │ │ │ In [17]: %timeit apply_integrate_f_wrap(df["a"].to_numpy(), df["b"].to_numpy(),
│ │ │ │ df["N"].to_numpy())
│ │ │ │ -659 us +- 167 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ +650 us +- 2.36 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ However, a loop indexer i accessing an invalid location in an array would cause
│ │ │ │ a segfault because memory access isn’t checked. For more about boundscheck and
│ │ │ │ wraparound, see the Cython docs on _c_o_m_p_i_l_e_r_ _d_i_r_e_c_t_i_v_e_s.
│ │ │ │ ********** NNuummbbaa ((JJIITT ccoommppiillaattiioonn))_## **********
│ │ │ │ An alternative to statically compiling Cython code is to use a dynamic just-in-
│ │ │ │ time (JIT) compiler with _N_u_m_b_a.
│ │ │ │ Numba allows you to write a pure Python function which can be JIT compiled to
│ │ │ │ @@ -609,17 +609,17 @@
│ │ │ │ The 'numexpr' engine is the more performant engine that can yield performance
│ │ │ │ improvements compared to standard Python syntax for large _D_a_t_a_F_r_a_m_e. This
│ │ │ │ engine requires the optional dependency numexpr to be installed.
│ │ │ │ The 'python' engine is generally nnoott useful except for testing other evaluation
│ │ │ │ engines against it. You will achieve nnoo performance benefits using _e_v_a_l_(_) with
│ │ │ │ engine='python' and may incur a performance hit.
│ │ │ │ In [40]: %timeit df1 + df2 + df3 + df4
│ │ │ │ -9.01 ms +- 448 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +10.3 ms +- 694 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ In [41]: %timeit pd.eval("df1 + df2 + df3 + df4", engine="python")
│ │ │ │ -12.3 ms +- 754 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +10.1 ms +- 441 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ ******** TThhee _DD_aa_tt_aa_FF_rr_aa_mm_ee_.._ee_vv_aa_ll_((_)) mmeetthhoodd_## ********
│ │ │ │ In addition to the top level _p_a_n_d_a_s_._e_v_a_l_(_) function you can also evaluate an
│ │ │ │ expression in the “context” of a _D_a_t_a_F_r_a_m_e.
│ │ │ │ In [42]: df = pd.DataFrame(np.random.randn(5, 2), columns=["a", "b"])
│ │ │ │
│ │ │ │ In [43]: df.eval("a + b")
│ │ │ │ Out[43]:
│ │ │ │ @@ -716,29 +716,29 @@
│ │ │ │ _p_a_n_d_a_s_._e_v_a_l_(_) works well with expressions containing large arrays.
│ │ │ │ In [58]: nrows, ncols = 20000, 100
│ │ │ │
│ │ │ │ In [59]: df1, df2, df3, df4 = [pd.DataFrame(np.random.randn(nrows, ncols)) for
│ │ │ │ _ in range(4)]
│ │ │ │ _D_a_t_a_F_r_a_m_e arithmetic:
│ │ │ │ In [60]: %timeit df1 + df2 + df3 + df4
│ │ │ │ -8.83 ms +- 443 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +9.27 ms +- 268 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ In [61]: %timeit pd.eval("df1 + df2 + df3 + df4")
│ │ │ │ -5.63 ms +- 684 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +3.64 ms +- 159 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ _D_a_t_a_F_r_a_m_e comparison:
│ │ │ │ In [62]: %timeit (df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)
│ │ │ │ -10.7 ms +- 903 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +4.3 ms +- 275 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ In [63]: %timeit pd.eval("(df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)")
│ │ │ │ -10.5 ms +- 682 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +5.26 ms +- 302 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ _D_a_t_a_F_r_a_m_e arithmetic with unaligned axes.
│ │ │ │ In [64]: s = pd.Series(np.random.randn(50))
│ │ │ │
│ │ │ │ In [65]: %timeit df1 + df2 + df3 + df4 + s
│ │ │ │ -22.8 ms +- 443 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +15.1 ms +- 1.4 ms per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ In [66]: %timeit pd.eval("df1 + df2 + df3 + df4 + s")
│ │ │ │ -8.5 ms +- 241 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +3.53 ms +- 105 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ Note
│ │ │ │ Operations such as
│ │ │ │ 1 and 2 # would parse to 1 & 2, but should evaluate to 2
│ │ │ │ 3 or 4 # would parse to 3 | 4, but should evaluate to 3
│ │ │ │ ~1 # this is okay, but slower when using eval
│ │ │ │ should be performed in Python. An exception will be raised if you try to
│ │ │ │ perform any boolean/bitwise operations with scalar operands that are not of
│ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html
│ │ │ @@ -1086,16 +1086,16 @@
│ │ │ ....: files = pathlib.Path("data/timeseries/").glob("ts*.parquet")
│ │ │ ....: counts = pd.Series(dtype=int)
│ │ │ ....: for path in files:
│ │ │ ....: df = pd.read_parquet(path)
│ │ │ ....: counts = counts.add(df["name"].value_counts(), fill_value=0)
│ │ │ ....: counts.astype(int)
│ │ │ ....:
│ │ │ -CPU times: user 303 us, sys: 62 us, total: 365 us
│ │ │ -Wall time: 370 us
│ │ │ +CPU times: user 273 us, sys: 169 us, total: 442 us
│ │ │ +Wall time: 449 us
│ │ │ Out[32]: Series([], dtype: int64)
│ │ │
│ │ │
│ │ │
Some readers, like pandas.read_csv()
, offer parameters to control the
│ │ │ chunksize
when reading a single file.
│ │ │
Manually chunking is an OK option for workflows that don’t
│ │ │ require too sophisticated of operations. Some operations, like pandas.DataFrame.groupby()
, are
│ │ │ ├── html2text {}
│ │ │ │ @@ -644,16 +644,16 @@
│ │ │ │ ....: files = pathlib.Path("data/timeseries/").glob("ts*.parquet")
│ │ │ │ ....: counts = pd.Series(dtype=int)
│ │ │ │ ....: for path in files:
│ │ │ │ ....: df = pd.read_parquet(path)
│ │ │ │ ....: counts = counts.add(df["name"].value_counts(), fill_value=0)
│ │ │ │ ....: counts.astype(int)
│ │ │ │ ....:
│ │ │ │ -CPU times: user 303 us, sys: 62 us, total: 365 us
│ │ │ │ -Wall time: 370 us
│ │ │ │ +CPU times: user 273 us, sys: 169 us, total: 442 us
│ │ │ │ +Wall time: 449 us
│ │ │ │ Out[32]: Series([], dtype: int64)
│ │ │ │ Some readers, like _p_a_n_d_a_s_._r_e_a_d___c_s_v_(_), offer parameters to control the chunksize
│ │ │ │ when reading a single file.
│ │ │ │ Manually chunking is an OK option for workflows that don’t require too
│ │ │ │ sophisticated of operations. Some operations, like _p_a_n_d_a_s_._D_a_t_a_F_r_a_m_e_._g_r_o_u_p_b_y_(_),
│ │ │ │ are much harder to do chunkwise. In these cases, you may be better switching to
│ │ │ │ a different library that implements these out-of-core algorithms for you.
│ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz
│ │ │ ├── style.ipynb
│ │ │ │ ├── Pretty-printed
│ │ │ │ │┄ Similarity: 0.9985610875706213%
│ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2025-07-24T21:37:10.298065Z', "
│ │ │ │ │┄ "'iopub.status.busy': '2025-07-24T21:37:10.297897Z', 'iopub.status.idle': "
│ │ │ │ │┄ "'2025-07-24T21:37:10.581053Z', 'shell.execute_reply': "
│ │ │ │ │┄ "'2025-07-24T21:37:10.580399Z'}}}, 3: {'metadata': {'execution': "
│ │ │ │ │┄ "{'iopub.execute_input': '2025-07-24T21:37:10.583119Z', 'iopub.status.busy': "
│ │ │ │ │┄ "'2025-07-24T21:37:10.582897Z', 'iopub.status.idle': '2025-07-24T21:37:1 […]
│ │ │ │ │ @@ -39,18 +39,18 @@
│ │ │ │ │ ]
│ │ │ │ │ },
│ │ │ │ │ {
│ │ │ │ │ "cell_type": "code",
│ │ │ │ │ "execution_count": 1,
│ │ │ │ │ "metadata": {
│ │ │ │ │ "execution": {
│ │ │ │ │ - "iopub.execute_input": "2025-03-29T16:35:19.862775Z",
│ │ │ │ │ - "iopub.status.busy": "2025-03-29T16:35:19.862389Z",
│ │ │ │ │ - "iopub.status.idle": "2025-03-29T16:35:20.384606Z",
│ │ │ │ │ - "shell.execute_reply": "2025-03-29T16:35:20.383343Z"
│ │ │ │ │ + "iopub.execute_input": "2025-07-24T21:37:10.298065Z",
│ │ │ │ │ + "iopub.status.busy": "2025-07-24T21:37:10.297897Z",
│ │ │ │ │ + "iopub.status.idle": "2025-07-24T21:37:10.581053Z",
│ │ │ │ │ + "shell.execute_reply": "2025-07-24T21:37:10.580399Z"
│ │ │ │ │ },
│ │ │ │ │ "nbsphinx": "hidden"
│ │ │ │ │ },
│ │ │ │ │ "outputs": [],
│ │ │ │ │ "source": [
│ │ │ │ │ "import matplotlib.pyplot\n",
│ │ │ │ │ "# We have this here to trigger matplotlib's font cache stuff.\n",
│ │ │ │ │ @@ -77,36 +77,36 @@
│ │ │ │ │ ]
│ │ │ │ │ },
│ │ │ │ │ {
│ │ │ │ │ "cell_type": "code",
│ │ │ │ │ "execution_count": 2,
│ │ │ │ │ "metadata": {
│ │ │ │ │ "execution": {
│ │ │ │ │ - "iopub.execute_input": "2025-03-29T16:35:20.388545Z",
│ │ │ │ │ - "iopub.status.busy": "2025-03-29T16:35:20.387589Z",
│ │ │ │ │ - "iopub.status.idle": "2025-03-29T16:35:20.773571Z",
│ │ │ │ │ - "shell.execute_reply": "2025-03-29T16:35:20.772501Z"
│ │ │ │ │ + "iopub.execute_input": "2025-07-24T21:37:10.583119Z",
│ │ │ │ │ + "iopub.status.busy": "2025-07-24T21:37:10.582897Z",
│ │ │ │ │ + "iopub.status.idle": "2025-07-24T21:37:10.800115Z",
│ │ │ │ │ + "shell.execute_reply": "2025-07-24T21:37:10.799498Z"
│ │ │ │ │ }
│ │ │ │ │ },
│ │ │ │ │ "outputs": [],
│ │ │ │ │ "source": [
│ │ │ │ │ "import pandas as pd\n",
│ │ │ │ │ "import numpy as np\n",
│ │ │ │ │ "import matplotlib as mpl\n"
│ │ │ │ │ ]
│ │ │ │ │ },
│ │ │ │ │ {
│ │ │ │ │ "cell_type": "code",
│ │ │ │ │ "execution_count": 3,
│ │ │ │ │ "metadata": {
│ │ │ │ │ "execution": {
│ │ │ │ │ - "iopub.execute_input": "2025-03-29T16:35:20.778136Z",
│ │ │ │ │ - "iopub.status.busy": "2025-03-29T16:35:20.776764Z",
│ │ │ │ │ - "iopub.status.idle": "2025-03-29T16:35:20.850331Z",
│ │ │ │ │ - "shell.execute_reply": "2025-03-29T16:35:20.849409Z"
│ │ │ │ │ + "iopub.execute_input": "2025-07-24T21:37:10.802293Z",
│ │ │ │ │ + "iopub.status.busy": "2025-07-24T21:37:10.802062Z",
│ │ │ │ │ + "iopub.status.idle": "2025-07-24T21:37:10.843256Z",
│ │ │ │ │ + "shell.execute_reply": "2025-07-24T21:37:10.842723Z"
│ │ │ │ │ },
│ │ │ │ │ "nbsphinx": "hidden"
│ │ │ │ │ },
│ │ │ │ │ "outputs": [],
│ │ │ │ │ "source": [
│ │ │ │ │ "# For reproducibility - this doesn't respect uuid_len or positionally-passed uuid but the places here that use that coincidentally bypass this anyway\n",
│ │ │ │ │ "from pandas.io.formats.style import Styler\n",
│ │ │ │ │ @@ -123,18 +123,18 @@
│ │ │ │ │ ]
│ │ │ │ │ },
│ │ │ │ │ {
│ │ │ │ │ "cell_type": "code",
│ │ │ │ │ "execution_count": 4,
│ │ │ │ │ "metadata": {
│ │ │ │ │ "execution": {
│ │ │ │ │ - "iopub.execute_input": "2025-03-29T16:35:20.854113Z",
│ │ │ │ │ - "iopub.status.busy": "2025-03-29T16:35:20.853164Z",
│ │ │ │ │ - "iopub.status.idle": "2025-03-29T16:35:20.865750Z",
│ │ │ │ │ - "shell.execute_reply": "2025-03-29T16:35:20.864889Z"
│ │ │ │ │ + "iopub.execute_input": "2025-07-24T21:37:10.845103Z",
│ │ │ │ │ + "iopub.status.busy": "2025-07-24T21:37:10.844887Z",
│ │ │ │ │ + "iopub.status.idle": "2025-07-24T21:37:10.852238Z",
│ │ │ │ │ + "shell.execute_reply": "2025-07-24T21:37:10.851708Z"
│ │ │ │ │ }
│ │ │ │ │ },
│ │ │ │ │ "outputs": [
│ │ │ │ │ {
│ │ │ │ │ "data": {
│ │ │ │ │ "text/html": [
│ │ │ │ │ "