Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save devin-petersohn/51cc45a0382c7671532500cdbef74628 to your computer and use it in GitHub Desktop.
Save devin-petersohn/51cc45a0382c7671532500cdbef74628 to your computer and use it in GitHub Desktop.
Pandas on Ray demo for Spark Summit 2018
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas on Ray Short Demo\n",
"###### Devin Petersohn, Kunal Gosar, Simon Mo\n",
"\n",
"<br></br>\n",
"\n",
"This notebook is used to demonstrate the basic functionality and progress of the __Pandas on Ray__ project at the Spark Summit 2018 RISELab booth. Please read the following sections carefully to reproduce these results.\n",
"\n",
"#### Introduction to Pandas on Ray\n",
"\n",
"__Pandas on Ray__ is an early stage DataFrame library that wraps Pandas and transparently distributes the data and computation. The user does not need to know how many cores their system or cluster has, nor do they need to specify how to distribute the data. In fact, users can continue using their previous Pandas notebooks while experiencing a considerable speedup from __Pandas on Ray__, even on a single machine. Only a modification of the import statement is needed, as we demonstrate below. Once you’ve changed your import statement, you’re ready to use __Pandas on Ray__ just like you would Pandas.\n",
"\n",
"__Pandas on Ray__ uses Ray as its underlying execution framework. Ray is a high-performance distributed execution framework targeted at large-scale machine learning and reinforcement learning applications. It achieves scalability and fault tolerance by abstracting the control state of the system in a global control store and keeping all other components stateless. It uses a shared-memory distributed object store to efficiently handle large data through shared memory, and it uses a bottom-up hierarchical scheduling architecture to achieve low-latency and high-throughput scheduling. It uses a lightweight API based on dynamic task graphs and actors to express a wide range of applications in a flexible manner. You can find Ray on GitHub: [github.com/ray-project/ray](http://github.com/ray-project/ray).\n",
"\n",
"#### __How to reproduce these results__\n",
"\n",
"We designed this notebook in order for easy reproducibility. Feel free to clone/edit/run this notebook to learn about the performance differences between pandas and __Pandas on Ray__.\n",
"\n",
"Please note: Not every method presented is completely implemented. Pandas provides a significant amount of functionality for several methods, and not all of these functionalities are completely supported in __Pandas on Ray__.\n",
"\n",
"#### __Installing Ray__\n",
"\n",
"In order to reproduce these results you must have installed the latest Ray: [instructions can be found in the documentation](http://ray.readthedocs.io/en/latest/installation.html#trying-the-latest-version-of-ray). This is important as simply installing from `pip` will not give you access to everything that has been implemented so far. Many of these functionalities were added since the last release and performance comparisons will not be up-to-date.\n",
"\n",
"\n",
"#### __Reading more about Pandas on Ray__\n",
"\n",
"We released a [blog post](https://rise.cs.berkeley.edu/blog/pandas-on-ray/) a short while ago which outlined the general system and some preliminary performance numbers. Since then, we have refined the architecture and improved our performance on many operations with a more efficient implementation. You can view the [documentation page](http://ray.readthedocs.io/en/latest/pandas_on_ray.html) to learn more about how to use Pandas on Ray. Additionally, follow the [RISELab Twitter account](https://twitter.com/ucbrise?lang=en) to get updates on future blog posts.\n",
"\n",
"#### __About this notebook and how to use it__\n",
"\n",
"There are two notebooks in this git gist for presentation purposes, where both notebooks are displayed side-by-side in JupyterLab. The code is identical in all ways except one: the import statement that is used. The result times presented were obtained running on a 4-core, 32GB RAM machine running Mac OS X 10.12.\n",
"\n",
"#### Note about fair comparisons\n",
"\n",
"Ray is asynchronous, which means that when you submit a command it will usually return the prompt to you (almost) immediately. In order to give a fair comparison to pandas, we are printing the results. This also gives some sense of correctness, because we are using the same seed between runs. We tried to set this notebook up to be as fair as possible, but we are comparing a multi-threaded system with a single-threaded library, so keep that in mind."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Benchmarking Pandas on Ray"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"# import ray.dataframe as pd\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Setting up the DataFrame\n",
"\n",
"We are using synthetic data (random integers in this case) as a demonstration."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Set the seed for a fair comparison\n",
"np.random.seed(1988)\n",
"\n",
"frame_data = np.random.randint(0, 1000, size=(2**20, 2**7))\n",
"df = pd.DataFrame(frame_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### Microbenchmarking `describe`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 29.5 s, sys: 455 ms, total: 29.9 s\n",
"Wall time: 30 s\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>118</th>\n",
" <th>119</th>\n",
" <th>120</th>\n",
" <th>121</th>\n",
" <th>122</th>\n",
" <th>123</th>\n",
" <th>124</th>\n",
" <th>125</th>\n",
" <th>126</th>\n",
" <th>127</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>...</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" <td>1.048576e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>4.996203e+02</td>\n",
" <td>4.992765e+02</td>\n",
" <td>4.991886e+02</td>\n",
" <td>4.992843e+02</td>\n",
" <td>4.996645e+02</td>\n",
" <td>4.994650e+02</td>\n",
" <td>4.994042e+02</td>\n",
" <td>4.993771e+02</td>\n",
" <td>4.991074e+02</td>\n",
" <td>4.995208e+02</td>\n",
" <td>...</td>\n",
" <td>4.993927e+02</td>\n",
" <td>4.995791e+02</td>\n",
" <td>4.992836e+02</td>\n",
" <td>4.992135e+02</td>\n",
" <td>5.001622e+02</td>\n",
" <td>4.998708e+02</td>\n",
" <td>4.994074e+02</td>\n",
" <td>4.997280e+02</td>\n",
" <td>4.994229e+02</td>\n",
" <td>5.000291e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.887701e+02</td>\n",
" <td>2.884796e+02</td>\n",
" <td>2.887183e+02</td>\n",
" <td>2.885567e+02</td>\n",
" <td>2.886768e+02</td>\n",
" <td>2.885017e+02</td>\n",
" <td>2.885212e+02</td>\n",
" <td>2.888648e+02</td>\n",
" <td>2.886811e+02</td>\n",
" <td>2.886792e+02</td>\n",
" <td>...</td>\n",
" <td>2.885910e+02</td>\n",
" <td>2.887506e+02</td>\n",
" <td>2.888273e+02</td>\n",
" <td>2.887686e+02</td>\n",
" <td>2.886992e+02</td>\n",
" <td>2.886661e+02</td>\n",
" <td>2.888760e+02</td>\n",
" <td>2.887807e+02</td>\n",
" <td>2.886973e+02</td>\n",
" <td>2.887459e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>...</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>2.500000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>...</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.510000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" <td>2.490000e+02</td>\n",
" <td>2.500000e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>5.000000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>...</td>\n",
" <td>4.990000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>4.990000e+02</td>\n",
" <td>5.000000e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>7.500000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>...</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.490000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" <td>7.500000e+02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>...</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" <td>9.990000e+02</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 128 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 \\\n",
"count 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 \n",
"mean 4.996203e+02 4.992765e+02 4.991886e+02 4.992843e+02 4.996645e+02 \n",
"std 2.887701e+02 2.884796e+02 2.887183e+02 2.885567e+02 2.886768e+02 \n",
"min 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n",
"25% 2.500000e+02 2.500000e+02 2.490000e+02 2.490000e+02 2.500000e+02 \n",
"50% 5.000000e+02 4.990000e+02 4.990000e+02 4.990000e+02 5.000000e+02 \n",
"75% 7.500000e+02 7.490000e+02 7.500000e+02 7.490000e+02 7.500000e+02 \n",
"max 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 \n",
"\n",
" 5 6 7 8 9 \\\n",
"count 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 \n",
"mean 4.994650e+02 4.994042e+02 4.993771e+02 4.991074e+02 4.995208e+02 \n",
"std 2.885017e+02 2.885212e+02 2.888648e+02 2.886811e+02 2.886792e+02 \n",
"min 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n",
"25% 2.500000e+02 2.500000e+02 2.490000e+02 2.490000e+02 2.490000e+02 \n",
"50% 5.000000e+02 5.000000e+02 4.990000e+02 4.990000e+02 4.990000e+02 \n",
"75% 7.490000e+02 7.490000e+02 7.490000e+02 7.490000e+02 7.490000e+02 \n",
"max 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 \n",
"\n",
" ... 118 119 120 121 \\\n",
"count ... 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 \n",
"mean ... 4.993927e+02 4.995791e+02 4.992836e+02 4.992135e+02 \n",
"std ... 2.885910e+02 2.887506e+02 2.888273e+02 2.887686e+02 \n",
"min ... 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n",
"25% ... 2.490000e+02 2.490000e+02 2.490000e+02 2.490000e+02 \n",
"50% ... 4.990000e+02 5.000000e+02 4.990000e+02 4.990000e+02 \n",
"75% ... 7.490000e+02 7.500000e+02 7.490000e+02 7.490000e+02 \n",
"max ... 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 \n",
"\n",
" 122 123 124 125 126 \\\n",
"count 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 1.048576e+06 \n",
"mean 5.001622e+02 4.998708e+02 4.994074e+02 4.997280e+02 4.994229e+02 \n",
"std 2.886992e+02 2.886661e+02 2.888760e+02 2.887807e+02 2.886973e+02 \n",
"min 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n",
"25% 2.510000e+02 2.500000e+02 2.490000e+02 2.500000e+02 2.490000e+02 \n",
"50% 5.000000e+02 5.000000e+02 4.990000e+02 4.990000e+02 4.990000e+02 \n",
"75% 7.500000e+02 7.500000e+02 7.490000e+02 7.500000e+02 7.500000e+02 \n",
"max 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 9.990000e+02 \n",
"\n",
" 127 \n",
"count 1.048576e+06 \n",
"mean 5.000291e+02 \n",
"std 2.887459e+02 \n",
"min 0.000000e+00 \n",
"25% 2.500000e+02 \n",
"50% 5.000000e+02 \n",
"75% 7.500000e+02 \n",
"max 9.990000e+02 \n",
"\n",
"[8 rows x 128 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"df.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### Microbenchmarking `sum` with both `axis=0` and `axis=1`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 738 ms, sys: 495 ms, total: 1.23 s\n",
"Wall time: 1.23 s\n"
]
},
{
"data": {
"text/plain": [
"0 523889839\n",
"1 523529309\n",
"2 523437137\n",
"3 523537554\n",
"4 523936168\n",
"5 523727060\n",
"6 523663308\n",
"7 523634818\n",
"8 523352083\n",
"9 523785472\n",
"10 523522313\n",
"11 523582804\n",
"12 523844295\n",
"13 524243681\n",
"14 523648156\n",
"15 523832247\n",
"16 524068903\n",
"17 523380285\n",
"18 523758004\n",
"19 523705697\n",
"20 523804215\n",
"21 523870069\n",
"22 523402762\n",
"23 523529853\n",
"24 523721804\n",
"25 523813444\n",
"26 523495045\n",
"27 523719258\n",
"28 523573695\n",
"29 523901055\n",
" ... \n",
"98 523051057\n",
"99 524213344\n",
"100 523649062\n",
"101 523899137\n",
"102 523595755\n",
"103 524461473\n",
"104 523727579\n",
"105 523653921\n",
"106 524136438\n",
"107 523374509\n",
"108 523843775\n",
"109 523926643\n",
"110 523437600\n",
"111 523489735\n",
"112 523433620\n",
"113 523724604\n",
"114 524217822\n",
"115 523935059\n",
"116 524034016\n",
"117 523985089\n",
"118 523651160\n",
"119 523846668\n",
"120 523536801\n",
"121 523463329\n",
"122 524458058\n",
"123 524152483\n",
"124 523666603\n",
"125 524002768\n",
"126 523682865\n",
"127 524318503\n",
"Length: 128, dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"# Sum every column\n",
"df.sum(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 728 ms, sys: 498 ms, total: 1.23 s\n",
"Wall time: 1.22 s\n"
]
},
{
"data": {
"text/plain": [
"0 64578\n",
"1 60195\n",
"2 64265\n",
"3 62564\n",
"4 64064\n",
"5 63384\n",
"6 65547\n",
"7 63212\n",
"8 61806\n",
"9 57799\n",
"10 67135\n",
"11 62576\n",
"12 67226\n",
"13 64887\n",
"14 64230\n",
"15 62606\n",
"16 65038\n",
"17 68451\n",
"18 62605\n",
"19 60857\n",
"20 70926\n",
"21 64853\n",
"22 66284\n",
"23 65915\n",
"24 65415\n",
"25 62529\n",
"26 64196\n",
"27 64445\n",
"28 62187\n",
"29 64280\n",
" ... \n",
"1048546 68146\n",
"1048547 62222\n",
"1048548 64840\n",
"1048549 61781\n",
"1048550 68602\n",
"1048551 62988\n",
"1048552 69690\n",
"1048553 67867\n",
"1048554 66048\n",
"1048555 59450\n",
"1048556 67744\n",
"1048557 60092\n",
"1048558 70126\n",
"1048559 68198\n",
"1048560 62699\n",
"1048561 61933\n",
"1048562 66487\n",
"1048563 61363\n",
"1048564 56948\n",
"1048565 56516\n",
"1048566 60815\n",
"1048567 59176\n",
"1048568 64399\n",
"1048569 68398\n",
"1048570 61864\n",
"1048571 68441\n",
"1048572 64851\n",
"1048573 63925\n",
"1048574 71297\n",
"1048575 63700\n",
"Length: 1048576, dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"# Sum every row\n",
"df.sum(axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### Microbenchmarking `groupby` + `sum`"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 978 ms, sys: 532 ms, total: 1.51 s\n",
"Wall time: 1.51 s\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>118</th>\n",
" <th>119</th>\n",
" <th>120</th>\n",
" <th>121</th>\n",
" <th>122</th>\n",
" <th>123</th>\n",
" <th>124</th>\n",
" <th>125</th>\n",
" <th>126</th>\n",
" <th>127</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>52373350</td>\n",
" <td>52331132</td>\n",
" <td>52420270</td>\n",
" <td>52262423</td>\n",
" <td>52418940</td>\n",
" <td>52214779</td>\n",
" <td>52406184</td>\n",
" <td>52404385</td>\n",
" <td>52186057</td>\n",
" <td>52523045</td>\n",
" <td>...</td>\n",
" <td>52380534</td>\n",
" <td>52347655</td>\n",
" <td>52252967</td>\n",
" <td>52387767</td>\n",
" <td>52340876</td>\n",
" <td>52443997</td>\n",
" <td>52441993</td>\n",
" <td>52337526</td>\n",
" <td>52475983</td>\n",
" <td>52324831</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>52373354</td>\n",
" <td>52355685</td>\n",
" <td>52301466</td>\n",
" <td>52414227</td>\n",
" <td>52468247</td>\n",
" <td>52478121</td>\n",
" <td>52350390</td>\n",
" <td>52370316</td>\n",
" <td>52305933</td>\n",
" <td>52410234</td>\n",
" <td>...</td>\n",
" <td>52416165</td>\n",
" <td>52386048</td>\n",
" <td>52327168</td>\n",
" <td>52482772</td>\n",
" <td>52461065</td>\n",
" <td>52539063</td>\n",
" <td>52229955</td>\n",
" <td>52469817</td>\n",
" <td>52276410</td>\n",
" <td>52338890</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>52260681</td>\n",
" <td>52498038</td>\n",
" <td>52374472</td>\n",
" <td>52266066</td>\n",
" <td>52414328</td>\n",
" <td>52367519</td>\n",
" <td>52496486</td>\n",
" <td>52325237</td>\n",
" <td>52356395</td>\n",
" <td>52411336</td>\n",
" <td>...</td>\n",
" <td>52478803</td>\n",
" <td>52368101</td>\n",
" <td>52402663</td>\n",
" <td>52169858</td>\n",
" <td>52667058</td>\n",
" <td>52311354</td>\n",
" <td>52325229</td>\n",
" <td>52364393</td>\n",
" <td>52341594</td>\n",
" <td>52536530</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>52229863</td>\n",
" <td>52259956</td>\n",
" <td>52403131</td>\n",
" <td>52401732</td>\n",
" <td>52414090</td>\n",
" <td>52376800</td>\n",
" <td>52378014</td>\n",
" <td>52198087</td>\n",
" <td>52237220</td>\n",
" <td>52206433</td>\n",
" <td>...</td>\n",
" <td>52214843</td>\n",
" <td>52291563</td>\n",
" <td>52345547</td>\n",
" <td>52447629</td>\n",
" <td>52527198</td>\n",
" <td>52597080</td>\n",
" <td>52302055</td>\n",
" <td>52364928</td>\n",
" <td>52420379</td>\n",
" <td>52464566</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>52437875</td>\n",
" <td>52325215</td>\n",
" <td>52188401</td>\n",
" <td>52422180</td>\n",
" <td>52485884</td>\n",
" <td>52310224</td>\n",
" <td>52344056</td>\n",
" <td>52227153</td>\n",
" <td>52320420</td>\n",
" <td>52383445</td>\n",
" <td>...</td>\n",
" <td>52208765</td>\n",
" <td>52304363</td>\n",
" <td>52405393</td>\n",
" <td>52461923</td>\n",
" <td>52380447</td>\n",
" <td>52442794</td>\n",
" <td>52489835</td>\n",
" <td>52546335</td>\n",
" <td>52333164</td>\n",
" <td>52459586</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>52506188</td>\n",
" <td>52454039</td>\n",
" <td>52450240</td>\n",
" <td>52280814</td>\n",
" <td>52248345</td>\n",
" <td>52360958</td>\n",
" <td>52270971</td>\n",
" <td>52515598</td>\n",
" <td>52354200</td>\n",
" <td>52362498</td>\n",
" <td>...</td>\n",
" <td>52292745</td>\n",
" <td>52536495</td>\n",
" <td>52258731</td>\n",
" <td>52284455</td>\n",
" <td>52366511</td>\n",
" <td>52209349</td>\n",
" <td>52478931</td>\n",
" <td>52446799</td>\n",
" <td>52356361</td>\n",
" <td>52350977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>52331237</td>\n",
" <td>52294401</td>\n",
" <td>52425043</td>\n",
" <td>52482000</td>\n",
" <td>52329501</td>\n",
" <td>52469176</td>\n",
" <td>52403240</td>\n",
" <td>52495250</td>\n",
" <td>52353455</td>\n",
" <td>52446664</td>\n",
" <td>...</td>\n",
" <td>52496333</td>\n",
" <td>52368565</td>\n",
" <td>52357887</td>\n",
" <td>52379187</td>\n",
" <td>52411539</td>\n",
" <td>52555650</td>\n",
" <td>52362591</td>\n",
" <td>52327942</td>\n",
" <td>52424689</td>\n",
" <td>52381489</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>52465659</td>\n",
" <td>52334266</td>\n",
" <td>52344345</td>\n",
" <td>52313276</td>\n",
" <td>52277212</td>\n",
" <td>52356609</td>\n",
" <td>52229453</td>\n",
" <td>52429611</td>\n",
" <td>52493067</td>\n",
" <td>52222095</td>\n",
" <td>...</td>\n",
" <td>52317162</td>\n",
" <td>52342227</td>\n",
" <td>52302858</td>\n",
" <td>52245690</td>\n",
" <td>52265425</td>\n",
" <td>52439276</td>\n",
" <td>52544653</td>\n",
" <td>52511861</td>\n",
" <td>52294722</td>\n",
" <td>52516555</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>52387256</td>\n",
" <td>52311591</td>\n",
" <td>52293718</td>\n",
" <td>52357957</td>\n",
" <td>52510549</td>\n",
" <td>52348399</td>\n",
" <td>52467234</td>\n",
" <td>52489610</td>\n",
" <td>52306906</td>\n",
" <td>52479647</td>\n",
" <td>...</td>\n",
" <td>52338362</td>\n",
" <td>52472464</td>\n",
" <td>52347280</td>\n",
" <td>52395410</td>\n",
" <td>52672465</td>\n",
" <td>52260012</td>\n",
" <td>52228765</td>\n",
" <td>52336219</td>\n",
" <td>52370531</td>\n",
" <td>52415814</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>52524376</td>\n",
" <td>52364986</td>\n",
" <td>52236051</td>\n",
" <td>52336879</td>\n",
" <td>52369072</td>\n",
" <td>52444475</td>\n",
" <td>52317280</td>\n",
" <td>52179571</td>\n",
" <td>52438430</td>\n",
" <td>52340075</td>\n",
" <td>...</td>\n",
" <td>52507448</td>\n",
" <td>52429187</td>\n",
" <td>52536307</td>\n",
" <td>52208638</td>\n",
" <td>52365474</td>\n",
" <td>52353908</td>\n",
" <td>52262596</td>\n",
" <td>52296948</td>\n",
" <td>52389032</td>\n",
" <td>52529265</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10 rows × 128 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 52373350 52331132 52420270 52262423 52418940 52214779 52406184 \n",
"1 52373354 52355685 52301466 52414227 52468247 52478121 52350390 \n",
"2 52260681 52498038 52374472 52266066 52414328 52367519 52496486 \n",
"3 52229863 52259956 52403131 52401732 52414090 52376800 52378014 \n",
"4 52437875 52325215 52188401 52422180 52485884 52310224 52344056 \n",
"5 52506188 52454039 52450240 52280814 52248345 52360958 52270971 \n",
"6 52331237 52294401 52425043 52482000 52329501 52469176 52403240 \n",
"7 52465659 52334266 52344345 52313276 52277212 52356609 52229453 \n",
"8 52387256 52311591 52293718 52357957 52510549 52348399 52467234 \n",
"9 52524376 52364986 52236051 52336879 52369072 52444475 52317280 \n",
"\n",
" 7 8 9 ... 118 119 120 \\\n",
"0 52404385 52186057 52523045 ... 52380534 52347655 52252967 \n",
"1 52370316 52305933 52410234 ... 52416165 52386048 52327168 \n",
"2 52325237 52356395 52411336 ... 52478803 52368101 52402663 \n",
"3 52198087 52237220 52206433 ... 52214843 52291563 52345547 \n",
"4 52227153 52320420 52383445 ... 52208765 52304363 52405393 \n",
"5 52515598 52354200 52362498 ... 52292745 52536495 52258731 \n",
"6 52495250 52353455 52446664 ... 52496333 52368565 52357887 \n",
"7 52429611 52493067 52222095 ... 52317162 52342227 52302858 \n",
"8 52489610 52306906 52479647 ... 52338362 52472464 52347280 \n",
"9 52179571 52438430 52340075 ... 52507448 52429187 52536307 \n",
"\n",
" 121 122 123 124 125 126 127 \n",
"0 52387767 52340876 52443997 52441993 52337526 52475983 52324831 \n",
"1 52482772 52461065 52539063 52229955 52469817 52276410 52338890 \n",
"2 52169858 52667058 52311354 52325229 52364393 52341594 52536530 \n",
"3 52447629 52527198 52597080 52302055 52364928 52420379 52464566 \n",
"4 52461923 52380447 52442794 52489835 52546335 52333164 52459586 \n",
"5 52284455 52366511 52209349 52478931 52446799 52356361 52350977 \n",
"6 52379187 52411539 52555650 52362591 52327942 52424689 52381489 \n",
"7 52245690 52265425 52439276 52544653 52511861 52294722 52516555 \n",
"8 52395410 52672465 52260012 52228765 52336219 52370531 52415814 \n",
"9 52208638 52365474 52353908 52262596 52296948 52389032 52529265 \n",
"\n",
"[10 rows x 128 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"# Create groups based on the value of the index, in this case the unit's place\n",
"df.groupby(by=lambda df: df % 10).sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### Microbenchmarking `merge` (database-style join)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 1 2 3 4 5 6 7 8 9 ... 54 55 56 \\\n",
"0 684 844 223 195 542 128 295 404 40 159 ... 210 383 60 \n",
"1 968 147 343 307 404 828 537 465 608 675 ... 139 17 233 \n",
"2 907 228 677 81 887 451 761 665 932 758 ... 121 214 607 \n",
"3 252 872 357 810 55 341 225 421 65 156 ... 512 727 220 \n",
"4 144 779 779 345 173 106 731 541 62 388 ... 959 221 807 \n",
"5 96 927 583 29 619 750 194 527 301 242 ... 397 593 886 \n",
"6 693 351 626 615 814 88 601 373 756 17 ... 494 917 969 \n",
"7 270 125 579 922 670 984 683 10 530 960 ... 627 185 373 \n",
"8 786 986 345 292 474 662 267 183 38 364 ... 74 868 764 \n",
"9 53 444 400 739 977 135 214 393 428 220 ... 881 489 85 \n",
"10 896 410 65 693 403 214 811 844 217 420 ... 944 733 751 \n",
"11 873 594 467 715 157 231 419 474 337 310 ... 438 383 389 \n",
"12 132 666 991 372 663 783 484 920 899 351 ... 200 252 245 \n",
"13 674 613 694 823 487 130 198 259 371 835 ... 393 65 935 \n",
"14 811 242 66 697 52 583 592 43 413 295 ... 348 782 568 \n",
"15 904 546 64 676 940 729 857 524 266 388 ... 976 39 730 \n",
"16 226 681 737 148 872 206 143 882 824 430 ... 891 142 607 \n",
"17 704 771 402 234 9 476 553 273 708 727 ... 62 889 885 \n",
"18 139 141 559 381 830 677 850 876 630 945 ... 848 543 231 \n",
"19 710 8 298 27 946 387 178 998 242 444 ... 87 4 598 \n",
"20 591 66 411 142 828 730 960 423 56 937 ... 461 652 680 \n",
"21 545 415 4 444 903 507 151 633 111 176 ... 397 960 295 \n",
"22 316 768 232 372 319 651 914 406 778 533 ... 33 254 476 \n",
"23 922 914 955 878 747 389 997 112 218 48 ... 17 756 625 \n",
"24 284 441 394 898 410 218 813 170 914 606 ... 592 722 61 \n",
"25 95 569 720 192 212 763 8 124 163 232 ... 389 871 440 \n",
"26 944 608 259 505 170 873 241 503 528 223 ... 190 682 576 \n",
"27 259 983 977 108 693 866 144 708 813 82 ... 635 463 675 \n",
"28 299 216 225 869 304 361 819 418 487 575 ... 265 879 773 \n",
"29 733 14 945 378 365 837 843 402 309 76 ... 67 44 322 \n",
"... ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n",
"1048546 456 528 527 430 733 79 296 936 306 867 ... 265 412 447 \n",
"1048547 91 538 719 461 384 33 95 606 877 156 ... 728 975 563 \n",
"1048548 756 482 613 322 78 914 881 599 573 730 ... 924 828 488 \n",
"1048549 777 765 36 595 618 199 884 172 222 538 ... 122 70 98 \n",
"1048550 16 996 4 461 866 918 608 408 496 373 ... 208 462 568 \n",
"1048551 991 745 744 162 506 640 68 790 301 964 ... 788 248 999 \n",
"1048552 858 234 597 2 503 367 944 35 205 540 ... 787 531 617 \n",
"1048553 680 284 943 689 126 681 325 874 352 358 ... 644 139 86 \n",
"1048554 844 432 746 27 899 609 437 731 415 371 ... 617 421 631 \n",
"1048555 876 305 130 531 791 488 572 593 836 955 ... 292 559 950 \n",
"1048556 906 329 607 928 326 10 572 761 29 54 ... 41 403 375 \n",
"1048557 767 99 75 551 206 467 441 596 39 92 ... 796 101 505 \n",
"1048558 595 352 497 688 911 34 807 756 295 393 ... 772 14 57 \n",
"1048559 291 226 504 422 66 597 9 86 58 900 ... 145 762 667 \n",
"1048560 207 637 193 833 482 141 553 143 303 701 ... 860 988 281 \n",
"1048561 673 917 10 180 915 331 537 987 142 856 ... 663 864 490 \n",
"1048562 337 890 922 845 741 186 642 931 724 128 ... 872 794 728 \n",
"1048563 479 925 701 222 90 937 165 996 717 861 ... 130 620 142 \n",
"1048564 179 741 778 975 974 452 785 969 578 899 ... 246 385 32 \n",
"1048565 417 658 170 266 375 45 665 176 677 647 ... 873 370 606 \n",
"1048566 410 746 936 486 493 872 248 347 230 59 ... 48 666 697 \n",
"1048567 757 51 204 10 438 973 421 153 5 85 ... 525 28 222 \n",
"1048568 632 312 675 402 266 925 971 556 146 94 ... 890 731 734 \n",
"1048569 894 839 44 144 725 827 340 309 180 264 ... 621 776 864 \n",
"1048570 680 705 241 386 874 642 841 388 774 268 ... 330 504 291 \n",
"1048571 988 326 404 133 862 993 36 840 635 274 ... 349 603 840 \n",
"1048572 916 0 977 602 647 929 919 970 889 385 ... 267 928 829 \n",
"1048573 262 746 493 538 774 950 370 97 313 852 ... 150 660 711 \n",
"1048574 738 87 115 812 391 933 129 821 742 984 ... 403 600 232 \n",
"1048575 913 763 977 400 386 314 256 968 855 399 ... 699 756 959 \n",
"\n",
" 57 58 59 60 61 62 63 \n",
"0 739 895 12 53 838 886 415 \n",
"1 939 954 412 725 545 78 210 \n",
"2 675 538 866 171 803 941 388 \n",
"3 658 741 366 590 563 713 77 \n",
"4 31 687 943 192 97 947 381 \n",
"5 853 801 247 28 732 38 988 \n",
"6 131 552 601 524 327 457 323 \n",
"7 639 313 895 924 791 135 996 \n",
"8 468 403 118 858 207 807 988 \n",
"9 606 117 271 135 939 393 724 \n",
"10 509 956 635 246 78 159 839 \n",
"11 442 143 473 492 487 770 547 \n",
"12 499 786 692 165 192 187 75 \n",
"13 704 112 728 136 445 699 673 \n",
"14 627 715 705 143 692 902 392 \n",
"15 736 172 134 134 803 682 20 \n",
"16 666 313 65 453 142 54 553 \n",
"17 279 177 19 749 970 284 476 \n",
"18 518 309 264 910 692 569 665 \n",
"19 317 798 220 935 1 172 57 \n",
"20 791 277 895 953 952 397 639 \n",
"21 989 79 740 65 203 753 486 \n",
"22 735 79 654 847 829 347 883 \n",
"23 728 650 208 31 732 729 140 \n",
"24 839 829 294 172 558 109 272 \n",
"25 585 374 482 496 209 584 846 \n",
"26 129 949 186 601 857 207 288 \n",
"27 777 459 168 723 356 91 8 \n",
"28 76 739 467 689 675 982 250 \n",
"29 521 186 31 842 387 585 770 \n",
"... ... ... ... ... ... ... ... \n",
"1048546 819 387 706 561 532 804 445 \n",
"1048547 866 870 753 647 185 338 339 \n",
"1048548 880 631 705 811 506 11 195 \n",
"1048549 995 13 529 736 22 526 902 \n",
"1048550 29 392 297 240 944 32 984 \n",
"1048551 509 293 8 48 220 115 729 \n",
"1048552 223 31 799 855 217 654 462 \n",
"1048553 54 192 211 905 220 10 905 \n",
"1048554 249 406 514 930 320 227 298 \n",
"1048555 605 4 171 768 825 288 198 \n",
"1048556 452 148 742 274 535 206 453 \n",
"1048557 372 151 489 558 543 274 847 \n",
"1048558 105 265 524 135 688 256 358 \n",
"1048559 718 151 732 520 847 889 246 \n",
"1048560 940 910 556 348 408 949 8 \n",
"1048561 268 41 613 461 913 931 867 \n",
"1048562 42 428 112 76 48 652 731 \n",
"1048563 106 489 23 837 382 98 972 \n",
"1048564 605 354 918 416 14 835 884 \n",
"1048565 469 999 492 425 752 504 663 \n",
"1048566 164 379 459 128 797 504 125 \n",
"1048567 443 543 999 191 503 803 988 \n",
"1048568 509 302 223 313 975 911 857 \n",
"1048569 295 286 641 61 349 671 323 \n",
"1048570 796 315 674 11 328 254 875 \n",
"1048571 302 659 912 981 164 793 116 \n",
"1048572 945 538 245 858 811 455 641 \n",
"1048573 768 680 595 777 397 898 945 \n",
"1048574 214 954 376 591 949 559 584 \n",
"1048575 657 992 766 844 897 656 72 \n",
"\n",
"[1048576 rows x 64 columns]\n"
]
}
],
"source": [
"# Create a second DataFrame with 10x fewer rows\n",
"frame_data = np.random.randint(0, 1000, size=(2**20, 2 ** 6))\n",
"df2 = pd.DataFrame(frame_data)\n",
"print(df2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2.47 s, sys: 542 ms, total: 3.02 s\n",
"Wall time: 3.02 s\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0abc</th>\n",
" <th>1abc</th>\n",
" <th>2abc</th>\n",
" <th>3abc</th>\n",
" <th>4abc</th>\n",
" <th>5abc</th>\n",
" <th>6abc</th>\n",
" <th>7abc</th>\n",
" <th>8abc</th>\n",
" <th>9abc</th>\n",
" <th>...</th>\n",
" <th>54xyz</th>\n",
" <th>55xyz</th>\n",
" <th>56xyz</th>\n",
" <th>57xyz</th>\n",
" <th>58xyz</th>\n",
" <th>59xyz</th>\n",
" <th>60xyz</th>\n",
" <th>61xyz</th>\n",
" <th>62xyz</th>\n",
" <th>63xyz</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>877</td>\n",
" <td>565</td>\n",
" <td>817</td>\n",
" <td>936</td>\n",
" <td>829</td>\n",
" <td>652</td>\n",
" <td>935</td>\n",
" <td>768</td>\n",
" <td>869</td>\n",
" <td>627</td>\n",
" <td>...</td>\n",
" <td>210</td>\n",
" <td>383</td>\n",
" <td>60</td>\n",
" <td>739</td>\n",
" <td>895</td>\n",
" <td>12</td>\n",
" <td>53</td>\n",
" <td>838</td>\n",
" <td>886</td>\n",
" <td>415</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>627</td>\n",
" <td>277</td>\n",
" <td>620</td>\n",
" <td>96</td>\n",
" <td>157</td>\n",
" <td>74</td>\n",
" <td>478</td>\n",
" <td>23</td>\n",
" <td>236</td>\n",
" <td>396</td>\n",
" <td>...</td>\n",
" <td>139</td>\n",
" <td>17</td>\n",
" <td>233</td>\n",
" <td>939</td>\n",
" <td>954</td>\n",
" <td>412</td>\n",
" <td>725</td>\n",
" <td>545</td>\n",
" <td>78</td>\n",
" <td>210</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>188</td>\n",
" <td>722</td>\n",
" <td>681</td>\n",
" <td>110</td>\n",
" <td>450</td>\n",
" <td>698</td>\n",
" <td>793</td>\n",
" <td>727</td>\n",
" <td>340</td>\n",
" <td>...</td>\n",
" <td>121</td>\n",
" <td>214</td>\n",
" <td>607</td>\n",
" <td>675</td>\n",
" <td>538</td>\n",
" <td>866</td>\n",
" <td>171</td>\n",
" <td>803</td>\n",
" <td>941</td>\n",
" <td>388</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>405</td>\n",
" <td>919</td>\n",
" <td>343</td>\n",
" <td>492</td>\n",
" <td>226</td>\n",
" <td>182</td>\n",
" <td>969</td>\n",
" <td>208</td>\n",
" <td>430</td>\n",
" <td>919</td>\n",
" <td>...</td>\n",
" <td>512</td>\n",
" <td>727</td>\n",
" <td>220</td>\n",
" <td>658</td>\n",
" <td>741</td>\n",
" <td>366</td>\n",
" <td>590</td>\n",
" <td>563</td>\n",
" <td>713</td>\n",
" <td>77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>461</td>\n",
" <td>19</td>\n",
" <td>560</td>\n",
" <td>894</td>\n",
" <td>84</td>\n",
" <td>644</td>\n",
" <td>470</td>\n",
" <td>135</td>\n",
" <td>992</td>\n",
" <td>445</td>\n",
" <td>...</td>\n",
" <td>959</td>\n",
" <td>221</td>\n",
" <td>807</td>\n",
" <td>31</td>\n",
" <td>687</td>\n",
" <td>943</td>\n",
" <td>192</td>\n",
" <td>97</td>\n",
" <td>947</td>\n",
" <td>381</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>279</td>\n",
" <td>101</td>\n",
" <td>199</td>\n",
" <td>556</td>\n",
" <td>495</td>\n",
" <td>784</td>\n",
" <td>571</td>\n",
" <td>128</td>\n",
" <td>303</td>\n",
" <td>726</td>\n",
" <td>...</td>\n",
" <td>397</td>\n",
" <td>593</td>\n",
" <td>886</td>\n",
" <td>853</td>\n",
" <td>801</td>\n",
" <td>247</td>\n",
" <td>28</td>\n",
" <td>732</td>\n",
" <td>38</td>\n",
" <td>988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>591</td>\n",
" <td>326</td>\n",
" <td>221</td>\n",
" <td>606</td>\n",
" <td>278</td>\n",
" <td>422</td>\n",
" <td>1</td>\n",
" <td>799</td>\n",
" <td>499</td>\n",
" <td>951</td>\n",
" <td>...</td>\n",
" <td>494</td>\n",
" <td>917</td>\n",
" <td>969</td>\n",
" <td>131</td>\n",
" <td>552</td>\n",
" <td>601</td>\n",
" <td>524</td>\n",
" <td>327</td>\n",
" <td>457</td>\n",
" <td>323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>280</td>\n",
" <td>178</td>\n",
" <td>203</td>\n",
" <td>18</td>\n",
" <td>819</td>\n",
" <td>829</td>\n",
" <td>849</td>\n",
" <td>465</td>\n",
" <td>391</td>\n",
" <td>597</td>\n",
" <td>...</td>\n",
" <td>627</td>\n",
" <td>185</td>\n",
" <td>373</td>\n",
" <td>639</td>\n",
" <td>313</td>\n",
" <td>895</td>\n",
" <td>924</td>\n",
" <td>791</td>\n",
" <td>135</td>\n",
" <td>996</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>74</td>\n",
" <td>409</td>\n",
" <td>437</td>\n",
" <td>133</td>\n",
" <td>410</td>\n",
" <td>121</td>\n",
" <td>333</td>\n",
" <td>688</td>\n",
" <td>208</td>\n",
" <td>700</td>\n",
" <td>...</td>\n",
" <td>74</td>\n",
" <td>868</td>\n",
" <td>764</td>\n",
" <td>468</td>\n",
" <td>403</td>\n",
" <td>118</td>\n",
" <td>858</td>\n",
" <td>207</td>\n",
" <td>807</td>\n",
" <td>988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>905</td>\n",
" <td>237</td>\n",
" <td>807</td>\n",
" <td>12</td>\n",
" <td>879</td>\n",
" <td>332</td>\n",
" <td>252</td>\n",
" <td>462</td>\n",
" <td>371</td>\n",
" <td>514</td>\n",
" <td>...</td>\n",
" <td>881</td>\n",
" <td>489</td>\n",
" <td>85</td>\n",
" <td>606</td>\n",
" <td>117</td>\n",
" <td>271</td>\n",
" <td>135</td>\n",
" <td>939</td>\n",
" <td>393</td>\n",
" <td>724</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>969</td>\n",
" <td>473</td>\n",
" <td>292</td>\n",
" <td>824</td>\n",
" <td>820</td>\n",
" <td>992</td>\n",
" <td>518</td>\n",
" <td>396</td>\n",
" <td>970</td>\n",
" <td>324</td>\n",
" <td>...</td>\n",
" <td>944</td>\n",
" <td>733</td>\n",
" <td>751</td>\n",
" <td>509</td>\n",
" <td>956</td>\n",
" <td>635</td>\n",
" <td>246</td>\n",
" <td>78</td>\n",
" <td>159</td>\n",
" <td>839</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>689</td>\n",
" <td>500</td>\n",
" <td>447</td>\n",
" <td>785</td>\n",
" <td>479</td>\n",
" <td>329</td>\n",
" <td>901</td>\n",
" <td>179</td>\n",
" <td>15</td>\n",
" <td>988</td>\n",
" <td>...</td>\n",
" <td>438</td>\n",
" <td>383</td>\n",
" <td>389</td>\n",
" <td>442</td>\n",
" <td>143</td>\n",
" <td>473</td>\n",
" <td>492</td>\n",
" <td>487</td>\n",
" <td>770</td>\n",
" <td>547</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>234</td>\n",
" <td>830</td>\n",
" <td>653</td>\n",
" <td>938</td>\n",
" <td>738</td>\n",
" <td>525</td>\n",
" <td>554</td>\n",
" <td>559</td>\n",
" <td>147</td>\n",
" <td>519</td>\n",
" <td>...</td>\n",
" <td>200</td>\n",
" <td>252</td>\n",
" <td>245</td>\n",
" <td>499</td>\n",
" <td>786</td>\n",
" <td>692</td>\n",
" <td>165</td>\n",
" <td>192</td>\n",
" <td>187</td>\n",
" <td>75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>31</td>\n",
" <td>943</td>\n",
" <td>136</td>\n",
" <td>534</td>\n",
" <td>930</td>\n",
" <td>141</td>\n",
" <td>175</td>\n",
" <td>545</td>\n",
" <td>484</td>\n",
" <td>373</td>\n",
" <td>...</td>\n",
" <td>393</td>\n",
" <td>65</td>\n",
" <td>935</td>\n",
" <td>704</td>\n",
" <td>112</td>\n",
" <td>728</td>\n",
" <td>136</td>\n",
" <td>445</td>\n",
" <td>699</td>\n",
" <td>673</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>188</td>\n",
" <td>731</td>\n",
" <td>324</td>\n",
" <td>920</td>\n",
" <td>34</td>\n",
" <td>255</td>\n",
" <td>416</td>\n",
" <td>272</td>\n",
" <td>561</td>\n",
" <td>149</td>\n",
" <td>...</td>\n",
" <td>348</td>\n",
" <td>782</td>\n",
" <td>568</td>\n",
" <td>627</td>\n",
" <td>715</td>\n",
" <td>705</td>\n",
" <td>143</td>\n",
" <td>692</td>\n",
" <td>902</td>\n",
" <td>392</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>319</td>\n",
" <td>670</td>\n",
" <td>766</td>\n",
" <td>195</td>\n",
" <td>270</td>\n",
" <td>890</td>\n",
" <td>490</td>\n",
" <td>834</td>\n",
" <td>844</td>\n",
" <td>19</td>\n",
" <td>...</td>\n",
" <td>976</td>\n",
" <td>39</td>\n",
" <td>730</td>\n",
" <td>736</td>\n",
" <td>172</td>\n",
" <td>134</td>\n",
" <td>134</td>\n",
" <td>803</td>\n",
" <td>682</td>\n",
" <td>20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>4</td>\n",
" <td>408</td>\n",
" <td>688</td>\n",
" <td>741</td>\n",
" <td>459</td>\n",
" <td>411</td>\n",
" <td>397</td>\n",
" <td>570</td>\n",
" <td>264</td>\n",
" <td>284</td>\n",
" <td>...</td>\n",
" <td>891</td>\n",
" <td>142</td>\n",
" <td>607</td>\n",
" <td>666</td>\n",
" <td>313</td>\n",
" <td>65</td>\n",
" <td>453</td>\n",
" <td>142</td>\n",
" <td>54</td>\n",
" <td>553</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>65</td>\n",
" <td>368</td>\n",
" <td>285</td>\n",
" <td>864</td>\n",
" <td>602</td>\n",
" <td>865</td>\n",
" <td>916</td>\n",
" <td>743</td>\n",
" <td>679</td>\n",
" <td>963</td>\n",
" <td>...</td>\n",
" <td>62</td>\n",
" <td>889</td>\n",
" <td>885</td>\n",
" <td>279</td>\n",
" <td>177</td>\n",
" <td>19</td>\n",
" <td>749</td>\n",
" <td>970</td>\n",
" <td>284</td>\n",
" <td>476</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>385</td>\n",
" <td>520</td>\n",
" <td>313</td>\n",
" <td>701</td>\n",
" <td>730</td>\n",
" <td>625</td>\n",
" <td>771</td>\n",
" <td>465</td>\n",
" <td>266</td>\n",
" <td>564</td>\n",
" <td>...</td>\n",
" <td>848</td>\n",
" <td>543</td>\n",
" <td>231</td>\n",
" <td>518</td>\n",
" <td>309</td>\n",
" <td>264</td>\n",
" <td>910</td>\n",
" <td>692</td>\n",
" <td>569</td>\n",
" <td>665</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>494</td>\n",
" <td>135</td>\n",
" <td>973</td>\n",
" <td>841</td>\n",
" <td>961</td>\n",
" <td>883</td>\n",
" <td>646</td>\n",
" <td>979</td>\n",
" <td>708</td>\n",
" <td>648</td>\n",
" <td>...</td>\n",
" <td>87</td>\n",
" <td>4</td>\n",
" <td>598</td>\n",
" <td>317</td>\n",
" <td>798</td>\n",
" <td>220</td>\n",
" <td>935</td>\n",
" <td>1</td>\n",
" <td>172</td>\n",
" <td>57</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>938</td>\n",
" <td>513</td>\n",
" <td>821</td>\n",
" <td>927</td>\n",
" <td>976</td>\n",
" <td>804</td>\n",
" <td>312</td>\n",
" <td>471</td>\n",
" <td>634</td>\n",
" <td>749</td>\n",
" <td>...</td>\n",
" <td>461</td>\n",
" <td>652</td>\n",
" <td>680</td>\n",
" <td>791</td>\n",
" <td>277</td>\n",
" <td>895</td>\n",
" <td>953</td>\n",
" <td>952</td>\n",
" <td>397</td>\n",
" <td>639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>248</td>\n",
" <td>124</td>\n",
" <td>765</td>\n",
" <td>484</td>\n",
" <td>843</td>\n",
" <td>611</td>\n",
" <td>530</td>\n",
" <td>658</td>\n",
" <td>529</td>\n",
" <td>6</td>\n",
" <td>...</td>\n",
" <td>397</td>\n",
" <td>960</td>\n",
" <td>295</td>\n",
" <td>989</td>\n",
" <td>79</td>\n",
" <td>740</td>\n",
" <td>65</td>\n",
" <td>203</td>\n",
" <td>753</td>\n",
" <td>486</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>936</td>\n",
" <td>858</td>\n",
" <td>548</td>\n",
" <td>852</td>\n",
" <td>878</td>\n",
" <td>242</td>\n",
" <td>181</td>\n",
" <td>856</td>\n",
" <td>456</td>\n",
" <td>89</td>\n",
" <td>...</td>\n",
" <td>33</td>\n",
" <td>254</td>\n",
" <td>476</td>\n",
" <td>735</td>\n",
" <td>79</td>\n",
" <td>654</td>\n",
" <td>847</td>\n",
" <td>829</td>\n",
" <td>347</td>\n",
" <td>883</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>732</td>\n",
" <td>375</td>\n",
" <td>169</td>\n",
" <td>548</td>\n",
" <td>964</td>\n",
" <td>266</td>\n",
" <td>793</td>\n",
" <td>36</td>\n",
" <td>837</td>\n",
" <td>150</td>\n",
" <td>...</td>\n",
" <td>17</td>\n",
" <td>756</td>\n",
" <td>625</td>\n",
" <td>728</td>\n",
" <td>650</td>\n",
" <td>208</td>\n",
" <td>31</td>\n",
" <td>732</td>\n",
" <td>729</td>\n",
" <td>140</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>553</td>\n",
" <td>455</td>\n",
" <td>118</td>\n",
" <td>743</td>\n",
" <td>886</td>\n",
" <td>429</td>\n",
" <td>216</td>\n",
" <td>412</td>\n",
" <td>826</td>\n",
" <td>838</td>\n",
" <td>...</td>\n",
" <td>592</td>\n",
" <td>722</td>\n",
" <td>61</td>\n",
" <td>839</td>\n",
" <td>829</td>\n",
" <td>294</td>\n",
" <td>172</td>\n",
" <td>558</td>\n",
" <td>109</td>\n",
" <td>272</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>466</td>\n",
" <td>956</td>\n",
" <td>706</td>\n",
" <td>650</td>\n",
" <td>400</td>\n",
" <td>506</td>\n",
" <td>170</td>\n",
" <td>631</td>\n",
" <td>48</td>\n",
" <td>181</td>\n",
" <td>...</td>\n",
" <td>389</td>\n",
" <td>871</td>\n",
" <td>440</td>\n",
" <td>585</td>\n",
" <td>374</td>\n",
" <td>482</td>\n",
" <td>496</td>\n",
" <td>209</td>\n",
" <td>584</td>\n",
" <td>846</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>645</td>\n",
" <td>960</td>\n",
" <td>700</td>\n",
" <td>325</td>\n",
" <td>728</td>\n",
" <td>961</td>\n",
" <td>690</td>\n",
" <td>564</td>\n",
" <td>729</td>\n",
" <td>249</td>\n",
" <td>...</td>\n",
" <td>190</td>\n",
" <td>682</td>\n",
" <td>576</td>\n",
" <td>129</td>\n",
" <td>949</td>\n",
" <td>186</td>\n",
" <td>601</td>\n",
" <td>857</td>\n",
" <td>207</td>\n",
" <td>288</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>640</td>\n",
" <td>643</td>\n",
" <td>788</td>\n",
" <td>176</td>\n",
" <td>899</td>\n",
" <td>201</td>\n",
" <td>879</td>\n",
" <td>358</td>\n",
" <td>656</td>\n",
" <td>991</td>\n",
" <td>...</td>\n",
" <td>635</td>\n",
" <td>463</td>\n",
" <td>675</td>\n",
" <td>777</td>\n",
" <td>459</td>\n",
" <td>168</td>\n",
" <td>723</td>\n",
" <td>356</td>\n",
" <td>91</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>321</td>\n",
" <td>555</td>\n",
" <td>597</td>\n",
" <td>615</td>\n",
" <td>425</td>\n",
" <td>542</td>\n",
" <td>813</td>\n",
" <td>608</td>\n",
" <td>501</td>\n",
" <td>223</td>\n",
" <td>...</td>\n",
" <td>265</td>\n",
" <td>879</td>\n",
" <td>773</td>\n",
" <td>76</td>\n",
" <td>739</td>\n",
" <td>467</td>\n",
" <td>689</td>\n",
" <td>675</td>\n",
" <td>982</td>\n",
" <td>250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>758</td>\n",
" <td>952</td>\n",
" <td>248</td>\n",
" <td>748</td>\n",
" <td>36</td>\n",
" <td>460</td>\n",
" <td>896</td>\n",
" <td>467</td>\n",
" <td>354</td>\n",
" <td>467</td>\n",
" <td>...</td>\n",
" <td>67</td>\n",
" <td>44</td>\n",
" <td>322</td>\n",
" <td>521</td>\n",
" <td>186</td>\n",
" <td>31</td>\n",
" <td>842</td>\n",
" <td>387</td>\n",
" <td>585</td>\n",
" <td>770</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048546</th>\n",
" <td>465</td>\n",
" <td>786</td>\n",
" <td>749</td>\n",
" <td>496</td>\n",
" <td>403</td>\n",
" <td>271</td>\n",
" <td>454</td>\n",
" <td>557</td>\n",
" <td>947</td>\n",
" <td>739</td>\n",
" <td>...</td>\n",
" <td>265</td>\n",
" <td>412</td>\n",
" <td>447</td>\n",
" <td>819</td>\n",
" <td>387</td>\n",
" <td>706</td>\n",
" <td>561</td>\n",
" <td>532</td>\n",
" <td>804</td>\n",
" <td>445</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048547</th>\n",
" <td>360</td>\n",
" <td>482</td>\n",
" <td>554</td>\n",
" <td>125</td>\n",
" <td>177</td>\n",
" <td>698</td>\n",
" <td>742</td>\n",
" <td>72</td>\n",
" <td>388</td>\n",
" <td>563</td>\n",
" <td>...</td>\n",
" <td>728</td>\n",
" <td>975</td>\n",
" <td>563</td>\n",
" <td>866</td>\n",
" <td>870</td>\n",
" <td>753</td>\n",
" <td>647</td>\n",
" <td>185</td>\n",
" <td>338</td>\n",
" <td>339</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048548</th>\n",
" <td>264</td>\n",
" <td>558</td>\n",
" <td>38</td>\n",
" <td>306</td>\n",
" <td>684</td>\n",
" <td>689</td>\n",
" <td>781</td>\n",
" <td>331</td>\n",
" <td>440</td>\n",
" <td>826</td>\n",
" <td>...</td>\n",
" <td>924</td>\n",
" <td>828</td>\n",
" <td>488</td>\n",
" <td>880</td>\n",
" <td>631</td>\n",
" <td>705</td>\n",
" <td>811</td>\n",
" <td>506</td>\n",
" <td>11</td>\n",
" <td>195</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048549</th>\n",
" <td>456</td>\n",
" <td>322</td>\n",
" <td>257</td>\n",
" <td>116</td>\n",
" <td>11</td>\n",
" <td>97</td>\n",
" <td>996</td>\n",
" <td>19</td>\n",
" <td>101</td>\n",
" <td>467</td>\n",
" <td>...</td>\n",
" <td>122</td>\n",
" <td>70</td>\n",
" <td>98</td>\n",
" <td>995</td>\n",
" <td>13</td>\n",
" <td>529</td>\n",
" <td>736</td>\n",
" <td>22</td>\n",
" <td>526</td>\n",
" <td>902</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048550</th>\n",
" <td>584</td>\n",
" <td>290</td>\n",
" <td>231</td>\n",
" <td>393</td>\n",
" <td>754</td>\n",
" <td>242</td>\n",
" <td>690</td>\n",
" <td>867</td>\n",
" <td>526</td>\n",
" <td>949</td>\n",
" <td>...</td>\n",
" <td>208</td>\n",
" <td>462</td>\n",
" <td>568</td>\n",
" <td>29</td>\n",
" <td>392</td>\n",
" <td>297</td>\n",
" <td>240</td>\n",
" <td>944</td>\n",
" <td>32</td>\n",
" <td>984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048551</th>\n",
" <td>595</td>\n",
" <td>260</td>\n",
" <td>550</td>\n",
" <td>483</td>\n",
" <td>203</td>\n",
" <td>433</td>\n",
" <td>194</td>\n",
" <td>398</td>\n",
" <td>556</td>\n",
" <td>724</td>\n",
" <td>...</td>\n",
" <td>788</td>\n",
" <td>248</td>\n",
" <td>999</td>\n",
" <td>509</td>\n",
" <td>293</td>\n",
" <td>8</td>\n",
" <td>48</td>\n",
" <td>220</td>\n",
" <td>115</td>\n",
" <td>729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048552</th>\n",
" <td>911</td>\n",
" <td>499</td>\n",
" <td>778</td>\n",
" <td>258</td>\n",
" <td>936</td>\n",
" <td>650</td>\n",
" <td>404</td>\n",
" <td>67</td>\n",
" <td>490</td>\n",
" <td>7</td>\n",
" <td>...</td>\n",
" <td>787</td>\n",
" <td>531</td>\n",
" <td>617</td>\n",
" <td>223</td>\n",
" <td>31</td>\n",
" <td>799</td>\n",
" <td>855</td>\n",
" <td>217</td>\n",
" <td>654</td>\n",
" <td>462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048553</th>\n",
" <td>245</td>\n",
" <td>468</td>\n",
" <td>618</td>\n",
" <td>300</td>\n",
" <td>515</td>\n",
" <td>364</td>\n",
" <td>512</td>\n",
" <td>260</td>\n",
" <td>812</td>\n",
" <td>68</td>\n",
" <td>...</td>\n",
" <td>644</td>\n",
" <td>139</td>\n",
" <td>86</td>\n",
" <td>54</td>\n",
" <td>192</td>\n",
" <td>211</td>\n",
" <td>905</td>\n",
" <td>220</td>\n",
" <td>10</td>\n",
" <td>905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048554</th>\n",
" <td>725</td>\n",
" <td>33</td>\n",
" <td>11</td>\n",
" <td>455</td>\n",
" <td>960</td>\n",
" <td>354</td>\n",
" <td>983</td>\n",
" <td>429</td>\n",
" <td>687</td>\n",
" <td>527</td>\n",
" <td>...</td>\n",
" <td>617</td>\n",
" <td>421</td>\n",
" <td>631</td>\n",
" <td>249</td>\n",
" <td>406</td>\n",
" <td>514</td>\n",
" <td>930</td>\n",
" <td>320</td>\n",
" <td>227</td>\n",
" <td>298</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048555</th>\n",
" <td>913</td>\n",
" <td>426</td>\n",
" <td>661</td>\n",
" <td>686</td>\n",
" <td>351</td>\n",
" <td>492</td>\n",
" <td>494</td>\n",
" <td>929</td>\n",
" <td>486</td>\n",
" <td>575</td>\n",
" <td>...</td>\n",
" <td>292</td>\n",
" <td>559</td>\n",
" <td>950</td>\n",
" <td>605</td>\n",
" <td>4</td>\n",
" <td>171</td>\n",
" <td>768</td>\n",
" <td>825</td>\n",
" <td>288</td>\n",
" <td>198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048556</th>\n",
" <td>652</td>\n",
" <td>294</td>\n",
" <td>864</td>\n",
" <td>205</td>\n",
" <td>157</td>\n",
" <td>629</td>\n",
" <td>882</td>\n",
" <td>678</td>\n",
" <td>555</td>\n",
" <td>831</td>\n",
" <td>...</td>\n",
" <td>41</td>\n",
" <td>403</td>\n",
" <td>375</td>\n",
" <td>452</td>\n",
" <td>148</td>\n",
" <td>742</td>\n",
" <td>274</td>\n",
" <td>535</td>\n",
" <td>206</td>\n",
" <td>453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048557</th>\n",
" <td>268</td>\n",
" <td>253</td>\n",
" <td>184</td>\n",
" <td>642</td>\n",
" <td>636</td>\n",
" <td>296</td>\n",
" <td>938</td>\n",
" <td>827</td>\n",
" <td>56</td>\n",
" <td>448</td>\n",
" <td>...</td>\n",
" <td>796</td>\n",
" <td>101</td>\n",
" <td>505</td>\n",
" <td>372</td>\n",
" <td>151</td>\n",
" <td>489</td>\n",
" <td>558</td>\n",
" <td>543</td>\n",
" <td>274</td>\n",
" <td>847</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048558</th>\n",
" <td>453</td>\n",
" <td>282</td>\n",
" <td>578</td>\n",
" <td>271</td>\n",
" <td>845</td>\n",
" <td>673</td>\n",
" <td>778</td>\n",
" <td>303</td>\n",
" <td>819</td>\n",
" <td>265</td>\n",
" <td>...</td>\n",
" <td>772</td>\n",
" <td>14</td>\n",
" <td>57</td>\n",
" <td>105</td>\n",
" <td>265</td>\n",
" <td>524</td>\n",
" <td>135</td>\n",
" <td>688</td>\n",
" <td>256</td>\n",
" <td>358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048559</th>\n",
" <td>258</td>\n",
" <td>866</td>\n",
" <td>559</td>\n",
" <td>8</td>\n",
" <td>12</td>\n",
" <td>995</td>\n",
" <td>185</td>\n",
" <td>534</td>\n",
" <td>696</td>\n",
" <td>357</td>\n",
" <td>...</td>\n",
" <td>145</td>\n",
" <td>762</td>\n",
" <td>667</td>\n",
" <td>718</td>\n",
" <td>151</td>\n",
" <td>732</td>\n",
" <td>520</td>\n",
" <td>847</td>\n",
" <td>889</td>\n",
" <td>246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048560</th>\n",
" <td>622</td>\n",
" <td>881</td>\n",
" <td>170</td>\n",
" <td>435</td>\n",
" <td>121</td>\n",
" <td>621</td>\n",
" <td>971</td>\n",
" <td>276</td>\n",
" <td>248</td>\n",
" <td>366</td>\n",
" <td>...</td>\n",
" <td>860</td>\n",
" <td>988</td>\n",
" <td>281</td>\n",
" <td>940</td>\n",
" <td>910</td>\n",
" <td>556</td>\n",
" <td>348</td>\n",
" <td>408</td>\n",
" <td>949</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048561</th>\n",
" <td>536</td>\n",
" <td>241</td>\n",
" <td>941</td>\n",
" <td>9</td>\n",
" <td>435</td>\n",
" <td>460</td>\n",
" <td>318</td>\n",
" <td>141</td>\n",
" <td>980</td>\n",
" <td>199</td>\n",
" <td>...</td>\n",
" <td>663</td>\n",
" <td>864</td>\n",
" <td>490</td>\n",
" <td>268</td>\n",
" <td>41</td>\n",
" <td>613</td>\n",
" <td>461</td>\n",
" <td>913</td>\n",
" <td>931</td>\n",
" <td>867</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048562</th>\n",
" <td>42</td>\n",
" <td>345</td>\n",
" <td>346</td>\n",
" <td>445</td>\n",
" <td>636</td>\n",
" <td>543</td>\n",
" <td>455</td>\n",
" <td>229</td>\n",
" <td>255</td>\n",
" <td>264</td>\n",
" <td>...</td>\n",
" <td>872</td>\n",
" <td>794</td>\n",
" <td>728</td>\n",
" <td>42</td>\n",
" <td>428</td>\n",
" <td>112</td>\n",
" <td>76</td>\n",
" <td>48</td>\n",
" <td>652</td>\n",
" <td>731</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048563</th>\n",
" <td>144</td>\n",
" <td>41</td>\n",
" <td>549</td>\n",
" <td>149</td>\n",
" <td>279</td>\n",
" <td>718</td>\n",
" <td>9</td>\n",
" <td>552</td>\n",
" <td>375</td>\n",
" <td>282</td>\n",
" <td>...</td>\n",
" <td>130</td>\n",
" <td>620</td>\n",
" <td>142</td>\n",
" <td>106</td>\n",
" <td>489</td>\n",
" <td>23</td>\n",
" <td>837</td>\n",
" <td>382</td>\n",
" <td>98</td>\n",
" <td>972</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048564</th>\n",
" <td>160</td>\n",
" <td>509</td>\n",
" <td>349</td>\n",
" <td>848</td>\n",
" <td>339</td>\n",
" <td>30</td>\n",
" <td>290</td>\n",
" <td>73</td>\n",
" <td>309</td>\n",
" <td>562</td>\n",
" <td>...</td>\n",
" <td>246</td>\n",
" <td>385</td>\n",
" <td>32</td>\n",
" <td>605</td>\n",
" <td>354</td>\n",
" <td>918</td>\n",
" <td>416</td>\n",
" <td>14</td>\n",
" <td>835</td>\n",
" <td>884</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048565</th>\n",
" <td>465</td>\n",
" <td>601</td>\n",
" <td>412</td>\n",
" <td>307</td>\n",
" <td>319</td>\n",
" <td>388</td>\n",
" <td>731</td>\n",
" <td>624</td>\n",
" <td>203</td>\n",
" <td>162</td>\n",
" <td>...</td>\n",
" <td>873</td>\n",
" <td>370</td>\n",
" <td>606</td>\n",
" <td>469</td>\n",
" <td>999</td>\n",
" <td>492</td>\n",
" <td>425</td>\n",
" <td>752</td>\n",
" <td>504</td>\n",
" <td>663</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048566</th>\n",
" <td>865</td>\n",
" <td>893</td>\n",
" <td>257</td>\n",
" <td>116</td>\n",
" <td>777</td>\n",
" <td>210</td>\n",
" <td>232</td>\n",
" <td>433</td>\n",
" <td>821</td>\n",
" <td>795</td>\n",
" <td>...</td>\n",
" <td>48</td>\n",
" <td>666</td>\n",
" <td>697</td>\n",
" <td>164</td>\n",
" <td>379</td>\n",
" <td>459</td>\n",
" <td>128</td>\n",
" <td>797</td>\n",
" <td>504</td>\n",
" <td>125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048567</th>\n",
" <td>120</td>\n",
" <td>469</td>\n",
" <td>8</td>\n",
" <td>759</td>\n",
" <td>226</td>\n",
" <td>95</td>\n",
" <td>250</td>\n",
" <td>347</td>\n",
" <td>494</td>\n",
" <td>21</td>\n",
" <td>...</td>\n",
" <td>525</td>\n",
" <td>28</td>\n",
" <td>222</td>\n",
" <td>443</td>\n",
" <td>543</td>\n",
" <td>999</td>\n",
" <td>191</td>\n",
" <td>503</td>\n",
" <td>803</td>\n",
" <td>988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048568</th>\n",
" <td>172</td>\n",
" <td>864</td>\n",
" <td>97</td>\n",
" <td>401</td>\n",
" <td>917</td>\n",
" <td>614</td>\n",
" <td>429</td>\n",
" <td>822</td>\n",
" <td>545</td>\n",
" <td>480</td>\n",
" <td>...</td>\n",
" <td>890</td>\n",
" <td>731</td>\n",
" <td>734</td>\n",
" <td>509</td>\n",
" <td>302</td>\n",
" <td>223</td>\n",
" <td>313</td>\n",
" <td>975</td>\n",
" <td>911</td>\n",
" <td>857</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048569</th>\n",
" <td>379</td>\n",
" <td>866</td>\n",
" <td>703</td>\n",
" <td>536</td>\n",
" <td>492</td>\n",
" <td>460</td>\n",
" <td>500</td>\n",
" <td>512</td>\n",
" <td>538</td>\n",
" <td>23</td>\n",
" <td>...</td>\n",
" <td>621</td>\n",
" <td>776</td>\n",
" <td>864</td>\n",
" <td>295</td>\n",
" <td>286</td>\n",
" <td>641</td>\n",
" <td>61</td>\n",
" <td>349</td>\n",
" <td>671</td>\n",
" <td>323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048570</th>\n",
" <td>693</td>\n",
" <td>881</td>\n",
" <td>162</td>\n",
" <td>956</td>\n",
" <td>304</td>\n",
" <td>25</td>\n",
" <td>503</td>\n",
" <td>426</td>\n",
" <td>88</td>\n",
" <td>878</td>\n",
" <td>...</td>\n",
" <td>330</td>\n",
" <td>504</td>\n",
" <td>291</td>\n",
" <td>796</td>\n",
" <td>315</td>\n",
" <td>674</td>\n",
" <td>11</td>\n",
" <td>328</td>\n",
" <td>254</td>\n",
" <td>875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048571</th>\n",
" <td>301</td>\n",
" <td>561</td>\n",
" <td>852</td>\n",
" <td>130</td>\n",
" <td>316</td>\n",
" <td>131</td>\n",
" <td>916</td>\n",
" <td>426</td>\n",
" <td>968</td>\n",
" <td>244</td>\n",
" <td>...</td>\n",
" <td>349</td>\n",
" <td>603</td>\n",
" <td>840</td>\n",
" <td>302</td>\n",
" <td>659</td>\n",
" <td>912</td>\n",
" <td>981</td>\n",
" <td>164</td>\n",
" <td>793</td>\n",
" <td>116</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048572</th>\n",
" <td>671</td>\n",
" <td>31</td>\n",
" <td>959</td>\n",
" <td>95</td>\n",
" <td>980</td>\n",
" <td>527</td>\n",
" <td>254</td>\n",
" <td>889</td>\n",
" <td>841</td>\n",
" <td>533</td>\n",
" <td>...</td>\n",
" <td>267</td>\n",
" <td>928</td>\n",
" <td>829</td>\n",
" <td>945</td>\n",
" <td>538</td>\n",
" <td>245</td>\n",
" <td>858</td>\n",
" <td>811</td>\n",
" <td>455</td>\n",
" <td>641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048573</th>\n",
" <td>648</td>\n",
" <td>189</td>\n",
" <td>668</td>\n",
" <td>175</td>\n",
" <td>845</td>\n",
" <td>426</td>\n",
" <td>515</td>\n",
" <td>279</td>\n",
" <td>930</td>\n",
" <td>653</td>\n",
" <td>...</td>\n",
" <td>150</td>\n",
" <td>660</td>\n",
" <td>711</td>\n",
" <td>768</td>\n",
" <td>680</td>\n",
" <td>595</td>\n",
" <td>777</td>\n",
" <td>397</td>\n",
" <td>898</td>\n",
" <td>945</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048574</th>\n",
" <td>704</td>\n",
" <td>975</td>\n",
" <td>748</td>\n",
" <td>683</td>\n",
" <td>308</td>\n",
" <td>581</td>\n",
" <td>437</td>\n",
" <td>208</td>\n",
" <td>778</td>\n",
" <td>914</td>\n",
" <td>...</td>\n",
" <td>403</td>\n",
" <td>600</td>\n",
" <td>232</td>\n",
" <td>214</td>\n",
" <td>954</td>\n",
" <td>376</td>\n",
" <td>591</td>\n",
" <td>949</td>\n",
" <td>559</td>\n",
" <td>584</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048575</th>\n",
" <td>232</td>\n",
" <td>575</td>\n",
" <td>93</td>\n",
" <td>479</td>\n",
" <td>807</td>\n",
" <td>730</td>\n",
" <td>559</td>\n",
" <td>908</td>\n",
" <td>5</td>\n",
" <td>747</td>\n",
" <td>...</td>\n",
" <td>699</td>\n",
" <td>756</td>\n",
" <td>959</td>\n",
" <td>657</td>\n",
" <td>992</td>\n",
" <td>766</td>\n",
" <td>844</td>\n",
" <td>897</td>\n",
" <td>656</td>\n",
" <td>72</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1048576 rows × 192 columns</p>\n",
"</div>"
],
"text/plain": [
" 0abc 1abc 2abc 3abc 4abc 5abc 6abc 7abc 8abc 9abc ... \\\n",
"0 877 565 817 936 829 652 935 768 869 627 ... \n",
"1 627 277 620 96 157 74 478 23 236 396 ... \n",
"2 2 188 722 681 110 450 698 793 727 340 ... \n",
"3 405 919 343 492 226 182 969 208 430 919 ... \n",
"4 461 19 560 894 84 644 470 135 992 445 ... \n",
"5 279 101 199 556 495 784 571 128 303 726 ... \n",
"6 591 326 221 606 278 422 1 799 499 951 ... \n",
"7 280 178 203 18 819 829 849 465 391 597 ... \n",
"8 74 409 437 133 410 121 333 688 208 700 ... \n",
"9 905 237 807 12 879 332 252 462 371 514 ... \n",
"10 969 473 292 824 820 992 518 396 970 324 ... \n",
"11 689 500 447 785 479 329 901 179 15 988 ... \n",
"12 234 830 653 938 738 525 554 559 147 519 ... \n",
"13 31 943 136 534 930 141 175 545 484 373 ... \n",
"14 188 731 324 920 34 255 416 272 561 149 ... \n",
"15 319 670 766 195 270 890 490 834 844 19 ... \n",
"16 4 408 688 741 459 411 397 570 264 284 ... \n",
"17 65 368 285 864 602 865 916 743 679 963 ... \n",
"18 385 520 313 701 730 625 771 465 266 564 ... \n",
"19 494 135 973 841 961 883 646 979 708 648 ... \n",
"20 938 513 821 927 976 804 312 471 634 749 ... \n",
"21 248 124 765 484 843 611 530 658 529 6 ... \n",
"22 936 858 548 852 878 242 181 856 456 89 ... \n",
"23 732 375 169 548 964 266 793 36 837 150 ... \n",
"24 553 455 118 743 886 429 216 412 826 838 ... \n",
"25 466 956 706 650 400 506 170 631 48 181 ... \n",
"26 645 960 700 325 728 961 690 564 729 249 ... \n",
"27 640 643 788 176 899 201 879 358 656 991 ... \n",
"28 321 555 597 615 425 542 813 608 501 223 ... \n",
"29 758 952 248 748 36 460 896 467 354 467 ... \n",
"... ... ... ... ... ... ... ... ... ... ... ... \n",
"1048546 465 786 749 496 403 271 454 557 947 739 ... \n",
"1048547 360 482 554 125 177 698 742 72 388 563 ... \n",
"1048548 264 558 38 306 684 689 781 331 440 826 ... \n",
"1048549 456 322 257 116 11 97 996 19 101 467 ... \n",
"1048550 584 290 231 393 754 242 690 867 526 949 ... \n",
"1048551 595 260 550 483 203 433 194 398 556 724 ... \n",
"1048552 911 499 778 258 936 650 404 67 490 7 ... \n",
"1048553 245 468 618 300 515 364 512 260 812 68 ... \n",
"1048554 725 33 11 455 960 354 983 429 687 527 ... \n",
"1048555 913 426 661 686 351 492 494 929 486 575 ... \n",
"1048556 652 294 864 205 157 629 882 678 555 831 ... \n",
"1048557 268 253 184 642 636 296 938 827 56 448 ... \n",
"1048558 453 282 578 271 845 673 778 303 819 265 ... \n",
"1048559 258 866 559 8 12 995 185 534 696 357 ... \n",
"1048560 622 881 170 435 121 621 971 276 248 366 ... \n",
"1048561 536 241 941 9 435 460 318 141 980 199 ... \n",
"1048562 42 345 346 445 636 543 455 229 255 264 ... \n",
"1048563 144 41 549 149 279 718 9 552 375 282 ... \n",
"1048564 160 509 349 848 339 30 290 73 309 562 ... \n",
"1048565 465 601 412 307 319 388 731 624 203 162 ... \n",
"1048566 865 893 257 116 777 210 232 433 821 795 ... \n",
"1048567 120 469 8 759 226 95 250 347 494 21 ... \n",
"1048568 172 864 97 401 917 614 429 822 545 480 ... \n",
"1048569 379 866 703 536 492 460 500 512 538 23 ... \n",
"1048570 693 881 162 956 304 25 503 426 88 878 ... \n",
"1048571 301 561 852 130 316 131 916 426 968 244 ... \n",
"1048572 671 31 959 95 980 527 254 889 841 533 ... \n",
"1048573 648 189 668 175 845 426 515 279 930 653 ... \n",
"1048574 704 975 748 683 308 581 437 208 778 914 ... \n",
"1048575 232 575 93 479 807 730 559 908 5 747 ... \n",
"\n",
" 54xyz 55xyz 56xyz 57xyz 58xyz 59xyz 60xyz 61xyz 62xyz 63xyz \n",
"0 210 383 60 739 895 12 53 838 886 415 \n",
"1 139 17 233 939 954 412 725 545 78 210 \n",
"2 121 214 607 675 538 866 171 803 941 388 \n",
"3 512 727 220 658 741 366 590 563 713 77 \n",
"4 959 221 807 31 687 943 192 97 947 381 \n",
"5 397 593 886 853 801 247 28 732 38 988 \n",
"6 494 917 969 131 552 601 524 327 457 323 \n",
"7 627 185 373 639 313 895 924 791 135 996 \n",
"8 74 868 764 468 403 118 858 207 807 988 \n",
"9 881 489 85 606 117 271 135 939 393 724 \n",
"10 944 733 751 509 956 635 246 78 159 839 \n",
"11 438 383 389 442 143 473 492 487 770 547 \n",
"12 200 252 245 499 786 692 165 192 187 75 \n",
"13 393 65 935 704 112 728 136 445 699 673 \n",
"14 348 782 568 627 715 705 143 692 902 392 \n",
"15 976 39 730 736 172 134 134 803 682 20 \n",
"16 891 142 607 666 313 65 453 142 54 553 \n",
"17 62 889 885 279 177 19 749 970 284 476 \n",
"18 848 543 231 518 309 264 910 692 569 665 \n",
"19 87 4 598 317 798 220 935 1 172 57 \n",
"20 461 652 680 791 277 895 953 952 397 639 \n",
"21 397 960 295 989 79 740 65 203 753 486 \n",
"22 33 254 476 735 79 654 847 829 347 883 \n",
"23 17 756 625 728 650 208 31 732 729 140 \n",
"24 592 722 61 839 829 294 172 558 109 272 \n",
"25 389 871 440 585 374 482 496 209 584 846 \n",
"26 190 682 576 129 949 186 601 857 207 288 \n",
"27 635 463 675 777 459 168 723 356 91 8 \n",
"28 265 879 773 76 739 467 689 675 982 250 \n",
"29 67 44 322 521 186 31 842 387 585 770 \n",
"... ... ... ... ... ... ... ... ... ... ... \n",
"1048546 265 412 447 819 387 706 561 532 804 445 \n",
"1048547 728 975 563 866 870 753 647 185 338 339 \n",
"1048548 924 828 488 880 631 705 811 506 11 195 \n",
"1048549 122 70 98 995 13 529 736 22 526 902 \n",
"1048550 208 462 568 29 392 297 240 944 32 984 \n",
"1048551 788 248 999 509 293 8 48 220 115 729 \n",
"1048552 787 531 617 223 31 799 855 217 654 462 \n",
"1048553 644 139 86 54 192 211 905 220 10 905 \n",
"1048554 617 421 631 249 406 514 930 320 227 298 \n",
"1048555 292 559 950 605 4 171 768 825 288 198 \n",
"1048556 41 403 375 452 148 742 274 535 206 453 \n",
"1048557 796 101 505 372 151 489 558 543 274 847 \n",
"1048558 772 14 57 105 265 524 135 688 256 358 \n",
"1048559 145 762 667 718 151 732 520 847 889 246 \n",
"1048560 860 988 281 940 910 556 348 408 949 8 \n",
"1048561 663 864 490 268 41 613 461 913 931 867 \n",
"1048562 872 794 728 42 428 112 76 48 652 731 \n",
"1048563 130 620 142 106 489 23 837 382 98 972 \n",
"1048564 246 385 32 605 354 918 416 14 835 884 \n",
"1048565 873 370 606 469 999 492 425 752 504 663 \n",
"1048566 48 666 697 164 379 459 128 797 504 125 \n",
"1048567 525 28 222 443 543 999 191 503 803 988 \n",
"1048568 890 731 734 509 302 223 313 975 911 857 \n",
"1048569 621 776 864 295 286 641 61 349 671 323 \n",
"1048570 330 504 291 796 315 674 11 328 254 875 \n",
"1048571 349 603 840 302 659 912 981 164 793 116 \n",
"1048572 267 928 829 945 538 245 858 811 455 641 \n",
"1048573 150 660 711 768 680 595 777 397 898 945 \n",
"1048574 403 600 232 214 954 376 591 949 559 584 \n",
"1048575 699 756 959 657 992 766 844 897 656 72 \n",
"\n",
"[1048576 rows x 192 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"# Currently, only joining on index is fully implemented\n",
"df.merge(df2, left_index=True, right_index=True, suffixes=(\"abc\", \"xyz\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### Demonstrating other use-cases\n",
"\n",
"#### numpy\n",
"\n",
"It is useful to pass dataframes to other applications and libraries for various computation. Here we demonstrate that you can still use most numpy APIs with Pandas on Ray the same as you would with pandas."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>118</th>\n",
" <th>119</th>\n",
" <th>120</th>\n",
" <th>121</th>\n",
" <th>122</th>\n",
" <th>123</th>\n",
" <th>124</th>\n",
" <th>125</th>\n",
" <th>126</th>\n",
" <th>127</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>877</td>\n",
" <td>565</td>\n",
" <td>817</td>\n",
" <td>936</td>\n",
" <td>829</td>\n",
" <td>652</td>\n",
" <td>935</td>\n",
" <td>768</td>\n",
" <td>869</td>\n",
" <td>627</td>\n",
" <td>...</td>\n",
" <td>993</td>\n",
" <td>730</td>\n",
" <td>130</td>\n",
" <td>633</td>\n",
" <td>80</td>\n",
" <td>861</td>\n",
" <td>142</td>\n",
" <td>141</td>\n",
" <td>251</td>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1504</td>\n",
" <td>842</td>\n",
" <td>1437</td>\n",
" <td>1032</td>\n",
" <td>986</td>\n",
" <td>726</td>\n",
" <td>1413</td>\n",
" <td>791</td>\n",
" <td>1105</td>\n",
" <td>1023</td>\n",
" <td>...</td>\n",
" <td>1406</td>\n",
" <td>1315</td>\n",
" <td>281</td>\n",
" <td>1496</td>\n",
" <td>382</td>\n",
" <td>1448</td>\n",
" <td>581</td>\n",
" <td>1010</td>\n",
" <td>483</td>\n",
" <td>343</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1506</td>\n",
" <td>1030</td>\n",
" <td>2159</td>\n",
" <td>1713</td>\n",
" <td>1096</td>\n",
" <td>1176</td>\n",
" <td>2111</td>\n",
" <td>1584</td>\n",
" <td>1832</td>\n",
" <td>1363</td>\n",
" <td>...</td>\n",
" <td>2137</td>\n",
" <td>1866</td>\n",
" <td>1154</td>\n",
" <td>1899</td>\n",
" <td>756</td>\n",
" <td>1830</td>\n",
" <td>974</td>\n",
" <td>1854</td>\n",
" <td>1124</td>\n",
" <td>689</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1911</td>\n",
" <td>1949</td>\n",
" <td>2502</td>\n",
" <td>2205</td>\n",
" <td>1322</td>\n",
" <td>1358</td>\n",
" <td>3080</td>\n",
" <td>1792</td>\n",
" <td>2262</td>\n",
" <td>2282</td>\n",
" <td>...</td>\n",
" <td>3074</td>\n",
" <td>2356</td>\n",
" <td>1413</td>\n",
" <td>2778</td>\n",
" <td>1220</td>\n",
" <td>2351</td>\n",
" <td>1485</td>\n",
" <td>1888</td>\n",
" <td>1744</td>\n",
" <td>1382</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2372</td>\n",
" <td>1968</td>\n",
" <td>3062</td>\n",
" <td>3099</td>\n",
" <td>1406</td>\n",
" <td>2002</td>\n",
" <td>3550</td>\n",
" <td>1927</td>\n",
" <td>3254</td>\n",
" <td>2727</td>\n",
" <td>...</td>\n",
" <td>3344</td>\n",
" <td>2624</td>\n",
" <td>1868</td>\n",
" <td>3137</td>\n",
" <td>2155</td>\n",
" <td>3349</td>\n",
" <td>2010</td>\n",
" <td>2602</td>\n",
" <td>2163</td>\n",
" <td>2265</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2651</td>\n",
" <td>2069</td>\n",
" <td>3261</td>\n",
" <td>3655</td>\n",
" <td>1901</td>\n",
" <td>2786</td>\n",
" <td>4121</td>\n",
" <td>2055</td>\n",
" <td>3557</td>\n",
" <td>3453</td>\n",
" <td>...</td>\n",
" <td>4323</td>\n",
" <td>3197</td>\n",
" <td>2486</td>\n",
" <td>3890</td>\n",
" <td>2760</td>\n",
" <td>4149</td>\n",
" <td>2492</td>\n",
" <td>3132</td>\n",
" <td>3103</td>\n",
" <td>2684</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>3242</td>\n",
" <td>2395</td>\n",
" <td>3482</td>\n",
" <td>4261</td>\n",
" <td>2179</td>\n",
" <td>3208</td>\n",
" <td>4122</td>\n",
" <td>2854</td>\n",
" <td>4056</td>\n",
" <td>4404</td>\n",
" <td>...</td>\n",
" <td>4327</td>\n",
" <td>3687</td>\n",
" <td>3031</td>\n",
" <td>4476</td>\n",
" <td>3348</td>\n",
" <td>4887</td>\n",
" <td>2967</td>\n",
" <td>3209</td>\n",
" <td>3368</td>\n",
" <td>3106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>3522</td>\n",
" <td>2573</td>\n",
" <td>3685</td>\n",
" <td>4279</td>\n",
" <td>2998</td>\n",
" <td>4037</td>\n",
" <td>4971</td>\n",
" <td>3319</td>\n",
" <td>4447</td>\n",
" <td>5001</td>\n",
" <td>...</td>\n",
" <td>4452</td>\n",
" <td>4321</td>\n",
" <td>3635</td>\n",
" <td>4796</td>\n",
" <td>3934</td>\n",
" <td>5163</td>\n",
" <td>3519</td>\n",
" <td>3343</td>\n",
" <td>3848</td>\n",
" <td>3420</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>3596</td>\n",
" <td>2982</td>\n",
" <td>4122</td>\n",
" <td>4412</td>\n",
" <td>3408</td>\n",
" <td>4158</td>\n",
" <td>5304</td>\n",
" <td>4007</td>\n",
" <td>4655</td>\n",
" <td>5701</td>\n",
" <td>...</td>\n",
" <td>5188</td>\n",
" <td>4325</td>\n",
" <td>4460</td>\n",
" <td>5517</td>\n",
" <td>4695</td>\n",
" <td>5226</td>\n",
" <td>3883</td>\n",
" <td>4155</td>\n",
" <td>4114</td>\n",
" <td>4347</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>4501</td>\n",
" <td>3219</td>\n",
" <td>4929</td>\n",
" <td>4424</td>\n",
" <td>4287</td>\n",
" <td>4490</td>\n",
" <td>5556</td>\n",
" <td>4469</td>\n",
" <td>5026</td>\n",
" <td>6215</td>\n",
" <td>...</td>\n",
" <td>5615</td>\n",
" <td>4615</td>\n",
" <td>4904</td>\n",
" <td>6482</td>\n",
" <td>5538</td>\n",
" <td>6025</td>\n",
" <td>4472</td>\n",
" <td>4330</td>\n",
" <td>4177</td>\n",
" <td>4612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>5470</td>\n",
" <td>3692</td>\n",
" <td>5221</td>\n",
" <td>5248</td>\n",
" <td>5107</td>\n",
" <td>5482</td>\n",
" <td>6074</td>\n",
" <td>4865</td>\n",
" <td>5996</td>\n",
" <td>6539</td>\n",
" <td>...</td>\n",
" <td>5951</td>\n",
" <td>4918</td>\n",
" <td>5783</td>\n",
" <td>7143</td>\n",
" <td>6067</td>\n",
" <td>6817</td>\n",
" <td>4644</td>\n",
" <td>5201</td>\n",
" <td>4752</td>\n",
" <td>5459</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>6159</td>\n",
" <td>4192</td>\n",
" <td>5668</td>\n",
" <td>6033</td>\n",
" <td>5586</td>\n",
" <td>5811</td>\n",
" <td>6975</td>\n",
" <td>5044</td>\n",
" <td>6011</td>\n",
" <td>7527</td>\n",
" <td>...</td>\n",
" <td>6069</td>\n",
" <td>5302</td>\n",
" <td>6326</td>\n",
" <td>7170</td>\n",
" <td>6290</td>\n",
" <td>7726</td>\n",
" <td>4940</td>\n",
" <td>5300</td>\n",
" <td>5087</td>\n",
" <td>5733</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>6393</td>\n",
" <td>5022</td>\n",
" <td>6321</td>\n",
" <td>6971</td>\n",
" <td>6324</td>\n",
" <td>6336</td>\n",
" <td>7529</td>\n",
" <td>5603</td>\n",
" <td>6158</td>\n",
" <td>8046</td>\n",
" <td>...</td>\n",
" <td>6982</td>\n",
" <td>6281</td>\n",
" <td>7096</td>\n",
" <td>7528</td>\n",
" <td>6969</td>\n",
" <td>8662</td>\n",
" <td>5357</td>\n",
" <td>6216</td>\n",
" <td>5705</td>\n",
" <td>6315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>6424</td>\n",
" <td>5965</td>\n",
" <td>6457</td>\n",
" <td>7505</td>\n",
" <td>7254</td>\n",
" <td>6477</td>\n",
" <td>7704</td>\n",
" <td>6148</td>\n",
" <td>6642</td>\n",
" <td>8419</td>\n",
" <td>...</td>\n",
" <td>7912</td>\n",
" <td>6400</td>\n",
" <td>7521</td>\n",
" <td>7654</td>\n",
" <td>7804</td>\n",
" <td>9049</td>\n",
" <td>6214</td>\n",
" <td>7139</td>\n",
" <td>6626</td>\n",
" <td>7285</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>6612</td>\n",
" <td>6696</td>\n",
" <td>6781</td>\n",
" <td>8425</td>\n",
" <td>7288</td>\n",
" <td>6732</td>\n",
" <td>8120</td>\n",
" <td>6420</td>\n",
" <td>7203</td>\n",
" <td>8568</td>\n",
" <td>...</td>\n",
" <td>8644</td>\n",
" <td>7357</td>\n",
" <td>7853</td>\n",
" <td>8009</td>\n",
" <td>8240</td>\n",
" <td>9529</td>\n",
" <td>6424</td>\n",
" <td>7890</td>\n",
" <td>7213</td>\n",
" <td>8204</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>6931</td>\n",
" <td>7366</td>\n",
" <td>7547</td>\n",
" <td>8620</td>\n",
" <td>7558</td>\n",
" <td>7622</td>\n",
" <td>8610</td>\n",
" <td>7254</td>\n",
" <td>8047</td>\n",
" <td>8587</td>\n",
" <td>...</td>\n",
" <td>9498</td>\n",
" <td>7657</td>\n",
" <td>8320</td>\n",
" <td>8409</td>\n",
" <td>8896</td>\n",
" <td>10381</td>\n",
" <td>6990</td>\n",
" <td>8794</td>\n",
" <td>7366</td>\n",
" <td>9076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>6935</td>\n",
" <td>7774</td>\n",
" <td>8235</td>\n",
" <td>9361</td>\n",
" <td>8017</td>\n",
" <td>8033</td>\n",
" <td>9007</td>\n",
" <td>7824</td>\n",
" <td>8311</td>\n",
" <td>8871</td>\n",
" <td>...</td>\n",
" <td>10111</td>\n",
" <td>7697</td>\n",
" <td>8978</td>\n",
" <td>8433</td>\n",
" <td>9607</td>\n",
" <td>11174</td>\n",
" <td>7054</td>\n",
" <td>8923</td>\n",
" <td>7998</td>\n",
" <td>10040</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>7000</td>\n",
" <td>8142</td>\n",
" <td>8520</td>\n",
" <td>10225</td>\n",
" <td>8619</td>\n",
" <td>8898</td>\n",
" <td>9923</td>\n",
" <td>8567</td>\n",
" <td>8990</td>\n",
" <td>9834</td>\n",
" <td>...</td>\n",
" <td>10242</td>\n",
" <td>8562</td>\n",
" <td>9453</td>\n",
" <td>8894</td>\n",
" <td>10180</td>\n",
" <td>11869</td>\n",
" <td>8007</td>\n",
" <td>9510</td>\n",
" <td>8600</td>\n",
" <td>10865</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>7385</td>\n",
" <td>8662</td>\n",
" <td>8833</td>\n",
" <td>10926</td>\n",
" <td>9349</td>\n",
" <td>9523</td>\n",
" <td>10694</td>\n",
" <td>9032</td>\n",
" <td>9256</td>\n",
" <td>10398</td>\n",
" <td>...</td>\n",
" <td>10374</td>\n",
" <td>9231</td>\n",
" <td>9585</td>\n",
" <td>9097</td>\n",
" <td>10290</td>\n",
" <td>12302</td>\n",
" <td>8900</td>\n",
" <td>10092</td>\n",
" <td>8948</td>\n",
" <td>11259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>7879</td>\n",
" <td>8797</td>\n",
" <td>9806</td>\n",
" <td>11767</td>\n",
" <td>10310</td>\n",
" <td>10406</td>\n",
" <td>11340</td>\n",
" <td>10011</td>\n",
" <td>9964</td>\n",
" <td>11046</td>\n",
" <td>...</td>\n",
" <td>11250</td>\n",
" <td>9519</td>\n",
" <td>9628</td>\n",
" <td>9700</td>\n",
" <td>10745</td>\n",
" <td>12684</td>\n",
" <td>9528</td>\n",
" <td>10774</td>\n",
" <td>9711</td>\n",
" <td>12106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>8817</td>\n",
" <td>9310</td>\n",
" <td>10627</td>\n",
" <td>12694</td>\n",
" <td>11286</td>\n",
" <td>11210</td>\n",
" <td>11652</td>\n",
" <td>10482</td>\n",
" <td>10598</td>\n",
" <td>11795</td>\n",
" <td>...</td>\n",
" <td>11694</td>\n",
" <td>9704</td>\n",
" <td>10434</td>\n",
" <td>10511</td>\n",
" <td>10897</td>\n",
" <td>13413</td>\n",
" <td>9891</td>\n",
" <td>10793</td>\n",
" <td>9817</td>\n",
" <td>13032</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>9065</td>\n",
" <td>9434</td>\n",
" <td>11392</td>\n",
" <td>13178</td>\n",
" <td>12129</td>\n",
" <td>11821</td>\n",
" <td>12182</td>\n",
" <td>11140</td>\n",
" <td>11127</td>\n",
" <td>11801</td>\n",
" <td>...</td>\n",
" <td>12495</td>\n",
" <td>9831</td>\n",
" <td>10871</td>\n",
" <td>11500</td>\n",
" <td>11016</td>\n",
" <td>13821</td>\n",
" <td>9923</td>\n",
" <td>10844</td>\n",
" <td>10733</td>\n",
" <td>13207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>10001</td>\n",
" <td>10292</td>\n",
" <td>11940</td>\n",
" <td>14030</td>\n",
" <td>13007</td>\n",
" <td>12063</td>\n",
" <td>12363</td>\n",
" <td>11996</td>\n",
" <td>11583</td>\n",
" <td>11890</td>\n",
" <td>...</td>\n",
" <td>13089</td>\n",
" <td>9853</td>\n",
" <td>11083</td>\n",
" <td>11619</td>\n",
" <td>11189</td>\n",
" <td>14471</td>\n",
" <td>10327</td>\n",
" <td>11300</td>\n",
" <td>10826</td>\n",
" <td>13249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>10733</td>\n",
" <td>10667</td>\n",
" <td>12109</td>\n",
" <td>14578</td>\n",
" <td>13971</td>\n",
" <td>12329</td>\n",
" <td>13156</td>\n",
" <td>12032</td>\n",
" <td>12420</td>\n",
" <td>12040</td>\n",
" <td>...</td>\n",
" <td>13301</td>\n",
" <td>10564</td>\n",
" <td>11729</td>\n",
" <td>12186</td>\n",
" <td>11621</td>\n",
" <td>14918</td>\n",
" <td>10427</td>\n",
" <td>11806</td>\n",
" <td>11254</td>\n",
" <td>13907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>11286</td>\n",
" <td>11122</td>\n",
" <td>12227</td>\n",
" <td>15321</td>\n",
" <td>14857</td>\n",
" <td>12758</td>\n",
" <td>13372</td>\n",
" <td>12444</td>\n",
" <td>13246</td>\n",
" <td>12878</td>\n",
" <td>...</td>\n",
" <td>13423</td>\n",
" <td>10793</td>\n",
" <td>12025</td>\n",
" <td>12739</td>\n",
" <td>12114</td>\n",
" <td>15124</td>\n",
" <td>10463</td>\n",
" <td>12589</td>\n",
" <td>11489</td>\n",
" <td>14294</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>11752</td>\n",
" <td>12078</td>\n",
" <td>12933</td>\n",
" <td>15971</td>\n",
" <td>15257</td>\n",
" <td>13264</td>\n",
" <td>13542</td>\n",
" <td>13075</td>\n",
" <td>13294</td>\n",
" <td>13059</td>\n",
" <td>...</td>\n",
" <td>14126</td>\n",
" <td>11311</td>\n",
" <td>12288</td>\n",
" <td>13303</td>\n",
" <td>12132</td>\n",
" <td>15562</td>\n",
" <td>10552</td>\n",
" <td>12923</td>\n",
" <td>12460</td>\n",
" <td>14484</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>12397</td>\n",
" <td>13038</td>\n",
" <td>13633</td>\n",
" <td>16296</td>\n",
" <td>15985</td>\n",
" <td>14225</td>\n",
" <td>14232</td>\n",
" <td>13639</td>\n",
" <td>14023</td>\n",
" <td>13308</td>\n",
" <td>...</td>\n",
" <td>14486</td>\n",
" <td>12140</td>\n",
" <td>12516</td>\n",
" <td>13531</td>\n",
" <td>12263</td>\n",
" <td>16272</td>\n",
" <td>11313</td>\n",
" <td>12955</td>\n",
" <td>13236</td>\n",
" <td>14635</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>13037</td>\n",
" <td>13681</td>\n",
" <td>14421</td>\n",
" <td>16472</td>\n",
" <td>16884</td>\n",
" <td>14426</td>\n",
" <td>15111</td>\n",
" <td>13997</td>\n",
" <td>14679</td>\n",
" <td>14299</td>\n",
" <td>...</td>\n",
" <td>14700</td>\n",
" <td>12939</td>\n",
" <td>12910</td>\n",
" <td>13902</td>\n",
" <td>13096</td>\n",
" <td>17189</td>\n",
" <td>12160</td>\n",
" <td>13747</td>\n",
" <td>14183</td>\n",
" <td>15577</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>13358</td>\n",
" <td>14236</td>\n",
" <td>15018</td>\n",
" <td>17087</td>\n",
" <td>17309</td>\n",
" <td>14968</td>\n",
" <td>15924</td>\n",
" <td>14605</td>\n",
" <td>15180</td>\n",
" <td>14522</td>\n",
" <td>...</td>\n",
" <td>15402</td>\n",
" <td>13812</td>\n",
" <td>13547</td>\n",
" <td>14598</td>\n",
" <td>13946</td>\n",
" <td>17517</td>\n",
" <td>12187</td>\n",
" <td>14697</td>\n",
" <td>14531</td>\n",
" <td>16258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>14116</td>\n",
" <td>15188</td>\n",
" <td>15266</td>\n",
" <td>17835</td>\n",
" <td>17345</td>\n",
" <td>15428</td>\n",
" <td>16820</td>\n",
" <td>15072</td>\n",
" <td>15534</td>\n",
" <td>14989</td>\n",
" <td>...</td>\n",
" <td>16395</td>\n",
" <td>13959</td>\n",
" <td>14230</td>\n",
" <td>14861</td>\n",
" <td>14024</td>\n",
" <td>17998</td>\n",
" <td>12803</td>\n",
" <td>15041</td>\n",
" <td>14666</td>\n",
" <td>16688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048546</th>\n",
" <td>523876401</td>\n",
" <td>523515354</td>\n",
" <td>523423940</td>\n",
" <td>523526783</td>\n",
" <td>523921826</td>\n",
" <td>523713889</td>\n",
" <td>523647360</td>\n",
" <td>523621959</td>\n",
" <td>523337093</td>\n",
" <td>523771742</td>\n",
" <td>...</td>\n",
" <td>523637140</td>\n",
" <td>523831157</td>\n",
" <td>523520985</td>\n",
" <td>523452388</td>\n",
" <td>524443180</td>\n",
" <td>524135539</td>\n",
" <td>523652294</td>\n",
" <td>523985913</td>\n",
" <td>523665666</td>\n",
" <td>524302652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048547</th>\n",
" <td>523876761</td>\n",
" <td>523515836</td>\n",
" <td>523424494</td>\n",
" <td>523526908</td>\n",
" <td>523922003</td>\n",
" <td>523714587</td>\n",
" <td>523648102</td>\n",
" <td>523622031</td>\n",
" <td>523337481</td>\n",
" <td>523772305</td>\n",
" <td>...</td>\n",
" <td>523638058</td>\n",
" <td>523831371</td>\n",
" <td>523521676</td>\n",
" <td>523452551</td>\n",
" <td>524443792</td>\n",
" <td>524135748</td>\n",
" <td>523652937</td>\n",
" <td>523986873</td>\n",
" <td>523666217</td>\n",
" <td>524302732</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048548</th>\n",
" <td>523877025</td>\n",
" <td>523516394</td>\n",
" <td>523424532</td>\n",
" <td>523527214</td>\n",
" <td>523922687</td>\n",
" <td>523715276</td>\n",
" <td>523648883</td>\n",
" <td>523622362</td>\n",
" <td>523337921</td>\n",
" <td>523773131</td>\n",
" <td>...</td>\n",
" <td>523638276</td>\n",
" <td>523832024</td>\n",
" <td>523522127</td>\n",
" <td>523452610</td>\n",
" <td>524443988</td>\n",
" <td>524136175</td>\n",
" <td>523653396</td>\n",
" <td>523987530</td>\n",
" <td>523667158</td>\n",
" <td>524303718</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048549</th>\n",
" <td>523877481</td>\n",
" <td>523516716</td>\n",
" <td>523424789</td>\n",
" <td>523527330</td>\n",
" <td>523922698</td>\n",
" <td>523715373</td>\n",
" <td>523649879</td>\n",
" <td>523622381</td>\n",
" <td>523338022</td>\n",
" <td>523773598</td>\n",
" <td>...</td>\n",
" <td>523638475</td>\n",
" <td>523832496</td>\n",
" <td>523522295</td>\n",
" <td>523452739</td>\n",
" <td>524444447</td>\n",
" <td>524136402</td>\n",
" <td>523654088</td>\n",
" <td>523988064</td>\n",
" <td>523668011</td>\n",
" <td>524304248</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048550</th>\n",
" <td>523878065</td>\n",
" <td>523517006</td>\n",
" <td>523425020</td>\n",
" <td>523527723</td>\n",
" <td>523923452</td>\n",
" <td>523715615</td>\n",
" <td>523650569</td>\n",
" <td>523623248</td>\n",
" <td>523338548</td>\n",
" <td>523774547</td>\n",
" <td>...</td>\n",
" <td>523639389</td>\n",
" <td>523833388</td>\n",
" <td>523522460</td>\n",
" <td>523452791</td>\n",
" <td>524444999</td>\n",
" <td>524136833</td>\n",
" <td>523654219</td>\n",
" <td>523988152</td>\n",
" <td>523668401</td>\n",
" <td>524305001</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048551</th>\n",
" <td>523878660</td>\n",
" <td>523517266</td>\n",
" <td>523425570</td>\n",
" <td>523528206</td>\n",
" <td>523923655</td>\n",
" <td>523716048</td>\n",
" <td>523650763</td>\n",
" <td>523623646</td>\n",
" <td>523339104</td>\n",
" <td>523775271</td>\n",
" <td>...</td>\n",
" <td>523640196</td>\n",
" <td>523833514</td>\n",
" <td>523522984</td>\n",
" <td>523452916</td>\n",
" <td>524445281</td>\n",
" <td>524137189</td>\n",
" <td>523654259</td>\n",
" <td>523988556</td>\n",
" <td>523669299</td>\n",
" <td>524305715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048552</th>\n",
" <td>523879571</td>\n",
" <td>523517765</td>\n",
" <td>523426348</td>\n",
" <td>523528464</td>\n",
" <td>523924591</td>\n",
" <td>523716698</td>\n",
" <td>523651167</td>\n",
" <td>523623713</td>\n",
" <td>523339594</td>\n",
" <td>523775278</td>\n",
" <td>...</td>\n",
" <td>523640645</td>\n",
" <td>523834188</td>\n",
" <td>523523909</td>\n",
" <td>523453342</td>\n",
" <td>524445930</td>\n",
" <td>524137866</td>\n",
" <td>523655246</td>\n",
" <td>523988835</td>\n",
" <td>523669878</td>\n",
" <td>524305791</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048553</th>\n",
" <td>523879816</td>\n",
" <td>523518233</td>\n",
" <td>523426966</td>\n",
" <td>523528764</td>\n",
" <td>523925106</td>\n",
" <td>523717062</td>\n",
" <td>523651679</td>\n",
" <td>523623973</td>\n",
" <td>523340406</td>\n",
" <td>523775346</td>\n",
" <td>...</td>\n",
" <td>523641616</td>\n",
" <td>523835039</td>\n",
" <td>523524343</td>\n",
" <td>523453758</td>\n",
" <td>524446662</td>\n",
" <td>524138654</td>\n",
" <td>523655620</td>\n",
" <td>523988972</td>\n",
" <td>523670407</td>\n",
" <td>524306028</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048554</th>\n",
" <td>523880541</td>\n",
" <td>523518266</td>\n",
" <td>523426977</td>\n",
" <td>523529219</td>\n",
" <td>523926066</td>\n",
" <td>523717416</td>\n",
" <td>523652662</td>\n",
" <td>523624402</td>\n",
" <td>523341093</td>\n",
" <td>523775873</td>\n",
" <td>...</td>\n",
" <td>523642430</td>\n",
" <td>523835681</td>\n",
" <td>523524372</td>\n",
" <td>523453834</td>\n",
" <td>524447259</td>\n",
" <td>524139621</td>\n",
" <td>523656243</td>\n",
" <td>523989752</td>\n",
" <td>523670594</td>\n",
" <td>524306790</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048555</th>\n",
" <td>523881454</td>\n",
" <td>523518692</td>\n",
" <td>523427638</td>\n",
" <td>523529905</td>\n",
" <td>523926417</td>\n",
" <td>523717908</td>\n",
" <td>523653156</td>\n",
" <td>523625331</td>\n",
" <td>523341579</td>\n",
" <td>523776448</td>\n",
" <td>...</td>\n",
" <td>523642764</td>\n",
" <td>523836089</td>\n",
" <td>523525187</td>\n",
" <td>523454279</td>\n",
" <td>524447573</td>\n",
" <td>524139977</td>\n",
" <td>523657150</td>\n",
" <td>523990391</td>\n",
" <td>523671461</td>\n",
" <td>524306941</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048556</th>\n",
" <td>523882106</td>\n",
" <td>523518986</td>\n",
" <td>523428502</td>\n",
" <td>523530110</td>\n",
" <td>523926574</td>\n",
" <td>523718537</td>\n",
" <td>523654038</td>\n",
" <td>523626009</td>\n",
" <td>523342134</td>\n",
" <td>523777279</td>\n",
" <td>...</td>\n",
" <td>523642883</td>\n",
" <td>523836221</td>\n",
" <td>523525788</td>\n",
" <td>523455148</td>\n",
" <td>524447607</td>\n",
" <td>524140650</td>\n",
" <td>523657899</td>\n",
" <td>523991366</td>\n",
" <td>523672019</td>\n",
" <td>524307440</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048557</th>\n",
" <td>523882374</td>\n",
" <td>523519239</td>\n",
" <td>523428686</td>\n",
" <td>523530752</td>\n",
" <td>523927210</td>\n",
" <td>523718833</td>\n",
" <td>523654976</td>\n",
" <td>523626836</td>\n",
" <td>523342190</td>\n",
" <td>523777727</td>\n",
" <td>...</td>\n",
" <td>523643187</td>\n",
" <td>523836912</td>\n",
" <td>523526310</td>\n",
" <td>523456061</td>\n",
" <td>524447955</td>\n",
" <td>524141628</td>\n",
" <td>523658530</td>\n",
" <td>523991468</td>\n",
" <td>523672762</td>\n",
" <td>524308081</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048558</th>\n",
" <td>523882827</td>\n",
" <td>523519521</td>\n",
" <td>523429264</td>\n",
" <td>523531023</td>\n",
" <td>523928055</td>\n",
" <td>523719506</td>\n",
" <td>523655754</td>\n",
" <td>523627139</td>\n",
" <td>523343009</td>\n",
" <td>523777992</td>\n",
" <td>...</td>\n",
" <td>523644004</td>\n",
" <td>523837605</td>\n",
" <td>523527309</td>\n",
" <td>523456731</td>\n",
" <td>524448931</td>\n",
" <td>524142433</td>\n",
" <td>523658944</td>\n",
" <td>523991571</td>\n",
" <td>523673535</td>\n",
" <td>524308875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048559</th>\n",
" <td>523883085</td>\n",
" <td>523520387</td>\n",
" <td>523429823</td>\n",
" <td>523531031</td>\n",
" <td>523928067</td>\n",
" <td>523720501</td>\n",
" <td>523655939</td>\n",
" <td>523627673</td>\n",
" <td>523343705</td>\n",
" <td>523778349</td>\n",
" <td>...</td>\n",
" <td>523644037</td>\n",
" <td>523838104</td>\n",
" <td>523527752</td>\n",
" <td>523457304</td>\n",
" <td>524449345</td>\n",
" <td>524143231</td>\n",
" <td>523659182</td>\n",
" <td>523991885</td>\n",
" <td>523673951</td>\n",
" <td>524309589</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048560</th>\n",
" <td>523883707</td>\n",
" <td>523521268</td>\n",
" <td>523429993</td>\n",
" <td>523531466</td>\n",
" <td>523928188</td>\n",
" <td>523721122</td>\n",
" <td>523656910</td>\n",
" <td>523627949</td>\n",
" <td>523343953</td>\n",
" <td>523778715</td>\n",
" <td>...</td>\n",
" <td>523644723</td>\n",
" <td>523838610</td>\n",
" <td>523528743</td>\n",
" <td>523457314</td>\n",
" <td>524449406</td>\n",
" <td>524143689</td>\n",
" <td>523659435</td>\n",
" <td>523992881</td>\n",
" <td>523674874</td>\n",
" <td>524310021</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048561</th>\n",
" <td>523884243</td>\n",
" <td>523521509</td>\n",
" <td>523430934</td>\n",
" <td>523531475</td>\n",
" <td>523928623</td>\n",
" <td>523721582</td>\n",
" <td>523657228</td>\n",
" <td>523628090</td>\n",
" <td>523344933</td>\n",
" <td>523778914</td>\n",
" <td>...</td>\n",
" <td>523645001</td>\n",
" <td>523838924</td>\n",
" <td>523529733</td>\n",
" <td>523457531</td>\n",
" <td>524449752</td>\n",
" <td>524144388</td>\n",
" <td>523659682</td>\n",
" <td>523993268</td>\n",
" <td>523675769</td>\n",
" <td>524310364</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048562</th>\n",
" <td>523884285</td>\n",
" <td>523521854</td>\n",
" <td>523431280</td>\n",
" <td>523531920</td>\n",
" <td>523929259</td>\n",
" <td>523722125</td>\n",
" <td>523657683</td>\n",
" <td>523628319</td>\n",
" <td>523345188</td>\n",
" <td>523779178</td>\n",
" <td>...</td>\n",
" <td>523645409</td>\n",
" <td>523839673</td>\n",
" <td>523530628</td>\n",
" <td>523458465</td>\n",
" <td>524450374</td>\n",
" <td>524145107</td>\n",
" <td>523660595</td>\n",
" <td>523994076</td>\n",
" <td>523675873</td>\n",
" <td>524310411</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048563</th>\n",
" <td>523884429</td>\n",
" <td>523521895</td>\n",
" <td>523431829</td>\n",
" <td>523532069</td>\n",
" <td>523929538</td>\n",
" <td>523722843</td>\n",
" <td>523657692</td>\n",
" <td>523628871</td>\n",
" <td>523345563</td>\n",
" <td>523779460</td>\n",
" <td>...</td>\n",
" <td>523646270</td>\n",
" <td>523840636</td>\n",
" <td>523531245</td>\n",
" <td>523459078</td>\n",
" <td>524450494</td>\n",
" <td>524145589</td>\n",
" <td>523661568</td>\n",
" <td>523995026</td>\n",
" <td>523676377</td>\n",
" <td>524310895</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048564</th>\n",
" <td>523884589</td>\n",
" <td>523522404</td>\n",
" <td>523432178</td>\n",
" <td>523532917</td>\n",
" <td>523929877</td>\n",
" <td>523722873</td>\n",
" <td>523657982</td>\n",
" <td>523628944</td>\n",
" <td>523345872</td>\n",
" <td>523780022</td>\n",
" <td>...</td>\n",
" <td>523646461</td>\n",
" <td>523841480</td>\n",
" <td>523531268</td>\n",
" <td>523459249</td>\n",
" <td>524451007</td>\n",
" <td>524146184</td>\n",
" <td>523661591</td>\n",
" <td>523995521</td>\n",
" <td>523676712</td>\n",
" <td>524311026</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048565</th>\n",
" <td>523885054</td>\n",
" <td>523523005</td>\n",
" <td>523432590</td>\n",
" <td>523533224</td>\n",
" <td>523930196</td>\n",
" <td>523723261</td>\n",
" <td>523658713</td>\n",
" <td>523629568</td>\n",
" <td>523346075</td>\n",
" <td>523780184</td>\n",
" <td>...</td>\n",
" <td>523646691</td>\n",
" <td>523841925</td>\n",
" <td>523531683</td>\n",
" <td>523459948</td>\n",
" <td>524451445</td>\n",
" <td>524147031</td>\n",
" <td>523661783</td>\n",
" <td>523995877</td>\n",
" <td>523677208</td>\n",
" <td>524311870</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048566</th>\n",
" <td>523885919</td>\n",
" <td>523523898</td>\n",
" <td>523432847</td>\n",
" <td>523533340</td>\n",
" <td>523930973</td>\n",
" <td>523723471</td>\n",
" <td>523658945</td>\n",
" <td>523630001</td>\n",
" <td>523346896</td>\n",
" <td>523780979</td>\n",
" <td>...</td>\n",
" <td>523646692</td>\n",
" <td>523842012</td>\n",
" <td>523532073</td>\n",
" <td>523460077</td>\n",
" <td>524451835</td>\n",
" <td>524147325</td>\n",
" <td>523661889</td>\n",
" <td>523996748</td>\n",
" <td>523677249</td>\n",
" <td>524312579</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048567</th>\n",
" <td>523886039</td>\n",
" <td>523524367</td>\n",
" <td>523432855</td>\n",
" <td>523534099</td>\n",
" <td>523931199</td>\n",
" <td>523723566</td>\n",
" <td>523659195</td>\n",
" <td>523630348</td>\n",
" <td>523347390</td>\n",
" <td>523781000</td>\n",
" <td>...</td>\n",
" <td>523646899</td>\n",
" <td>523842626</td>\n",
" <td>523532309</td>\n",
" <td>523460788</td>\n",
" <td>524452400</td>\n",
" <td>524148044</td>\n",
" <td>523662463</td>\n",
" <td>523997043</td>\n",
" <td>523678214</td>\n",
" <td>524313479</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048568</th>\n",
" <td>523886211</td>\n",
" <td>523525231</td>\n",
" <td>523432952</td>\n",
" <td>523534500</td>\n",
" <td>523932116</td>\n",
" <td>523724180</td>\n",
" <td>523659624</td>\n",
" <td>523631170</td>\n",
" <td>523347935</td>\n",
" <td>523781480</td>\n",
" <td>...</td>\n",
" <td>523647174</td>\n",
" <td>523843301</td>\n",
" <td>523532872</td>\n",
" <td>523461117</td>\n",
" <td>524453280</td>\n",
" <td>524148295</td>\n",
" <td>523662862</td>\n",
" <td>523998037</td>\n",
" <td>523678808</td>\n",
" <td>524313955</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048569</th>\n",
" <td>523886590</td>\n",
" <td>523526097</td>\n",
" <td>523433655</td>\n",
" <td>523535036</td>\n",
" <td>523932608</td>\n",
" <td>523724640</td>\n",
" <td>523660124</td>\n",
" <td>523631682</td>\n",
" <td>523348473</td>\n",
" <td>523781503</td>\n",
" <td>...</td>\n",
" <td>523647240</td>\n",
" <td>523843832</td>\n",
" <td>523533851</td>\n",
" <td>523461468</td>\n",
" <td>524454063</td>\n",
" <td>524149202</td>\n",
" <td>523663522</td>\n",
" <td>523998951</td>\n",
" <td>523679474</td>\n",
" <td>524314155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048570</th>\n",
" <td>523887283</td>\n",
" <td>523526978</td>\n",
" <td>523433817</td>\n",
" <td>523535992</td>\n",
" <td>523932912</td>\n",
" <td>523724665</td>\n",
" <td>523660627</td>\n",
" <td>523632108</td>\n",
" <td>523348561</td>\n",
" <td>523782381</td>\n",
" <td>...</td>\n",
" <td>523648049</td>\n",
" <td>523844029</td>\n",
" <td>523534049</td>\n",
" <td>523462299</td>\n",
" <td>524454843</td>\n",
" <td>524149326</td>\n",
" <td>523663830</td>\n",
" <td>523999770</td>\n",
" <td>523679851</td>\n",
" <td>524314833</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048571</th>\n",
" <td>523887584</td>\n",
" <td>523527539</td>\n",
" <td>523434669</td>\n",
" <td>523536122</td>\n",
" <td>523933228</td>\n",
" <td>523724796</td>\n",
" <td>523661543</td>\n",
" <td>523632534</td>\n",
" <td>523349529</td>\n",
" <td>523782625</td>\n",
" <td>...</td>\n",
" <td>523648680</td>\n",
" <td>523844347</td>\n",
" <td>523534855</td>\n",
" <td>523462354</td>\n",
" <td>524455335</td>\n",
" <td>524149602</td>\n",
" <td>523664504</td>\n",
" <td>524000617</td>\n",
" <td>523680732</td>\n",
" <td>524315695</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048572</th>\n",
" <td>523888255</td>\n",
" <td>523527570</td>\n",
" <td>523435628</td>\n",
" <td>523536217</td>\n",
" <td>523934208</td>\n",
" <td>523725323</td>\n",
" <td>523661797</td>\n",
" <td>523633423</td>\n",
" <td>523350370</td>\n",
" <td>523783158</td>\n",
" <td>...</td>\n",
" <td>523649431</td>\n",
" <td>523845210</td>\n",
" <td>523535558</td>\n",
" <td>523463073</td>\n",
" <td>524456061</td>\n",
" <td>524150522</td>\n",
" <td>523664794</td>\n",
" <td>524001294</td>\n",
" <td>523681317</td>\n",
" <td>524316263</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048573</th>\n",
" <td>523888903</td>\n",
" <td>523527759</td>\n",
" <td>523436296</td>\n",
" <td>523536392</td>\n",
" <td>523935053</td>\n",
" <td>523725749</td>\n",
" <td>523662312</td>\n",
" <td>523633702</td>\n",
" <td>523351300</td>\n",
" <td>523783811</td>\n",
" <td>...</td>\n",
" <td>523649559</td>\n",
" <td>523845681</td>\n",
" <td>523535814</td>\n",
" <td>523463202</td>\n",
" <td>524456297</td>\n",
" <td>524151318</td>\n",
" <td>523665598</td>\n",
" <td>524001567</td>\n",
" <td>523681402</td>\n",
" <td>524317198</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048574</th>\n",
" <td>523889607</td>\n",
" <td>523528734</td>\n",
" <td>523437044</td>\n",
" <td>523537075</td>\n",
" <td>523935361</td>\n",
" <td>523726330</td>\n",
" <td>523662749</td>\n",
" <td>523633910</td>\n",
" <td>523352078</td>\n",
" <td>523784725</td>\n",
" <td>...</td>\n",
" <td>523650284</td>\n",
" <td>523846223</td>\n",
" <td>523536756</td>\n",
" <td>523463321</td>\n",
" <td>524457157</td>\n",
" <td>524151544</td>\n",
" <td>523666178</td>\n",
" <td>524002252</td>\n",
" <td>523681971</td>\n",
" <td>524317607</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1048575</th>\n",
" <td>523889839</td>\n",
" <td>523529309</td>\n",
" <td>523437137</td>\n",
" <td>523537554</td>\n",
" <td>523936168</td>\n",
" <td>523727060</td>\n",
" <td>523663308</td>\n",
" <td>523634818</td>\n",
" <td>523352083</td>\n",
" <td>523785472</td>\n",
" <td>...</td>\n",
" <td>523651160</td>\n",
" <td>523846668</td>\n",
" <td>523536801</td>\n",
" <td>523463329</td>\n",
" <td>524458058</td>\n",
" <td>524152483</td>\n",
" <td>523666603</td>\n",
" <td>524002768</td>\n",
" <td>523682865</td>\n",
" <td>524318503</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1048576 rows × 128 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 \\\n",
"0 877 565 817 936 829 652 \n",
"1 1504 842 1437 1032 986 726 \n",
"2 1506 1030 2159 1713 1096 1176 \n",
"3 1911 1949 2502 2205 1322 1358 \n",
"4 2372 1968 3062 3099 1406 2002 \n",
"5 2651 2069 3261 3655 1901 2786 \n",
"6 3242 2395 3482 4261 2179 3208 \n",
"7 3522 2573 3685 4279 2998 4037 \n",
"8 3596 2982 4122 4412 3408 4158 \n",
"9 4501 3219 4929 4424 4287 4490 \n",
"10 5470 3692 5221 5248 5107 5482 \n",
"11 6159 4192 5668 6033 5586 5811 \n",
"12 6393 5022 6321 6971 6324 6336 \n",
"13 6424 5965 6457 7505 7254 6477 \n",
"14 6612 6696 6781 8425 7288 6732 \n",
"15 6931 7366 7547 8620 7558 7622 \n",
"16 6935 7774 8235 9361 8017 8033 \n",
"17 7000 8142 8520 10225 8619 8898 \n",
"18 7385 8662 8833 10926 9349 9523 \n",
"19 7879 8797 9806 11767 10310 10406 \n",
"20 8817 9310 10627 12694 11286 11210 \n",
"21 9065 9434 11392 13178 12129 11821 \n",
"22 10001 10292 11940 14030 13007 12063 \n",
"23 10733 10667 12109 14578 13971 12329 \n",
"24 11286 11122 12227 15321 14857 12758 \n",
"25 11752 12078 12933 15971 15257 13264 \n",
"26 12397 13038 13633 16296 15985 14225 \n",
"27 13037 13681 14421 16472 16884 14426 \n",
"28 13358 14236 15018 17087 17309 14968 \n",
"29 14116 15188 15266 17835 17345 15428 \n",
"... ... ... ... ... ... ... \n",
"1048546 523876401 523515354 523423940 523526783 523921826 523713889 \n",
"1048547 523876761 523515836 523424494 523526908 523922003 523714587 \n",
"1048548 523877025 523516394 523424532 523527214 523922687 523715276 \n",
"1048549 523877481 523516716 523424789 523527330 523922698 523715373 \n",
"1048550 523878065 523517006 523425020 523527723 523923452 523715615 \n",
"1048551 523878660 523517266 523425570 523528206 523923655 523716048 \n",
"1048552 523879571 523517765 523426348 523528464 523924591 523716698 \n",
"1048553 523879816 523518233 523426966 523528764 523925106 523717062 \n",
"1048554 523880541 523518266 523426977 523529219 523926066 523717416 \n",
"1048555 523881454 523518692 523427638 523529905 523926417 523717908 \n",
"1048556 523882106 523518986 523428502 523530110 523926574 523718537 \n",
"1048557 523882374 523519239 523428686 523530752 523927210 523718833 \n",
"1048558 523882827 523519521 523429264 523531023 523928055 523719506 \n",
"1048559 523883085 523520387 523429823 523531031 523928067 523720501 \n",
"1048560 523883707 523521268 523429993 523531466 523928188 523721122 \n",
"1048561 523884243 523521509 523430934 523531475 523928623 523721582 \n",
"1048562 523884285 523521854 523431280 523531920 523929259 523722125 \n",
"1048563 523884429 523521895 523431829 523532069 523929538 523722843 \n",
"1048564 523884589 523522404 523432178 523532917 523929877 523722873 \n",
"1048565 523885054 523523005 523432590 523533224 523930196 523723261 \n",
"1048566 523885919 523523898 523432847 523533340 523930973 523723471 \n",
"1048567 523886039 523524367 523432855 523534099 523931199 523723566 \n",
"1048568 523886211 523525231 523432952 523534500 523932116 523724180 \n",
"1048569 523886590 523526097 523433655 523535036 523932608 523724640 \n",
"1048570 523887283 523526978 523433817 523535992 523932912 523724665 \n",
"1048571 523887584 523527539 523434669 523536122 523933228 523724796 \n",
"1048572 523888255 523527570 523435628 523536217 523934208 523725323 \n",
"1048573 523888903 523527759 523436296 523536392 523935053 523725749 \n",
"1048574 523889607 523528734 523437044 523537075 523935361 523726330 \n",
"1048575 523889839 523529309 523437137 523537554 523936168 523727060 \n",
"\n",
" 6 7 8 9 ... 118 \\\n",
"0 935 768 869 627 ... 993 \n",
"1 1413 791 1105 1023 ... 1406 \n",
"2 2111 1584 1832 1363 ... 2137 \n",
"3 3080 1792 2262 2282 ... 3074 \n",
"4 3550 1927 3254 2727 ... 3344 \n",
"5 4121 2055 3557 3453 ... 4323 \n",
"6 4122 2854 4056 4404 ... 4327 \n",
"7 4971 3319 4447 5001 ... 4452 \n",
"8 5304 4007 4655 5701 ... 5188 \n",
"9 5556 4469 5026 6215 ... 5615 \n",
"10 6074 4865 5996 6539 ... 5951 \n",
"11 6975 5044 6011 7527 ... 6069 \n",
"12 7529 5603 6158 8046 ... 6982 \n",
"13 7704 6148 6642 8419 ... 7912 \n",
"14 8120 6420 7203 8568 ... 8644 \n",
"15 8610 7254 8047 8587 ... 9498 \n",
"16 9007 7824 8311 8871 ... 10111 \n",
"17 9923 8567 8990 9834 ... 10242 \n",
"18 10694 9032 9256 10398 ... 10374 \n",
"19 11340 10011 9964 11046 ... 11250 \n",
"20 11652 10482 10598 11795 ... 11694 \n",
"21 12182 11140 11127 11801 ... 12495 \n",
"22 12363 11996 11583 11890 ... 13089 \n",
"23 13156 12032 12420 12040 ... 13301 \n",
"24 13372 12444 13246 12878 ... 13423 \n",
"25 13542 13075 13294 13059 ... 14126 \n",
"26 14232 13639 14023 13308 ... 14486 \n",
"27 15111 13997 14679 14299 ... 14700 \n",
"28 15924 14605 15180 14522 ... 15402 \n",
"29 16820 15072 15534 14989 ... 16395 \n",
"... ... ... ... ... ... ... \n",
"1048546 523647360 523621959 523337093 523771742 ... 523637140 \n",
"1048547 523648102 523622031 523337481 523772305 ... 523638058 \n",
"1048548 523648883 523622362 523337921 523773131 ... 523638276 \n",
"1048549 523649879 523622381 523338022 523773598 ... 523638475 \n",
"1048550 523650569 523623248 523338548 523774547 ... 523639389 \n",
"1048551 523650763 523623646 523339104 523775271 ... 523640196 \n",
"1048552 523651167 523623713 523339594 523775278 ... 523640645 \n",
"1048553 523651679 523623973 523340406 523775346 ... 523641616 \n",
"1048554 523652662 523624402 523341093 523775873 ... 523642430 \n",
"1048555 523653156 523625331 523341579 523776448 ... 523642764 \n",
"1048556 523654038 523626009 523342134 523777279 ... 523642883 \n",
"1048557 523654976 523626836 523342190 523777727 ... 523643187 \n",
"1048558 523655754 523627139 523343009 523777992 ... 523644004 \n",
"1048559 523655939 523627673 523343705 523778349 ... 523644037 \n",
"1048560 523656910 523627949 523343953 523778715 ... 523644723 \n",
"1048561 523657228 523628090 523344933 523778914 ... 523645001 \n",
"1048562 523657683 523628319 523345188 523779178 ... 523645409 \n",
"1048563 523657692 523628871 523345563 523779460 ... 523646270 \n",
"1048564 523657982 523628944 523345872 523780022 ... 523646461 \n",
"1048565 523658713 523629568 523346075 523780184 ... 523646691 \n",
"1048566 523658945 523630001 523346896 523780979 ... 523646692 \n",
"1048567 523659195 523630348 523347390 523781000 ... 523646899 \n",
"1048568 523659624 523631170 523347935 523781480 ... 523647174 \n",
"1048569 523660124 523631682 523348473 523781503 ... 523647240 \n",
"1048570 523660627 523632108 523348561 523782381 ... 523648049 \n",
"1048571 523661543 523632534 523349529 523782625 ... 523648680 \n",
"1048572 523661797 523633423 523350370 523783158 ... 523649431 \n",
"1048573 523662312 523633702 523351300 523783811 ... 523649559 \n",
"1048574 523662749 523633910 523352078 523784725 ... 523650284 \n",
"1048575 523663308 523634818 523352083 523785472 ... 523651160 \n",
"\n",
" 119 120 121 122 123 124 \\\n",
"0 730 130 633 80 861 142 \n",
"1 1315 281 1496 382 1448 581 \n",
"2 1866 1154 1899 756 1830 974 \n",
"3 2356 1413 2778 1220 2351 1485 \n",
"4 2624 1868 3137 2155 3349 2010 \n",
"5 3197 2486 3890 2760 4149 2492 \n",
"6 3687 3031 4476 3348 4887 2967 \n",
"7 4321 3635 4796 3934 5163 3519 \n",
"8 4325 4460 5517 4695 5226 3883 \n",
"9 4615 4904 6482 5538 6025 4472 \n",
"10 4918 5783 7143 6067 6817 4644 \n",
"11 5302 6326 7170 6290 7726 4940 \n",
"12 6281 7096 7528 6969 8662 5357 \n",
"13 6400 7521 7654 7804 9049 6214 \n",
"14 7357 7853 8009 8240 9529 6424 \n",
"15 7657 8320 8409 8896 10381 6990 \n",
"16 7697 8978 8433 9607 11174 7054 \n",
"17 8562 9453 8894 10180 11869 8007 \n",
"18 9231 9585 9097 10290 12302 8900 \n",
"19 9519 9628 9700 10745 12684 9528 \n",
"20 9704 10434 10511 10897 13413 9891 \n",
"21 9831 10871 11500 11016 13821 9923 \n",
"22 9853 11083 11619 11189 14471 10327 \n",
"23 10564 11729 12186 11621 14918 10427 \n",
"24 10793 12025 12739 12114 15124 10463 \n",
"25 11311 12288 13303 12132 15562 10552 \n",
"26 12140 12516 13531 12263 16272 11313 \n",
"27 12939 12910 13902 13096 17189 12160 \n",
"28 13812 13547 14598 13946 17517 12187 \n",
"29 13959 14230 14861 14024 17998 12803 \n",
"... ... ... ... ... ... ... \n",
"1048546 523831157 523520985 523452388 524443180 524135539 523652294 \n",
"1048547 523831371 523521676 523452551 524443792 524135748 523652937 \n",
"1048548 523832024 523522127 523452610 524443988 524136175 523653396 \n",
"1048549 523832496 523522295 523452739 524444447 524136402 523654088 \n",
"1048550 523833388 523522460 523452791 524444999 524136833 523654219 \n",
"1048551 523833514 523522984 523452916 524445281 524137189 523654259 \n",
"1048552 523834188 523523909 523453342 524445930 524137866 523655246 \n",
"1048553 523835039 523524343 523453758 524446662 524138654 523655620 \n",
"1048554 523835681 523524372 523453834 524447259 524139621 523656243 \n",
"1048555 523836089 523525187 523454279 524447573 524139977 523657150 \n",
"1048556 523836221 523525788 523455148 524447607 524140650 523657899 \n",
"1048557 523836912 523526310 523456061 524447955 524141628 523658530 \n",
"1048558 523837605 523527309 523456731 524448931 524142433 523658944 \n",
"1048559 523838104 523527752 523457304 524449345 524143231 523659182 \n",
"1048560 523838610 523528743 523457314 524449406 524143689 523659435 \n",
"1048561 523838924 523529733 523457531 524449752 524144388 523659682 \n",
"1048562 523839673 523530628 523458465 524450374 524145107 523660595 \n",
"1048563 523840636 523531245 523459078 524450494 524145589 523661568 \n",
"1048564 523841480 523531268 523459249 524451007 524146184 523661591 \n",
"1048565 523841925 523531683 523459948 524451445 524147031 523661783 \n",
"1048566 523842012 523532073 523460077 524451835 524147325 523661889 \n",
"1048567 523842626 523532309 523460788 524452400 524148044 523662463 \n",
"1048568 523843301 523532872 523461117 524453280 524148295 523662862 \n",
"1048569 523843832 523533851 523461468 524454063 524149202 523663522 \n",
"1048570 523844029 523534049 523462299 524454843 524149326 523663830 \n",
"1048571 523844347 523534855 523462354 524455335 524149602 523664504 \n",
"1048572 523845210 523535558 523463073 524456061 524150522 523664794 \n",
"1048573 523845681 523535814 523463202 524456297 524151318 523665598 \n",
"1048574 523846223 523536756 523463321 524457157 524151544 523666178 \n",
"1048575 523846668 523536801 523463329 524458058 524152483 523666603 \n",
"\n",
" 125 126 127 \n",
"0 141 251 46 \n",
"1 1010 483 343 \n",
"2 1854 1124 689 \n",
"3 1888 1744 1382 \n",
"4 2602 2163 2265 \n",
"5 3132 3103 2684 \n",
"6 3209 3368 3106 \n",
"7 3343 3848 3420 \n",
"8 4155 4114 4347 \n",
"9 4330 4177 4612 \n",
"10 5201 4752 5459 \n",
"11 5300 5087 5733 \n",
"12 6216 5705 6315 \n",
"13 7139 6626 7285 \n",
"14 7890 7213 8204 \n",
"15 8794 7366 9076 \n",
"16 8923 7998 10040 \n",
"17 9510 8600 10865 \n",
"18 10092 8948 11259 \n",
"19 10774 9711 12106 \n",
"20 10793 9817 13032 \n",
"21 10844 10733 13207 \n",
"22 11300 10826 13249 \n",
"23 11806 11254 13907 \n",
"24 12589 11489 14294 \n",
"25 12923 12460 14484 \n",
"26 12955 13236 14635 \n",
"27 13747 14183 15577 \n",
"28 14697 14531 16258 \n",
"29 15041 14666 16688 \n",
"... ... ... ... \n",
"1048546 523985913 523665666 524302652 \n",
"1048547 523986873 523666217 524302732 \n",
"1048548 523987530 523667158 524303718 \n",
"1048549 523988064 523668011 524304248 \n",
"1048550 523988152 523668401 524305001 \n",
"1048551 523988556 523669299 524305715 \n",
"1048552 523988835 523669878 524305791 \n",
"1048553 523988972 523670407 524306028 \n",
"1048554 523989752 523670594 524306790 \n",
"1048555 523990391 523671461 524306941 \n",
"1048556 523991366 523672019 524307440 \n",
"1048557 523991468 523672762 524308081 \n",
"1048558 523991571 523673535 524308875 \n",
"1048559 523991885 523673951 524309589 \n",
"1048560 523992881 523674874 524310021 \n",
"1048561 523993268 523675769 524310364 \n",
"1048562 523994076 523675873 524310411 \n",
"1048563 523995026 523676377 524310895 \n",
"1048564 523995521 523676712 524311026 \n",
"1048565 523995877 523677208 524311870 \n",
"1048566 523996748 523677249 524312579 \n",
"1048567 523997043 523678214 524313479 \n",
"1048568 523998037 523678808 524313955 \n",
"1048569 523998951 523679474 524314155 \n",
"1048570 523999770 523679851 524314833 \n",
"1048571 524000617 523680732 524315695 \n",
"1048572 524001294 523681317 524316263 \n",
"1048573 524001567 523681402 524317198 \n",
"1048574 524002252 523681971 524317607 \n",
"1048575 524002768 523682865 524318503 \n",
"\n",
"[1048576 rows x 128 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.cumsum(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"#### scikitlearn\n",
"\n",
"We have also put together a short demonstration that Pandas on Ray can be used with scikitlearn. This notebook can be found in the same github gist as this demonstation notebook."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<br></br>\n",
"## Contact\n",
"\n",
"Feel free to email the [ray-dev Google Group](https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!forum/ray-dev) with question/comments/suggestions. Bug reports and feature requests are always welcome and can be provided by creating an [issue on github](https://github.com/ray-project/ray/issues)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Find this notebook at [goo.gl/Hf1GjU](goo.gl/Hf1GjU)\n",
"\n",
"Also look out for our next blog post later this month!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment