Skip to content

Instantly share code, notes, and snippets.

@heronshoes
Last active April 11, 2022 09:47
Show Gist options
  • Save heronshoes/3d93af4cc7c55bd60185932c122c6b4e to your computer and use it in GitHub Desktop.
Save heronshoes/3d93af4cc7c55bd60185932c122c6b4e to your computer and use it in GitHub Desktop.

Rover summary method example

This is a experimental code and usage of Rover::DataFrame#summary of Ruby.

This method is not implemented in official release.

Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "9ff0d57f-61f7-460f-a1d7-f2b3c3aef9fa",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-linux]\""
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RUBY_DESCRIPTION"
]
},
{
"cell_type": "markdown",
"id": "6da0684a-0ba8-478c-8144-5bf3216e6cde",
"metadata": {},
"source": [
"## Experimental `Rover#DataFrame.summary`\n",
"\n",
"This is a experimental `summary` method example, and not impremented in official release."
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "1a8fa611-365c-4944-8e8c-0528714b62cb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"0.3.0\""
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'rover'\n",
"require './prepend_rover_summary'\n",
"Rover::VERSION"
]
},
{
"cell_type": "markdown",
"id": "65af414f-2a14-486a-9235-8bcb54b6427d",
"metadata": {},
"source": [
"### Penguins dataset"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3eded250-d8c7-414b-9bff-8b2e368cd954",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table><tr><th>species</th><th>island</th><th>bill_length_mm</th><th>bill_depth_mm</th><th>flipper_length_mm</th><th>body_mass_g</th><th>sex</th><th>year</th></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.1</td><td>18.7</td><td>181.0</td><td>3750.0</td><td>male</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>39.5</td><td>17.4</td><td>186.0</td><td>3800.0</td><td>female</td><td>2007</td></tr><tr><td>Adelie</td><td>Torgersen</td><td>40.3</td><td>18.0</td><td>195.0</td><td>3250.0</td><td>female</td><td>2007</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>50.4</td><td>15.7</td><td>222.0</td><td>5750.0</td><td>male</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>45.2</td><td>14.8</td><td>212.0</td><td>5200.0</td><td>female</td><td>2009</td></tr><tr><td>Gentoo</td><td>Biscoe</td><td>49.9</td><td>16.1</td><td>213.0</td><td>5400.0</td><td>male</td><td>2009</td></tr></table>"
],
"text/plain": [
"species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year\n",
" Adelie Torgersen 39.1 18.7 181.0 3750.0 male 2007\n",
" Adelie Torgersen 39.5 17.4 186.0 3800.0 female 2007\n",
" Adelie Torgersen 40.3 18.0 195.0 3250.0 female 2007\n",
" Adelie Torgersen NaN NaN NaN NaN 2007\n",
" Adelie Torgersen 36.7 19.3 193.0 3450.0 female 2007\n",
" ... ... ... ... ... ... ... ...\n",
" Gentoo Biscoe NaN NaN NaN NaN 2009\n",
" Gentoo Biscoe 46.8 14.3 215.0 4850.0 female 2009\n",
" Gentoo Biscoe 50.4 15.7 222.0 5750.0 male 2009\n",
" Gentoo Biscoe 45.2 14.8 212.0 5200.0 female 2009\n",
" Gentoo Biscoe 49.9 16.1 213.0 5400.0 male 2009"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'datasets'\n",
"ds = Datasets::Penguins.new\n",
"penguins = Rover::DataFrame.new(ds.to_table.to_h)"
]
},
{
"cell_type": "markdown",
"id": "9b1a53c3-9c9e-486e-94d7-cd6c7b9cc0e7",
"metadata": {},
"source": [
"#### `summary`, Vector to row"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "7807a49b-33e3-4033-a70c-7edb62b865a4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" [344,5] count mean std min 25% 50% 75% max\n",
" bill_length_mm 342 43.92193 5.459584 32.1 39.275 44.5 48.525 59.6\n",
" bill_depth_mm 342 17.15117 1.974793 13.1 15.6 17.3 18.7 21.5\n",
"flipper_length_mm 342 200.915205 14.061714 172.0 190.0 197.0 214.0 231.0\n",
" body_mass_g 342 4201.754386 801.954536 2700.0 3550.0 4050.0 4781.25 6300.0\n",
" year 344 2008.02907 0.818356 2007.0 2007.0 2008.0 2009.0 2009.0\n"
]
}
],
"source": [
"puts penguins.summary"
]
},
{
"cell_type": "markdown",
"id": "71814402-174a-45f9-abcd-d5a11ce02213",
"metadata": {},
"source": [
"#### `summary_T`, Vector to column"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "41937ac6-165a-49b1-8608-9bc9a3401bfd",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[344,5] bill_length_mm bill_depth_mm flipper_length_mm body_mass_g year\n",
" count 342.0 342.0 342.0 342.0 344.0\n",
" mean 43.92193 17.15117 200.915205 4201.754386 2008.02907\n",
" std 5.459584 1.974793 14.061714 801.954536 0.818356\n",
" min 32.1 13.1 172.0 2700.0 2007.0\n",
" 25% 39.275 15.6 190.0 3550.0 2007.0\n",
" 50% 44.5 17.3 197.0 4050.0 2008.0\n",
" 75% 48.525 18.7 214.0 4781.25 2009.0\n",
" max 59.6 21.5 231.0 6300.0 2009.0\n"
]
}
],
"source": [
"puts penguins.summary_T"
]
},
{
"cell_type": "markdown",
"id": "43dbc54a-4939-4971-ac9d-a972e93afd05",
"metadata": {},
"source": [
"#### Python's `describe`"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "3fa47866-b819-45b7-8b5d-79050018434d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{:pycall=>\"1.4.1\", :pandas=>\"1.4.1\", :matplotlib=>\"3.5.1\", :seaborn=>\"0.11.2\"}"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"require 'pandas'\n",
"pd = Pandas\n",
"require 'matplotlib'\n",
"require 'matplotlib/iruby'\n",
"Matplotlib::IRuby.activate\n",
"plt = Matplotlib::pyplot\n",
"sns = PyCall.import_module('seaborn')\n",
"{pycall: PyCall::VERSION, pandas: pd.__version__, matplotlib: Matplotlib.__version__, seaborn: sns.__version__}"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "1469aa63-5527-4158-b4f3-5dcbbbab732a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" bill_length_mm bill_depth_mm flipper_length_mm body_mass_g\n",
"count 342.000000 342.000000 342.000000 342.000000\n",
"mean 43.921930 17.151170 200.915205 4201.754386\n",
"std 5.459584 1.974793 14.061714 801.954536\n",
"min 32.100000 13.100000 172.000000 2700.000000\n",
"25% 39.225000 15.600000 190.000000 3550.000000\n",
"50% 44.450000 17.300000 197.000000 4050.000000\n",
"75% 48.500000 18.700000 213.000000 4750.000000\n",
"max 59.600000 21.500000 231.000000 6300.000000\n"
]
}
],
"source": [
"penguins_pandas = sns.load_dataset('penguins')\n",
"puts penguins_pandas.describe"
]
},
{
"cell_type": "markdown",
"id": "54c8032d-2d41-4c65-8b62-628f53641782",
"metadata": {},
"source": [
"### anscombe dataset"
]
},
{
"cell_type": "markdown",
"id": "5203e6dc-c501-47c0-b5e5-56f04042ad9f",
"metadata": {},
"source": [
"#### Rover's (from R dataset)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "b4f084eb-a5d2-4ebc-964d-795a95d1dd9e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table><tr><th>x1</th><th>x2</th><th>x3</th><th>x4</th><th>y1</th><th>y2</th><th>y3</th><th>y4</th></tr><tr><td>10</td><td>10</td><td>10</td><td>8</td><td>8.04</td><td>9.14</td><td>7.46</td><td>6.58</td></tr><tr><td>8</td><td>8</td><td>8</td><td>8</td><td>6.95</td><td>8.14</td><td>6.77</td><td>5.76</td></tr><tr><td>13</td><td>13</td><td>13</td><td>8</td><td>7.58</td><td>8.74</td><td>12.74</td><td>7.71</td></tr><tr><td colspan='8'>&#8942;</td></tr><tr><td>12</td><td>12</td><td>12</td><td>8</td><td>10.84</td><td>9.13</td><td>8.15</td><td>5.56</td></tr><tr><td>7</td><td>7</td><td>7</td><td>8</td><td>4.82</td><td>7.26</td><td>6.42</td><td>7.91</td></tr><tr><td>5</td><td>5</td><td>5</td><td>8</td><td>5.68</td><td>4.74</td><td>5.73</td><td>6.89</td></tr></table>"
],
"text/plain": [
" x1 x2 x3 x4 y1 y2 y3 y4\n",
" 10 10 10 8 8.04 9.14 7.46 6.58\n",
" 8 8 8 8 6.95 8.14 6.77 5.76\n",
" 13 13 13 8 7.58 8.74 12.74 7.71\n",
" 9 9 9 8 8.81 8.77 7.11 8.84\n",
" 11 11 11 8 8.33 9.26 7.81 8.47\n",
" 14 14 14 8 9.96 8.1 8.84 7.04\n",
" 6 6 6 8 7.24 6.13 6.08 5.25\n",
" 4 4 4 19 4.26 3.1 5.39 12.5\n",
" 12 12 12 8 10.84 9.13 8.15 5.56\n",
" 7 7 7 8 4.82 7.26 6.42 7.91\n",
" 5 5 5 8 5.68 4.74 5.73 6.89"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset_list = Datasets::RdatasetsList.new\n",
"ds = Datasets::Rdatasets.new('datasets', 'anscombe')\n",
"df = Rover::DataFrame.new(ds.to_table.to_h)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "62852fed-8b51-4dc9-8fc9-63e71652c07c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[11,8] count mean std min 25% 50% 75% max\n",
" x1 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x2 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x3 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x4 11 9.0 3.316625 8.0 8.0 8.0 8.0 19.0\n",
" y1 11 7.500909 2.031568 4.26 6.315 7.58 8.57 10.84\n",
" y2 11 7.500909 2.031657 3.1 6.695 8.14 8.95 9.26\n",
" y3 11 7.5 2.030424 5.39 6.25 7.11 7.98 12.74\n",
" y4 11 7.500909 2.030579 5.25 6.17 7.04 8.19 12.5\n"
]
}
],
"source": [
"puts df.summary"
]
},
{
"cell_type": "markdown",
"id": "f5c6016f-ee37-43e5-bdfe-79e56d0482fd",
"metadata": {},
"source": [
"#### Rover's (from Seaborn dataset)\n",
"This should be a good material to try for group methods"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "6cd7fe3f-9343-4e62-a946-b4148b5231d4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
":dataset = I\n",
"[11,2] count mean std min 25% 50% 75% max\n",
" x 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" y 11 7.500909 2.031568 4.26 6.315 7.58 8.57 10.84\n",
"\n",
":dataset = II\n",
"[11,2] count mean std min 25% 50% 75% max\n",
" x 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" y 11 7.500909 2.031657 3.1 6.695 8.14 8.95 9.26\n",
"\n",
":dataset = III\n",
"[11,2] count mean std min 25% 50% 75% max\n",
" x 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" y 11 7.5 2.030424 5.39 6.25 7.11 7.98 12.74\n",
"\n",
":dataset = IV\n",
"[11,2] count mean std min 25% 50% 75% max\n",
" x 11 9.0 3.316625 8.0 8.0 8.0 8.0 19.0\n",
" y 11 7.500909 2.030579 5.25 6.17 7.04 8.19 12.5\n",
"\n"
]
}
],
"source": [
"ds = Datasets::SeabornData.new(\"anscombe\")\n",
"df = Rover::DataFrame.new(ds.to_table.to_h)\n",
"\n",
"df[:dataset].uniq.each do |dataset|\n",
" puts \":dataset = #{dataset}\"\n",
" puts df[df[:dataset] == dataset].summary\n",
" puts\n",
"end; nil"
]
},
{
"cell_type": "markdown",
"id": "96bde9f0-d9fa-4759-ad98-95c0b6307298",
"metadata": {},
"source": [
"#### Python's"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "d65da6d4-80fc-48be-a32f-62d7dcf30ee1",
"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>x</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>11.000000</td>\n",
" <td>11.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>9.000000</td>\n",
" <td>7.500909</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>3.316625</td>\n",
" <td>2.031568</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>4.000000</td>\n",
" <td>4.260000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>6.500000</td>\n",
" <td>6.315000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>9.000000</td>\n",
" <td>7.580000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>11.500000</td>\n",
" <td>8.570000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>14.000000</td>\n",
" <td>10.840000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y\n",
"count 11.000000 11.000000\n",
"mean 9.000000 7.500909\n",
"std 3.316625 2.031568\n",
"min 4.000000 4.260000\n",
"25% 6.500000 6.315000\n",
"50% 9.000000 7.580000\n",
"75% 11.500000 8.570000\n",
"max 14.000000 10.840000"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sns.set_theme(style:'ticks')\n",
"py_df = sns.load_dataset('anscombe')\n",
"py_df[py_df[:dataset] == \"I\"].describe"
]
},
{
"cell_type": "markdown",
"id": "c2e0a173-760d-4f61-8959-e2da0e86a63c",
"metadata": {},
"source": [
"##### using group"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "316f4d6b-e8fe-483e-abdd-794de0166c6c",
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"8\" halign=\"left\">x</th>\n",
" <th colspan=\"8\" halign=\"left\">y</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" <tr>\n",
" <th>dataset</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>I</th>\n",
" <td>11.0</td>\n",
" <td>9.0</td>\n",
" <td>3.316625</td>\n",
" <td>4.0</td>\n",
" <td>6.5</td>\n",
" <td>9.0</td>\n",
" <td>11.5</td>\n",
" <td>14.0</td>\n",
" <td>11.0</td>\n",
" <td>7.500909</td>\n",
" <td>2.031568</td>\n",
" <td>4.26</td>\n",
" <td>6.315</td>\n",
" <td>7.58</td>\n",
" <td>8.57</td>\n",
" <td>10.84</td>\n",
" </tr>\n",
" <tr>\n",
" <th>II</th>\n",
" <td>11.0</td>\n",
" <td>9.0</td>\n",
" <td>3.316625</td>\n",
" <td>4.0</td>\n",
" <td>6.5</td>\n",
" <td>9.0</td>\n",
" <td>11.5</td>\n",
" <td>14.0</td>\n",
" <td>11.0</td>\n",
" <td>7.500909</td>\n",
" <td>2.031657</td>\n",
" <td>3.10</td>\n",
" <td>6.695</td>\n",
" <td>8.14</td>\n",
" <td>8.95</td>\n",
" <td>9.26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>III</th>\n",
" <td>11.0</td>\n",
" <td>9.0</td>\n",
" <td>3.316625</td>\n",
" <td>4.0</td>\n",
" <td>6.5</td>\n",
" <td>9.0</td>\n",
" <td>11.5</td>\n",
" <td>14.0</td>\n",
" <td>11.0</td>\n",
" <td>7.500000</td>\n",
" <td>2.030424</td>\n",
" <td>5.39</td>\n",
" <td>6.250</td>\n",
" <td>7.11</td>\n",
" <td>7.98</td>\n",
" <td>12.74</td>\n",
" </tr>\n",
" <tr>\n",
" <th>IV</th>\n",
" <td>11.0</td>\n",
" <td>9.0</td>\n",
" <td>3.316625</td>\n",
" <td>8.0</td>\n",
" <td>8.0</td>\n",
" <td>8.0</td>\n",
" <td>8.0</td>\n",
" <td>19.0</td>\n",
" <td>11.0</td>\n",
" <td>7.500909</td>\n",
" <td>2.030579</td>\n",
" <td>5.25</td>\n",
" <td>6.170</td>\n",
" <td>7.04</td>\n",
" <td>8.19</td>\n",
" <td>12.50</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x ... y \n",
" count mean std min 25% 50% ... std min 25% 50% 75% max\n",
"dataset ... \n",
"I 11.0 9.0 3.316625 4.0 6.5 9.0 ... 2.031568 4.26 6.315 7.58 8.57 10.84\n",
"II 11.0 9.0 3.316625 4.0 6.5 9.0 ... 2.031657 3.10 6.695 8.14 8.95 9.26\n",
"III 11.0 9.0 3.316625 4.0 6.5 9.0 ... 2.030424 5.39 6.250 7.11 7.98 12.74\n",
"IV 11.0 9.0 3.316625 8.0 8.0 8.0 ... 2.030579 5.25 6.170 7.04 8.19 12.50\n",
"\n",
"[4 rows x 16 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"py_df.groupby(\"dataset\").describe"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "7cff8b91-b034-478b-96b6-6f24875b2b8b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid object at 0x7f987c779fd0>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAJICAYAAACaHhuvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB69UlEQVR4nO3deXgUZbo28Lt6X5IQskA2EkKQALK6sImKgLJEQEVAlG1EhVHR4YzjUc83c45zvHQcZ+YooIKALLIICIyGACooKCPiMgIiyBKW7CQkJOn03lX1/dHQoTsBsld3cv+uywvzdnXXQ4A3d1c/71uCLMsyiIiIiMhHpXQBRERERMGGAYmIiIgoAAMSERERUQAGJCIiIqIADEhEREREARiQiIiIiAIwIBEREREFYEAiIiIiCsCARERERBSAAYmazMKFC5Genq50GUQUpDhHUChhQKKgsHbtWmzZskXpMgAA58+fx8KFC3Hs2LEWP/eBAweQnp6OnTt3tvi5iYIZ5wiv2uaILVu2ID09HT///HOL19OaMSBRUFi/fj22bt2qdBkAgOLiYixatEiRyY+Iasc5gloaAxIRERFRAAYkapAffvgBEydORO/evTFy5Eh8+OGHtR63efNmzJgxA4MHD0avXr0wduxYrFu3zu+Y4cOH4+TJk/juu++Qnp6O9PR0TJ8+HQBQXl6O119/HePGjUP//v1x00034bHHHsOvv/5a41wffPABMjIy0LdvX9x666144IEHkJmZ6XfM+fPn8eKLL2LIkCHo1asXMjIy8NFHH/keP3DgAB588EEAwIsvvuirJ1gu7ROFCs4RFOo0ShdAoef48eOYPXs2oqKiMG/ePHg8HixcuBDR0dE1jl2/fj1uuOEGDB8+HBqNBl9++SVefvllyLKMRx55BADw0ksv4X//939hMpkwd+5cAEBMTAwAIDc3F7t27cLo0aORlJSECxcuYMOGDZg2bRqysrLQsWNHAMDGjRvxyiuvYNSoUZgxYwacTieOHz+OQ4cOYdy4cQCACxcuYPLkyRAEAY888giioqLw1Vdf4b/+679QVVWFWbNmIS0tDc888wwWLFiAKVOm4OabbwYA3HTTTVf9frjdblgsljp97yIjI6FS8X0JtW6cI/xxjghRMlE9Pfnkk3Lv3r3l/Px839ipU6fkHj16yN26dfM71m6313j+o48+Ko8YMcJvLCMjQ542bVqNY51OpyyKot9Ybm6u3KtXL3nRokW+sd/+9rdyRkbGNet+6aWX5Ntuu00uKyvzG58/f7588803+2o9fPiw3K1bN3nz5s3XfL3Lvv32W7lbt251+i83N7dOr7Vjx446nZsoGHGO8Nfcc8TmzZvlbt26yYcPH65TPVQ3vIJE9SKKIvbt24eRI0ciISHBN56WloahQ4di7969fscbDAbf/1ssFrjdbgwYMAD79u2DxWJBeHj4Nc+n0+n8zl1ZWQmTyYTU1FQcPXrU91hERASKiopw+PBh9OnTp8bryLKMzz77DGPGjIEsyygrK/M9NnToUGRlZeGXX37xvRusj+7du2PFihV1OjY2Nrber08USjhH1MQ5IjQxIFG9lJWVweFwICUlpcZjqampNSa/H3/8EQsXLsTBgwdht9v9HqvL5CdJElavXo1169YhLy8Poij6HouMjPT9/+OPP45vvvkGkyZNQkpKCm677Tbce++9vsmsrKwMlZWV2LBhAzZs2HDV31tDtGvXDkOGDGnQc4laG84RNXGOCE0MSNRscnJyMGvWLHTp0gUvvPAC4uPjodVqsXfvXqxcuRKSJF33NRYvXoy33noLEydOxLPPPot27dpBpVLh1VdfhSzLvuPS0tKwc+dO7NmzB19//TU+++wzrFu3Dk899RSeeeYZ37nGjx+P+++/v9ZzNXQDO5fLhYqKijodGxUVBbVa3aDzELU2nCNq4hwRPBiQqF6ioqJgMBhw7ty5Go+dOXPG7+svvvgCLpcL7777rt+l9gMHDtR4riAItZ7v008/xcCBA/Hqq6/6jVdWVqJ9+/Z+YyaTCWPHjsXYsWPhcrkwb948LF68GHPmzEFUVBTMZjMkSbruO7mr1XI1P/30E2bMmFGnY3fv3o2kpKR6vT5RKOEcURPniNDEgET1olarMXToUOzatQsFBQW+SS07Oxv79u2rcSwAv3dxFosFmzdvrvG6RqMRlZWVtZ7vyucDwI4dO3D+/Hm/S/gXL170mwx1Oh3S0tLw1Vdfwe12Q6/XY9SoUcjMzMScOXPQrVs3v9csKytDVFSUrxYAtdZTG/YXEFXjHFET54jQxIBE9TZv3jx8/fXXeOSRRzB16lSIoog1a9aga9euOH78uO+42267DVqtFnPnzsVDDz0Eq9WKTZs2ITo6GiUlJX6veeONN2L9+vV45513kJKSgqioKAwePBjDhg3D22+/jRdffBH9+/fHiRMnkJmZiU6dOvk9f/bs2YiJicFNN92E6OhonD59GmvWrMGdd96JsLAwAMDvf/97HDhwAJMnT8akSZPQtWtXVFRU4JdffsH+/fvx3XffAQCSk5MRERGBDz/8EGazGSaTCX369KlxzsvYX0Dkj3OEP84RoYkBieqte/fuWL58OV577TUsWLAAcXFxmDdvHkpKSvwmvy5dumDBggV488038frrryMmJgZTp05FVFQUXnrpJb/XfOqpp1BQUIBly5bBarViwIABGDx4MObOnQu73Y7MzExs374dPXv2xJIlS/D3v//d7/lTpkxBZmYmVqxYAZvNhri4OEyfPh1PPvmk75iYmBhs2rQJb7/9Nj7//HOsX78ekZGR6Nq1K5577jnfcVqtFn/5y1/wj3/8A//zP/8Dj8eD11577aqTHxH54xxBrYEgB16bJCIiImrjuF0nERERUQAGJCIiIqIADEhEREREARiQiIiIiAIwIBEREREFYEAiIiIiCsCABGDatGmYNm2a0mUQUZDjXEHUdnCjSACFhYVKl0BEIYBzBVHbwStIRERERAEYkIiIiIgCMCARERERBWBAIiIiIgrAgEREREQUgAGJiIiIKAADEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCMCARERERBWBAIiIiIgrAgEREREQUgAGJiIiIKAADEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCMCARERERBdAoXcCVzp07h+XLl+PQoUM4efIkunTpgm3btvker6qqwooVK7B3716cPXsWOp0Offr0wfz585Genq5g5URERNSaBNUVpJMnT2Lv3r1ISUlBWlpajccLCgqwYcMG3HbbbXjzzTfxv//7v7BYLJgyZQqys7MVqJiIiIhao6C6gjR8+HCMHDkSAPDCCy/gyJEjfo8nJSXh888/h9Fo9I0NGjQIw4cPx7p16/DHP/6xReslIiKi1imoApJKde0LWiaTqcaY2WxGcnIyiouLm6ssIiIiamOC6iO2hqisrPT1KxERERE1haC6gtQQb7zxBgRBwNSpU6953IgRI676WGFhIeLj45u6NCIKQZwriAgI8YC0efNmbNy4EX/5y18QFxendDlERETUSoRsQNq7dy/+9Kc/4cknn8T9999/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94YoioiPj1e6FCJqoPj4eKxZs6ZZz8G5gij01XWu4BUkAHq9HhpN87djFRYWorCwsNnPE8r4Pbo+fo+Uw7kiePB7dH38HjUOryC1oBEjRgAAdu/erXAlwYvfo+vj96j145/x9fF7dH38HjUOryARERERBWBAIiIiIgrAgEREREQUgAGJiIiIKAADEhEREVEABiQiIiKiAFzmT0RERBSAV5CIiIiIAjAgEREREQVgQCIiIiIKwIBEREREFIABiYiIiCgAAxIRERFRAAYkIiIiogAMSEREREQBGJCIiIiIAjAgEREREQVgQCIiIiIKwIBEREREFIABiYiIiCgAAxIRERFRAAYkIiIiogAMSEREREQBGJCIiIiIAjAgUYMtXLgQ6enpSpdBREGM8wSFKgYkUsTatWuxZcsWpcsAAJw/fx4LFy7EsWPHWvzcBw4cQHp6Onbu3Okb27JlC9LT0/Hzzz/7xi7/kCkrK2vxGomUwnnCK3CemDt3Lvr27YuqqqqrPuf3v/89evXqhYsXL7ZUma0OAxIpYv369di6davSZQAAiouLsWjRIkUmPiK6Os4TtRs/fjwcDgd27dpV6+N2ux1ffPEFhg4divbt27dwda0HAxIREVEIGT58OMxmMzIzM2t9fPfu3bDZbBg/fnwLV9a6MCBRnfzwww+YOHEievfujZEjR+LDDz+s9bjNmzdjxowZGDx4MHr16oWxY8di3bp1fscMHz4cJ0+exHfffYf09HSkp6dj+vTpAIDy8nK8/vrrGDduHPr374+bbroJjz32GH799dca5/rggw+QkZGBvn374tZbb8UDDzxQY8I4f/48XnzxRQwZMgS9evVCRkYGPvroI9/jBw4cwIMPPggAePHFF331BMtlfaJQwnmiZRgMBtxzzz349ttvUVpaWuPxbdu2wWw2Y/jw4QpU13polC6Agt/x48cxe/ZsREVFYd68efB4PFi4cCGio6NrHLt+/XrccMMNGD58ODQaDb788ku8/PLLkGUZjzzyCADgpZdewv/+7//CZDJh7ty5AICYmBgAQG5uLnbt2oXRo0cjKSkJFy5cwIYNGzBt2jRkZWWhY8eOAICNGzfilVdewahRozBjxgw4nU4cP34chw4dwrhx4wAAFy5cwOTJkyEIAh555BFERUXhq6++wn/913+hqqoKs2bNQlpaGp555hksWLAAU6ZMwc033wwAuOmmm676/XC73bBYLHX63kVGRkKl4vsQav04T/hr7nli3Lhx2Lp1K3bs2IFp06b5xsvLy7Fv3z5kZGTAYDDU6zUpgEx0HU8++aTcu3dvOT8/3zd26tQpuUePHnK3bt38jrXb7TWe/+ijj8ojRozwG8vIyJCnTZtW41in0ymLoug3lpubK/fq1UtetGiRb+y3v/2tnJGRcc26X3rpJfm2226Ty8rK/Mbnz58v33zzzb5aDx8+LHfr1k3evHnzNV/vsm+//Vbu1q1bnf7Lzc2t02vt2LHDN7Z582a5W7du8uHDh31jCxYskLt16yaXlpbWqUailsZ5wl9zzxMej0e+7bbb5ClTpvgdu379erlbt27y119/Xac66ep4BYmuSRRF7Nu3DyNHjkRCQoJvPC0tDUOHDsXevXv9jr/yHYvFYoHb7caAAQOwb98+WCwWhIeHX/N8Op3O79yVlZUwmUxITU3F0aNHfY9FRESgqKgIhw8fRp8+fWq8jizL+OyzzzBmzBjIsuy3+mvo0KHIysrCL7/84nsnWB/du3fHihUr6nRsbGxsvV+fKNRwnqipuecJtVqNjIwMrFy5Enl5eUhKSgLg/XgtJiYGgwcPrvdrkj8GJLqmsrIyOBwOpKSk1HgsNTW1xsT3448/YuHChTh48CDsdrvfY3WZ+CRJwurVq7Fu3Trk5eVBFEXfY5GRkb7/f/zxx/HNN99g0qRJSElJwW233YZ7773XN5GVlZWhsrISGzZswIYNG676e2uIdu3aYciQIQ16LlFrxHmippaYJ8aNG4eVK1di27ZtmDt3LoqKivDDDz9g+vTpUKvVzXrutoABiZpMTk4OZs2ahS5duuCFF15AfHw8tFot9u7di5UrV0KSpOu+xuLFi/HWW29h4sSJePbZZ9GuXTuoVCq8+uqrkGXZd1xaWhp27tyJPXv24Ouvv8Znn32GdevW4amnnsIzzzzjO9f48eNx//3313quhm5e53K5UFFRUadjo6KiOFERXYHzRE0NnSd69eqFLl26ICsrC3PnzsW2bdsgy7Kvv4oahwGJrikqKgoGgwHnzp2r8diZM2f8vv7iiy/gcrnw7rvv+l1mP3DgQI3nCoJQ6/k+/fRTDBw4EK+++qrfeGVlZY39PEwmE8aOHYuxY8fC5XJh3rx5WLx4MebMmYOoqCiYzWZIknTdd3FXq+VqfvrpJ8yYMaNOx+7evdt36ZuoteI8UVNLzRPjxo3DW2+9hV9//RXbtm1D586da/04keqPAYmuSa1WY+jQodi1axcKCgp8E1p2djb27dtX41gAfu/gLBYLNm/eXON1jUYjKisraz3flc8HgB07duD8+fN+l+8vXrzoNxHqdDqkpaXhq6++gtvthl6vx6hRo5CZmYk5c+agW7dufq9ZVlaGqKgoXy0Aaq2nNuxBIvLHeaKmlponLgekBQsW4NixY5g3b16DX4v8MSDRdc2bNw9ff/01HnnkEUydOhWiKGLNmjXo2rUrjh8/7jvutttug1arxdy5c/HQQw/BarVi06ZNiI6ORklJid9r3njjjVi/fj3eeecdpKSkICoqCoMHD8awYcPw9ttv48UXX0T//v1x4sQJZGZmolOnTn7Pnz17NmJiYnDTTTchOjoap0+fxpo1a3DnnXciLCwMgHer/QMHDmDy5MmYNGkSunbtioqKCvzyyy/Yv38/vvvuOwBAcnIyIiIi8OGHH8JsNsNkMqFPnz41znkZe5CIauI84a+l5olOnTqhf//+2L17NwDw47UmxIBE19W9e3csX74cr732GhYsWIC4uDjMmzcPJSUlfhNfly5dsGDBArz55pt4/fXXERMTg6lTpyIqKgovvfSS32s+9dRTKCgowLJly2C1WjFgwAAMHjwYc+fOhd1uR2ZmJrZv346ePXtiyZIl+Pvf/+73/ClTpiAzMxMrVqyAzWZDXFwcpk+fjieffNJ3TExMDDZt2oS3334bn3/+OdavX4/IyEh07doVzz33nO84rVaLv/zlL/jHP/6B//mf/4HH48Frr7121YmPiGriPKGccePG4aeffkKfPn1qbZSnhhHkwOuURERERG0ct/glIiIiCsCARERERBSAAYmIiIgoAAMSERERUQAGJCIiIqIADEhEREREARiQiIiIiAIwIAGYNm0apk2bpnQZRBTkOFcQtR3cSRtAYWGh0iUQUQjgXEHUdvAKEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCsEmbqAEkWUKeLRdVHgvCNOFIMnWCSuD7DSKi1oIBiaiejlcew2dFO3HeUQRR9kAtaNDREId74kYjPaKH0uUREVET4Fteono4XnkM63PWIN+eB71ajwhtO+jVeuTb87A+Zw2OVx5TukQiImoCDEhEdSTJEj4r2gmH6ECkNhI6lQ4qQQWdSodIbSQcogOfFe2EJEtKl0pERI3EgERUR3m2XJx3FMGsMUMQBL/HBEGAWWPGeUcR8my5ClVIRERNhT1IRHVU5bFAlD3QCOZaH9cIGthkK6o8lhaujIiobZIlCY6cHIgWC9Th4TAkJ0NQNc21HwYkojoK04RDLWjgkT3QCboaj3suNWyHacIVqI6IqG2xHj2KC1lZcBUWQhZFCGo1dPHxiMnIgLlnz0a/Pj9iI6qjJFMndDTEweqxQpZlv8dkWYbVY0VHQxySTJ0UqpCIqG2wHj2KwlWr4MzNhcpggKZdO6gMBjjz8lC4ahWsR482+hwMSER1pBJUuCduNAxqA8rd5XBJLkiyBJfkQrm7HAa1AffEjeZ+SEREzUiWJFzIyoJkt0NlMsFTVgbX+fOAIEATGQnJ4cCFrCzIUuMWzHAmJ6qH9IgemJo8DYnGJDhFJyrdFXCKTiQakzA1eRr3QSIiamaOnBw4CwoAAO6iIkgOB2SnE6LFAkEQoDab4SoshCMnp1HnYQ8SUT2lR/TADeHp3EmbiEgBzoICiJWVgCj6jauMRgCAoNFAFkWIlsYtmGFAImoAlaBCsjlF6TKIiNqUyh9+wPkPPvAPR2o1tDExUF8KSLLHA0Gthjq8cQtmGJCIiIgoqEkOB4rWrUPFV1/5jatMJmijoyGo1QC8C2ZEqxX6pCQYkpMbdU4GJCIiIgpa9jNnULB4sbcR+xJBq4XKaIQMQBZFQBAgezwQrVaoDAbEZGQ0ej+koApI586dw/Lly3Ho0CGcPHkSXbp0wbZt23yPV1VVYcWKFdi7dy/Onj0LnU6HPn36YP78+UhPT1ewciIiImpKsiShdMcOlGzZ4veRmiE1FYlz5sBdVlZjHyR9UlKT7YMUVAHp5MmT2Lt3L/r27QtJkmrsNVNQUIANGzZg4sSJ+N3vfgen04n3338fU6ZMwebNm5GWlqZQ5URERNRU3KWlKFi6FLZff60eFAREZ2Qg9r77IGg00MXFwdS9e9vYSXv48OEYOXIkAOCFF17AkSNH/B5PSkrC559/DuOlRiwAGDRoEIYPH45169bhj3/8Y4vWS0RERE2r8rvvULhyJSSbzTemiYpCwhNPwNy9u9+xgkoFY+fOzVJHUAUk1XVSn8lkqjFmNpuRnJyM4uLi5iqLiIiImpnkcKBo7VpUfP2133j4gAGInzkTanPt98FsLkEVkBqisrISJ0+exJAhQ5QuhYiIiBrAfvo08hcvhvuKix0qgwEdp09HuyFDIAhCi9cU8gHpjTfegCAImDp16jWPGzFixFUfKywsRHx8fFOXRkQhiHMFUcuRJQml27ah5J//BK64NYihSxckzp0LXYcOitUW0gFp8+bN2LhxI/7yl78gLi5O6XKIiIiojtwXLiD/vfdgP3GielAQEH3vvYidMAGCRtmIErIBae/evfjTn/6EJ598Evfff/91j9+9e/dVH7vWO0Yials4VxA1v8oDB7yN2Ha7b0wTHY3EJ56AKUi27QnJgHTw4EE8++yzuO+++/Dss88qXQ4RERHVgWi34/yaNaj417/8xiMGDULc9Okt3oh9LSEXkE6dOoU5c+Zg0KBBePnll5Uuh4iIiOrAduoUCpYsgbukxDemMhgQN306IhRqxL6WoApIdrsde/fuBQDk5+ejqqoKO3fuBAAMGDAAsixj9uzZ0Ov1mDlzpt8+SWFhYejatasidRMREVHtZFHEhW3bcOHjj/0asY1duyLhiScUbcS+lqAKSKWlpTU+Mrv89erVqwEARUVFAIBZs2b5HTdgwAB88MEHzV8kERER1YmrpAQF770H+8mT1YOCgJjx4xEzfrzvJrPBKKgCUlJSEo4fP37NY673OBERESmvYv9+FK1e7deIrY2JQcKcOTDdcIOCldVNUAUkIiIiCm2izYai1atR+e23fuPthgxBx+nTob7idmHBjAGJiIiImoTt5EkULF4Md2mpb0xlNCJuxgy0GzxYwcrqjwGJiIiIGkUWRVz45BNc+OQTQJZ948Zu3ZD4xBPQxsQoWF3DMCARERFRg7mKi1GwZAns2dnVgyoVYiZMQMy4cRCucyP6YMWARERERPUmyzIqv/kGRR98AMnh8I1rY2OROGcOjCG+9Q4DEhEREdWLaLV6G7EPHPAbb3fbbeg4bVrINGJfCwMSERER1Znt+HHkv/cePFc2YptMiJ85ExEDBypYWdNiQCIiIqLrkj0elHz8MUq3bfNrxDalpyPhiSegjY5WsLqmx4BERERE1+Q6fx75ixfDceZM9aBajdj77kN0RkbINmJfCwMSERER1UqWZVTs24eiNWsgO52+cW3Hjt5G7C5dFKyueTEgERERUQ2i1YrClSth+f57v/F2t9+O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164dAMBisfiNV1ZW+j1O/kwmE+6880788ssvSpdCTYRzxbVxrmgYzhV1w4BEQadLly4AqvsLLjt9+jS0Wi06deqkRFlEFGQ4V1BzYkBSwPbt26FWq9GzZ0+lSwlKnTp1QufOnbFz506/8e3bt2Pw4MHQ6XQKVRbcbDYb9uzZg969eytdCjURzhXXxrmiYThX1A17kJrZ7NmzMXDgQKSnpwMAdu/ejY0bN2LGjBmIjY1VuDpl2O127N27FwCQn5+Pqqoq3wQ3YMAAREVFYd68eXjuueeQnJyMgQMHYvv27Th8+DDWrFmjZOkt5nrfo9OnT2PZsmW4++67kZiYiOLiYqxYsQIlJSV46623lCydGohzRU2cK66Pc0XzEeSrbbtJTeKVV17B119/jaKiIkiShM6dO2PSpEmYPn06BEFQujxF5OXlYcSIEbU+tnr1agwcOBCA9/YBS5cu9d0+4D/+4z/azO0Drvc9iouLw5///GccP34c5eXlMBqN6N+/P55++mn06dOnhaulpsC5oibOFdfHuaL5MCARERERBWAPEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCMCARERERBWBAIiIiIgrAgEREREQUgAGJiIiIKAADEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCMCBRq+RwODB69GiMHj0aDofDN15eXo6hQ4fioYcegiiKClZIRMGAcwVdDQMStUoGgwGvv/46cnJy8H//93++8T//+c+wWCx47bXXoFarFayQiIIB5wq6Go3SBRA1l759++Kxxx7D0qVLcffdd+PChQvIysrCSy+9hNTUVKXLI6IgwbmCaiPIsiwrXQRRc3G5XJg4cSJsNhtsNhu6du2K1atXQxAEpUsjoiDCuYICMSBRq/fzzz/jwQcfhF6vR1ZWFjp16qR0SUQUhDhX0JXYg0St3r59+wAATqcT586dU7gaIgpWnCvoSryCRK3ar7/+igcffBDjxo3Dr7/+iosXLyIzMxPh4eFKl0ZEQYRzBQViQKJWy+12Y/LkyaioqMAnn3yCvLw83wT42muvKV0eEQUJzhVUG37ERq3Wu+++i2PHjuHVV19FWFgYunfvjqeeegpbtmzB3r17lS6PiIIE5wqqDa8gUav0yy+/YPLkyZg6dSr+3//7f75xURQxZcoUnD9/HllZWYiIiFCwSiJSGucKuhoGJCIiIqIA/IiNiIiIKAADEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgCMCARERERBWBAIiIiIgrAgEREREQUgAGJiIiIKAADEhEREVEABiQiIiKiAAxIRERERAEYkIiIiIgC/H9jiddwTKZy1wAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 600x600 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.lmplot(\n",
" data:py_df,\n",
" x:'x', y:'y', hue:'dataset',\n",
" col:'dataset', col_wrap:2,\n",
" ci:nil, palette:\"muted\", height:3,\n",
")"
]
},
{
"cell_type": "markdown",
"id": "31c0101b-240e-42ad-9e68-f2141b6e76fc",
"metadata": {
"tags": []
},
"source": [
"### R dataset by Rover"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "03205c43-3a31-4d5e-9843-6918fadc008c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1) ability.cov, Ability and Intelligence Tests\n",
" [6,8] count mean std min 25% 50% 75% max\n",
"cov.general 6 20.105167 11.752029 5.991 9.706 22.698 28.436 33.52\n",
"cov.picture 6 7.458333 5.575117 1.782 5.19975 6.3455 7.078 18.137\n",
" cov.blocks 6 50.515833 50.063513 18.137 22.4255 32.475 46.44475 149.831\n",
" cov.maze 6 8.962 6.346548 1.782 5.0735 7.549 11.802 19.424\n",
"cov.reading 6 30.207333 25.357664 4.757 8.89075 26.0925 47.3105 66.762\n",
" cov.vocab 6 49.797833 47.904936 7.204 14.2315 40.227 62.75975 135.292\n",
" center 6 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n",
" n.obs 6 112.0 0.0 112.0 112.0 112.0 112.0 112.0\n",
"\n",
"(2) airmiles, Passenger Miles on Commercial US Airlines, 1937-1960\n",
"[24,2] count mean std min 25% 50% 75% max\n",
" time 24 1948.5 7.071068 1937 1942.75 1948.5 1954.25 1960\n",
" value 24 10527.833333 10033.32719 412 1580.0 6431.0 17531.5 30514\n",
"\n",
"(3) AirPassengers, Monthly Airline Passenger Numbers 1949-1960\n",
"[144,2] count mean std min 25% 50% 75% max\n",
" time 144 1954.958333 3.476109 1949.0 1951.979167 1954.958333 1957.9375 1960.91666666667\n",
" value 144 280.298611 119.966317 104.0 180.0 265.5 360.5 622.0\n",
"\n",
"(4) airquality, New York Air Quality Measurements\n",
"[153,4] count mean std min 25% 50% 75% max\n",
" Wind 153 9.957516 3.523001 1.7 7.4 9.7 11.5 20.7\n",
" Temp 153 77.882353 9.46527 56.0 72.0 79.0 85.0 97.0\n",
" Month 153 6.993464 1.416522 5.0 6.0 7.0 8.0 9.0\n",
" Day 153 15.803922 8.86452 1.0 8.0 16.0 23.0 31.0\n",
"\n",
"(5) anscombe, Anscombe's Quartet of 'Identical' Simple Linear Regressions\n",
"[11,8] count mean std min 25% 50% 75% max\n",
" x1 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x2 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x3 11 9.0 3.316625 4.0 6.5 9.0 11.5 14.0\n",
" x4 11 9.0 3.316625 8.0 8.0 8.0 8.0 19.0\n",
" y1 11 7.500909 2.031568 4.26 6.315 7.58 8.57 10.84\n",
" y2 11 7.500909 2.031657 3.1 6.695 8.14 8.95 9.26\n",
" y3 11 7.5 2.030424 5.39 6.25 7.11 7.98 12.74\n",
" y4 11 7.500909 2.030579 5.25 6.17 7.04 8.19 12.5\n",
"\n",
"(6) attenu, The Joyner-Boore Attenuation Data\n",
"[182,4] count mean std min 25% 50% 75% max\n",
" event 182 14.741758 6.852375 1.0 9.0 18.0 20.0 23.0\n",
" mag 182 6.084066 0.721431 5.0 5.3 6.1 6.6 7.7\n",
" dist 182 45.603297 62.170063 0.5 11.325 23.4 47.55 370.0\n",
" accel 182 0.15422 0.149001 0.003 0.04425 0.113 0.21925 0.81\n",
"\n",
"(7) attitude, The Chatterjee-Price Attitude Data\n",
" [30,7] count mean std min 25% 50% 75% max\n",
" rating 30 64.633333 12.172562 40 58.75 65.5 71.75 85\n",
"complaints 30 66.6 13.314757 37 58.5 65.0 77.0 90\n",
"privileges 30 53.133333 12.23543 30 45.0 51.5 62.5 83\n",
" learning 30 56.366667 11.737013 34 47.0 56.5 66.75 75\n",
" raises 30 64.633333 10.397226 43 58.25 63.5 71.0 88\n",
" critical 30 74.766667 9.894908 49 69.25 77.5 80.0 92\n",
" advance 30 42.933333 10.288706 25 35.0 41.0 47.75 72\n",
"\n",
"(8) austres, Quarterly Time Series of the Number of Australian Residents\n",
"[89,2] count mean std min 25% 50% 75% max\n",
" time 89 1982.25 6.459005 1971.25 1976.75 1982.25 1987.75 1993.25\n",
" value 89 15273.449438 1356.812524 13067.3 14110.1 15184.2 16398.9 17661.5\n",
"\n",
"(9) BJsales, Sales Data with Leading Indicator\n",
"[150,2] count mean std min 25% 50% 75% max\n",
" time 150 75.5 43.445368 1.0 38.25 75.5 112.75 150.0\n",
" value 150 229.978 21.479686 198.6 212.575 220.65 254.675 263.3\n",
"\n",
"(10) BOD, Biochemical Oxygen Demand\n",
" [6,2] count mean std min 25% 50% 75% max\n",
" Time 6 3.666667 2.160247 1.0 2.25 3.5 4.75 7.0\n",
"demand 6 14.833333 4.630623 8.3 11.625 15.8 18.25 19.8\n",
"\n",
"(11) cars, Speed and Stopping Distances of Cars\n",
"[50,2] count mean std min 25% 50% 75% max\n",
" speed 50 15.4 5.287644 4 12.0 15.0 19.0 25\n",
" dist 50 42.98 25.769377 2 26.0 36.0 56.0 120\n",
"\n",
"(12) ChickWeight, Weight versus age of chicks on different diets\n",
"[578,4] count mean std min 25% 50% 75% max\n",
" weight 578 121.818339 71.07196 35 63.0 103.0 163.75 373\n",
" Time 578 10.717993 6.7584 0 4.0 10.0 16.0 21\n",
" Chick 578 25.750865 14.568795 1 13.0 26.0 38.0 50\n",
" Diet 578 2.235294 1.162678 1 1.0 2.0 3.0 4\n",
"\n",
"(13) chickwts, Chicken Weights by Feed Type\n",
"[71,1] count mean std min 25% 50% 75% max\n",
"weight 71 261.309859 78.0737 108 204.5 258.0 323.5 423\n",
"\n",
"(14) CO2, Carbon Dioxide Uptake in Grass Plants\n",
"[84,2] count mean std min 25% 50% 75% max\n",
" conc 84 435.0 295.924119 95.0 175.0 350.0 675.0 1000.0\n",
"uptake 84 27.213095 10.814412 7.7 17.9 28.3 37.125 45.5\n",
"\n",
"(15) co2, Mauna Loa Atmospheric CO2 Concentration\n",
"[468,2] count mean std min 25% 50% 75% max\n",
" time 468 1978.458333 11.270352 1959.0 1968.729167 1978.458333 1988.1875 1997.91666667\n",
" value 468 337.053526 14.96622 313.18 323.53 335.17 350.255 366.84\n",
"\n",
"(16) crimtab, Student's 3000 Criminals Data\n",
"[924,3] count mean std min 25% 50% 75% max\n",
" Var1 924 11.45 1.212748 9.4 10.4 11.45 12.5 13.5\n",
" Var2 924 168.91 16.123221 142.24 154.94 168.91 182.88 195.58\n",
" Freq 924 3.246753 8.29179 0.0 0.0 0.0 1.0 58.0\n",
"\n",
"(17) discoveries, Yearly Numbers of Important Discoveries\n",
"[100,2] count mean std min 25% 50% 75% max\n",
" time 100 1909.5 29.011492 1860 1884.75 1909.5 1934.25 1959\n",
" value 100 3.1 2.254065 0 2.0 3.0 4.0 12\n",
"\n",
"(18) DNase, Elisa assay of DNase\n",
"[176,3] count mean std min 25% 50% 75% max\n",
" Run 176 6.0 3.1713 1.0 3.0 6.0 9.0 11.0\n",
" conc 176 3.106689 4.059865 0.04882812 0.341797 1.171875 3.90625 12.5\n",
"density 176 0.719159 0.595573 0.011 0.19775 0.5265 1.1705 2.003\n",
"\n",
"(19) esoph, Smoking, Alcohol and (O)esophageal Cancer\n",
" [88,2] count mean std min 25% 50% 75% max\n",
" ncases 88 2.272727 2.753169 0 0.0 1.0 4.0 17\n",
"ncontrols 88 8.806818 12.135119 0 1.0 4.0 10.0 60\n",
"\n",
"(20) euro, Conversion Rates of Euro Currencies\n",
"[11,1] count mean std min 25% 50% 75% max\n",
" dat 11 219.548228 573.614402 0.787564 4.07472 13.7603 103.36295 1936.27\n",
"\n",
"(21) EuStockMarkets, Daily Closing Prices of Major European Stock Indices, 1991-1998\n",
"[1860,4] count mean std min 25% 50% 75% max\n",
" DAX 1860 2530.656882 1084.79274 1402.34 1744.1025 2140.565 2722.3675 6186.09\n",
" SMI 1860 3376.22371 1663.026465 1587.4 2165.625 2796.35 3812.425 8412.0\n",
" CAC 1860 2227.828495 580.314198 1611.0 1875.15 1992.3 2274.35 4388.5\n",
" FTSE 1860 3565.643172 976.71554 2281.0 2843.15 3246.6 3993.575 6179.0\n",
"\n",
"(22) faithful, Old Faithful Geyser Data\n",
" [272,2] count mean std min 25% 50% 75% max\n",
"eruptions 272 3.487783 1.141371 1.6 2.16275 4.0 4.45425 5.1\n",
" waiting 272 70.897059 13.594974 43.0 58.0 76.0 82.0 96.0\n",
"\n",
"(23) Formaldehyde, Determination of Formaldehyde\n",
" [6,2] count mean std min 25% 50% 75% max\n",
" carb 6 0.516667 0.285774 0.1 0.35 0.55 0.675 0.9\n",
"optden 6 0.457833 0.250539 0.086 0.31325 0.492 0.604 0.782\n",
"\n",
"(24) freeny, Freeny's Revenue Data\n",
" [39,5] count mean std min 25% 50% 75% max\n",
" y 39 9.306304 0.315617 8.79137 9.0446 9.31378 9.590855 9.79424\n",
"lag.quarterly.revenue 39 9.280718 0.315468 8.79137 9.019585 9.28436 9.560515 9.77536\n",
" price.index 39 4.496182 0.133357 4.27789 4.391615 4.51018 4.604965 4.70997\n",
" income.level 39 6.038596 0.120443 5.8211 5.947985 6.06093 6.13912 6.2003\n",
" market.potential 39 13.066831 0.064504 12.9699 13.0066 13.0693 13.1244 13.1664\n",
"\n",
"(25) HairEyeColor, Hair and Eye Color of Statistics Students\n",
"[32,1] count mean std min 25% 50% 75% max\n",
" Freq 32 18.5 18.242099 2 7.0 10.0 29.25 66\n",
"\n",
"(26) Harman23.cor, Harman Example 2.3\n",
" [8,10] count mean std min 25% 50% 75% max\n",
" cov.height 8 0.633 0.271179 0.301 0.394 0.639 0.84925 1.0\n",
" cov.arm.span 8 0.618375 0.295601 0.277 0.3635 0.6205 0.85475 1.0\n",
" cov.forearm 8 0.596 0.303648 0.237 0.3385 0.5905 0.824 1.0\n",
" cov.lower.leg 8 0.617875 0.279309 0.327 0.356 0.6185 0.83425 1.0\n",
" cov.weight 8 0.59825 0.222184 0.376 0.422 0.551 0.738 1.0\n",
"cov.bitro.diameter 8 0.53675 0.245921 0.319 0.32825 0.4875 0.62775 1.0\n",
" cov.chest.girth 8 0.49925 0.26719 0.237 0.295 0.433 0.61975 1.0\n",
" cov.chest.width 8 0.5315 0.216977 0.345 0.37775 0.477 0.59 1.0\n",
" center 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n",
" n.obs 8 305.0 0.0 305.0 305.0 305.0 305.0 305.0\n",
"\n",
"(27) Harman74.cor, Harman Example 7.4\n",
" [24,26] count mean std min 25% 50% 75% max\n",
" cov.VisualPerception 24 0.355333 0.16806 0.116 0.2985 0.329 0.4055 1.0\n",
" cov.Cubes 24 0.239625 0.184311 0.005 0.14875 0.231 0.28675 1.0\n",
" cov.PaperFormBoard 24 0.262875 0.191116 -0.075 0.177 0.2485 0.31325 1.0\n",
" cov.Flags 24 0.293542 0.183721 0.066 0.18025 0.3135 0.336 1.0\n",
" cov.GeneralInformation 24 0.385083 0.200596 0.187 0.2425 0.3195 0.4365 1.0\n",
" cov.PargraphComprehension 24 0.382583 0.206195 0.095 0.26 0.318 0.4335 1.0\n",
" cov.SentenceCompletion 24 0.371208 0.218879 0.157 0.22525 0.309 0.4405 1.0\n",
" cov.WordClassification 24 0.38775 0.178238 0.157 0.27325 0.3595 0.4455 1.0\n",
" cov.WordMeaning 24 0.3815 0.21788 0.113 0.2465 0.28 0.48825 1.0\n",
" cov.Addition 24 0.27775 0.217806 -0.075 0.1585 0.2245 0.339 1.0\n",
" cov.Code 24 0.337042 0.177146 0.091 0.24825 0.311 0.37125 1.0\n",
" cov.CountingDots 24 0.286542 0.202825 0.095 0.14375 0.2305 0.35125 1.0\n",
"cov.StraightCurvedCapitals 24 0.357667 0.168907 0.139 0.275 0.325 0.39825 1.0\n",
" cov.WordRecognition 24 0.268458 0.178211 0.066 0.1815 0.2425 0.3025 1.0\n",
" cov.NumberRecognition 24 0.253292 0.17609 0.065 0.17025 0.235 0.26 1.0\n",
" cov.FigureRecognition 24 0.317042 0.165031 0.119 0.261 0.2935 0.345 1.0\n",
" cov.ObjectNumber 24 0.292042 0.174138 0.005 0.2045 0.2735 0.3245 1.0\n",
" cov.NumberFigure 24 0.325333 0.161609 0.159 0.25075 0.317 0.35175 1.0\n",
" cov.FigureWord 24 0.281417 0.170392 0.11 0.1915 0.2665 0.315 1.0\n",
" cov.Deduction 24 0.364792 0.165544 0.167 0.2695 0.352 0.429 1.0\n",
" cov.NumericalPuzzles 24 0.358583 0.159254 0.165 0.296 0.352 0.4005 1.0\n",
" cov.ProblemReasoning 24 0.362208 0.16369 0.16 0.26725 0.3495 0.40025 1.0\n",
" cov.SeriesCompletion 24 0.40325 0.154898 0.242 0.299 0.3825 0.45675 1.0\n",
" cov.ArithmeticProblems 24 0.384167 0.159249 0.165 0.2985 0.3815 0.42625 1.0\n",
" center 24 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n",
" n.obs 24 145.0 0.0 145.0 145.0 145.0 145.0 145.0\n",
"\n",
"(28) Indometh, Pharmacokinetics of Indomethacin\n",
" [66,3] count mean std min 25% 50% 75% max\n",
"Subject 66 3.5 1.720912 1.0 2.0 3.5 5.0 6.0\n",
" time 66 2.886364 2.464432 0.25 0.75 2.0 5.0 8.0\n",
" conc 66 0.591818 0.632584 0.05 0.11 0.34 0.8325 2.72\n",
"\n",
"(29) infert, Infertility after Spontaneous and Induced Abortion\n",
" [248,7] count mean std min 25% 50% 75% max\n",
" age 248 31.504032 5.251565 21 28.0 31.0 35.25 44\n",
" parity 248 2.092742 1.251504 1 1.0 2.0 3.0 6\n",
" induced 248 0.572581 0.738457 0 0.0 0.0 1.0 2\n",
" case 248 0.334677 0.472832 0 0.0 0.0 1.0 1\n",
" spontaneous 248 0.576613 0.732541 0 0.0 0.0 1.0 2\n",
" stratum 248 41.870968 23.968423 1 21.0 42.0 62.25 83\n",
"pooled.stratum 248 33.580645 17.2721 1 19.0 36.0 48.25 63\n",
"\n",
"(30) InsectSprays, Effectiveness of Insect Sprays\n",
"[72,1] count mean std min 25% 50% 75% max\n",
" count 72 9.5 7.203286 0 3.0 7.0 14.25 26\n",
"\n",
"(31) iris, Edgar Anderson's Iris Data\n",
" [150,4] count mean std min 25% 50% 75% max\n",
"Sepal.Length 150 5.843333 0.828066 4.3 5.1 5.8 6.4 7.9\n",
" Sepal.Width 150 3.057333 0.435866 2.0 2.8 3.0 3.3 4.4\n",
"Petal.Length 150 3.758 1.765298 1.0 1.6 4.35 5.1 6.9\n",
" Petal.Width 150 1.199333 0.762238 0.1 0.3 1.3 1.8 2.5\n",
"\n",
"(32) iris3, Edgar Anderson's Iris Data\n",
" [50,12] count mean std min 25% 50% 75% max\n",
" Sepal L..Setosa 50 5.006 0.35249 4.3 4.8 5.0 5.2 5.8\n",
" Sepal W..Setosa 50 3.428 0.379064 2.3 3.2 3.4 3.675 4.4\n",
" Petal L..Setosa 50 1.462 0.173664 1.0 1.4 1.5 1.575 1.9\n",
" Petal W..Setosa 50 0.246 0.105386 0.1 0.2 0.2 0.3 0.6\n",
"Sepal L..Versicolor 50 5.936 0.516171 4.9 5.6 5.9 6.3 7.0\n",
"Sepal W..Versicolor 50 2.77 0.313798 2.0 2.525 2.8 3.0 3.4\n",
"Petal L..Versicolor 50 4.26 0.469911 3.0 4.0 4.35 4.6 5.1\n",
"Petal W..Versicolor 50 1.326 0.197753 1.0 1.2 1.3 1.5 1.8\n",
" Sepal L..Virginica 50 6.588 0.63588 4.9 6.225 6.5 6.9 7.9\n",
" Sepal W..Virginica 50 2.974 0.322497 2.2 2.8 3.0 3.175 3.8\n",
" Petal L..Virginica 50 5.552 0.551895 4.5 5.1 5.55 5.875 6.9\n",
" Petal W..Virginica 50 2.026 0.27465 1.4 1.8 2.0 2.3 2.5\n",
"\n",
"(33) islands, Areas of the World's Major Landmasses\n",
"[48,1] count mean std min 25% 50% 75% max\n",
" dat 48 1252.729167 3371.145735 12 20.5 41.0 183.25 16988\n",
"\n",
"(34) JohnsonJohnson, Quarterly Earnings per Johnson & Johnson Share\n",
"[84,2] count mean std min 25% 50% 75% max\n",
" time 84 1970.375 6.098155 1960.0 1965.1875 1970.375 1975.5625 1980.75\n",
" value 84 4.799762 4.309991 0.44 1.2475 3.51 7.1325 16.2\n",
"\n",
"(35) LakeHuron, Level of Lake Huron 1875-1972\n",
"[98,2] count mean std min 25% 50% 75% max\n",
" time 98 1923.5 28.434134 1875.0 1899.25 1923.5 1947.75 1972.0\n",
" value 98 579.004082 1.318299 575.96 578.135 579.12 579.875 581.86\n",
"\n",
"(36) lh, Luteinizing Hormone in Blood Samples\n",
"[48,2] count mean std min 25% 50% 75% max\n",
" time 48 24.5 14.0 1.0 12.75 24.5 36.25 48.0\n",
" value 48 2.4 0.551593 1.4 2.0 2.3 2.75 3.5\n",
"\n",
"(37) LifeCycleSavings, Intercountry Life-Cycle Savings Data\n",
"[50,5] count mean std min 25% 50% 75% max\n",
" sr 50 9.671 4.480407 0.6 6.97 10.51 12.6175 21.1\n",
" pop15 50 35.0896 9.151727 21.44 26.215 32.575 44.065 47.64\n",
" pop75 50 2.293 1.290771 0.56 1.125 2.175 3.325 4.7\n",
" dpi 50 1106.7584 990.868889 88.94 288.2075 695.665 1795.6225 4001.89\n",
" ddpi 50 3.7576 2.869871 0.22 2.0025 3.0 4.4775 16.71\n",
"\n",
"(38) Loblolly, Growth of Loblolly pine trees\n",
"[84,3] count mean std min 25% 50% 75% max\n",
"height 84 32.364405 20.673605 3.46 10.4675 34.0 51.3625 64.1\n",
" age 84 13.0 7.899977 3.0 5.0 12.5 20.0 25.0\n",
" Seed 84 316.142857 9.877738 301.0 307.0 317.0 325.0 331.0\n",
"\n",
"(39) longley, Longley's Economic Regression Data\n",
" [16,7] count mean std min 25% 50% 75% max\n",
"GNP.deflator 16 101.68125 10.791553 83.0 94.525 100.6 111.25 116.9\n",
" GNP 16 387.698437 99.394938 234.289 317.881 381.427 454.0855 554.894\n",
" Unemployed 16 319.33125 93.446425 187.0 234.825 314.35 384.25 480.6\n",
"Armed.Forces 16 260.66875 69.59196 145.6 229.8 271.75 306.075 359.4\n",
" Population 16 117.424 6.956102 107.608 111.7885 116.8035 122.304 130.081\n",
" Year 16 1954.5 4.760952 1947.0 1950.75 1954.5 1958.25 1962.0\n",
" Employed 16 65.317 3.511968 60.171 62.7125 65.504 68.2905 70.551\n",
"\n",
"(40) lynx, Annual Canadian Lynx trappings 1821-1934\n",
"[114,2] count mean std min 25% 50% 75% max\n",
" time 114 1877.5 33.052988 1821 1849.25 1877.5 1905.75 1934\n",
" value 114 1538.017544 1585.843914 39 348.25 771.0 2566.75 6991\n",
"\n",
"(41) morley, Michelson Speed of Light Data\n",
"[100,3] count mean std min 25% 50% 75% max\n",
" Expt 100 3.0 1.421338 1 2.0 3.0 4.0 5\n",
" Run 100 10.5 5.795331 1 5.75 10.5 15.25 20\n",
" Speed 100 852.4 79.010548 620 807.5 850.0 892.5 1070\n",
"\n",
"(42) mtcars, Motor Trend Car Road Tests\n",
"[32,11] count mean std min 25% 50% 75% max\n",
" mpg 32 20.090625 6.026948 10.4 15.425 19.2 22.8 33.9\n",
" cyl 32 6.1875 1.785922 4.0 4.0 6.0 8.0 8.0\n",
" disp 32 230.721875 123.938694 71.1 120.825 196.3 326.0 472.0\n",
" hp 32 146.6875 68.562868 52.0 96.5 123.0 180.0 335.0\n",
" drat 32 3.596563 0.534679 2.76 3.08 3.695 3.92 4.93\n",
" wt 32 3.21725 0.978457 1.513 2.58125 3.325 3.61 5.424\n",
" qsec 32 17.84875 1.786943 14.5 16.8925 17.71 18.9 22.9\n",
" vs 32 0.4375 0.504016 0.0 0.0 0.0 1.0 1.0\n",
" am 32 0.40625 0.498991 0.0 0.0 0.0 1.0 1.0\n",
" gear 32 3.6875 0.737804 3.0 3.0 4.0 4.0 5.0\n",
" carb 32 2.8125 1.6152 1.0 2.0 2.0 4.0 8.0\n",
"\n",
"(43) nhtemp, Average Yearly Temperatures in New Haven\n",
"[60,2] count mean std min 25% 50% 75% max\n",
" time 60 1941.5 17.464249 1912.0 1926.75 1941.5 1956.25 1971.0\n",
" value 60 51.16 1.265608 47.9 50.575 51.2 51.9 54.6\n",
"\n",
"(44) Nile, Flow of the River Nile\n",
"[100,2] count mean std min 25% 50% 75% max\n",
" time 100 1920.5 29.011492 1871 1895.75 1920.5 1945.25 1970\n",
" value 100 919.35 169.227501 456 798.5 893.5 1032.5 1370\n",
"\n",
"(45) nottem, Average Monthly Temperatures at Nottingham, 1920-1939\n",
"[240,2] count mean std min 25% 50% 75% max\n",
" time 240 1929.958333 5.785518 1920.0 1924.979167 1929.958333 1934.9375 1939.91666666667\n",
" value 240 49.039583 8.572324 31.3 41.55 47.35 57.0 66.5\n",
"\n",
"(46) npk, Classical N, P, K Factorial Experiment\n",
"[24,5] count mean std min 25% 50% 75% max\n",
" block 24 3.5 1.744557 1.0 2.0 3.5 5.0 6.0\n",
" N 24 0.5 0.510754 0.0 0.0 0.5 1.0 1.0\n",
" P 24 0.5 0.510754 0.0 0.0 0.5 1.0 1.0\n",
" K 24 0.5 0.510754 0.0 0.0 0.5 1.0 1.0\n",
" yield 24 54.875 6.172749 44.2 49.725 55.65 58.625 69.5\n",
"\n",
"(47) occupationalStatus, Occupational Status of Fathers and their Sons\n",
" [64,3] count mean std min 25% 50% 75% max\n",
" origin 64 4.5 2.309401 1 2.75 4.5 6.25 8\n",
"destination 64 4.5 2.309401 1 2.75 4.5 6.25 8\n",
" Freq 64 54.65625 81.999462 0 12.0 25.5 65.25 554\n",
"\n",
"(48) Orange, Growth of Orange Trees\n",
" [35,3] count mean std min 25% 50% 75% max\n",
" Tree 35 3.0 1.43486 1 2.0 3.0 4.0 5\n",
" age 35 922.142857 491.864528 118 484.0 1004.0 1372.0 1582\n",
"circumference 35 115.857143 57.488179 30 65.5 115.0 161.5 214\n",
"\n",
"(49) OrchardSprays, Potency of Orchard Sprays\n",
" [64,3] count mean std min 25% 50% 75% max\n",
"decrease 64 45.421875 35.574561 2 12.75 41.0 72.0 130\n",
" rowpos 64 4.5 2.309401 1 2.75 4.5 6.25 8\n",
" colpos 64 4.5 2.309401 1 2.75 4.5 6.25 8\n",
"\n",
"(50) PlantGrowth, Results from an Experiment on Plant Growth\n",
"[30,1] count mean std min 25% 50% 75% max\n",
"weight 30 5.073 0.701192 3.59 4.55 5.155 5.53 6.31\n",
"\n",
"(51) precip, Annual Precipitation in US Cities\n",
"[70,1] count mean std min 25% 50% 75% max\n",
" dat 70 34.885714 13.70665 7.0 29.375 36.6 42.775 67.0\n",
"\n",
"(52) presidents, Quarterly Approval Ratings of US Presidents\n",
"[120,1] count mean std min 25% 50% 75% max\n",
" time 120 1959.875 8.696264 1945.0 1952.4375 1959.875 1967.3125 1974.75\n",
"\n",
"(53) pressure, Vapor Pressure of Mercury as a Function of Temperature\n",
" [19,2] count mean std min 25% 50% 75% max\n",
"temperature 19 180.0 112.546287 0.0 90.0 180.0 270.0 360.0\n",
" pressure 19 124.336705 224.62254 0.0002 0.18 8.8 126.5 806.0\n",
"\n",
"(54) Puromycin, Reaction Velocity of an Enzymatic Reaction\n",
"[23,2] count mean std min 25% 50% 75% max\n",
" conc 23 0.312174 0.36313 0.02 0.06 0.11 0.56 1.1\n",
" rate 23 126.826087 47.513302 47.0 91.5 124.0 158.5 207.0\n",
"\n",
"(55) quakes, Locations of Earthquakes off Fiji\n",
"[1000,5] count mean std min 25% 50% 75% max\n",
" lat 1000 -20.64275 5.028791 -38.59 -23.47 -20.3 -17.6375 -10.72\n",
" long 1000 179.46202 6.069497 165.67 179.62 181.41 183.2 188.13\n",
" depth 1000 311.371 215.535498 40.0 99.0 247.0 543.0 680.0\n",
" mag 1000 4.6204 0.402773 4.0 4.3 4.6 4.9 6.4\n",
"stations 1000 33.418 21.900386 10.0 18.0 27.0 42.0 132.0\n",
"\n",
"(56) randu, Random Numbers from Congruential Generator RANDU\n",
"[400,3] count mean std min 25% 50% 75% max\n",
" x 400 0.526429 0.285012 3.1e-05 0.300312 0.540788 0.778623 0.99985\n",
" y 400 0.486053 0.293718 0.000183 0.227744 0.483379 0.73992 0.999939\n",
" z 400 0.480955 0.279035 2.9e-05 0.25206 0.463328 0.71141 0.998243\n",
"\n",
"(57) rivers, Lengths of Major North American Rivers\n",
"[141,1] count mean std min 25% 50% 75% max\n",
" dat 141 591.184397 493.870842 135 310.0 425.0 680.0 3710\n",
"\n",
"(58) rock, Measurements on Petroleum Rock Samples\n",
"[48,4] count mean std min 25% 50% 75% max\n",
" area 48 7187.729167 2683.848862 1016.0 5305.25 7487.0 8869.5 12212.0\n",
" peri 48 2682.211938 1431.661164 308.642 1414.9075 2536.195 3989.5225 4864.22\n",
" shape 48 0.21811 0.083496 0.0903296 0.162262 0.198862 0.26267 0.464125\n",
" perm 48 415.45 437.818226 6.3 76.45 130.5 777.5 1300.0\n",
"\n",
"(59) Seatbelts, Road Casualties in Great Britain 1969-84\n",
" [192,8] count mean std min 25% 50% 75% max\n",
"DriversKilled 192 122.802083 25.379886 60.0 104.75 118.5 138.0 198.0\n",
" drivers 192 1670.307292 289.610958 1057.0 1461.75 1631.0 1850.75 2654.0\n",
" front 192 837.21875 175.098967 426.0 715.5 828.5 950.75 1299.0\n",
" rear 192 401.208333 83.10221 224.0 344.75 401.5 456.25 646.0\n",
" kms 192 14993.604167 2938.049207 7685.0 12685.0 14987.0 17202.5 21626.0\n",
" PetrolPrice 192 0.103624 0.012176 0.0811788933269884 0.092577 0.104477 0.114056 0.133027420877451\n",
" VanKilled 192 9.057292 3.636903 2.0 6.0 8.0 12.0 17.0\n",
" law 192 0.119792 0.325567 0.0 0.0 0.0 0.0 1.0\n",
"\n",
"(60) sleep, Student's Sleep Data\n",
"[20,3] count mean std min 25% 50% 75% max\n",
" extra 20 1.54 2.01792 -1.6 -0.025 0.95 3.4 5.5\n",
" group 20 1.5 0.512989 1.0 1.0 1.5 2.0 2.0\n",
" ID 20 5.5 2.946898 1.0 3.0 5.5 8.0 10.0\n",
"\n",
"(61) stackloss, Brownlee's Stack Loss Plant Data\n",
" [21,4] count mean std min 25% 50% 75% max\n",
" Air.Flow 21 60.428571 9.168268 50 56.0 58.0 62.0 80\n",
"Water.Temp 21 21.095238 3.160771 17 18.0 20.0 24.0 27\n",
"Acid.Conc. 21 86.285714 5.358571 72 82.0 87.0 89.0 93\n",
"stack.loss 21 17.52381 10.171623 7 11.0 15.0 19.0 42\n",
"\n",
"(62) sunspot.month, Monthly Sunspot Data, from 1749 to \"Present\"\n",
"[3177,2] count mean std min 25% 50% 75% max\n",
" time 3177 1881.333333 76.438769 1749.0 1815.166667 1881.333333 1947.5 2013.66666666667\n",
" value 3177 51.96481 44.125236 0.0 15.7 42.0 76.4 253.8\n",
"\n",
"(63) sunspot.year, Yearly Sunspot Data, 1700-1988\n",
"[289,2] count mean std min 25% 50% 75% max\n",
" time 289 1844.0 83.571327 1700.0 1772.0 1844.0 1916.0 1988.0\n",
" value 289 48.613495 39.474103 0.0 15.6 39.0 68.9 190.2\n",
"\n",
"(64) sunspots, Monthly Sunspot Numbers, 1749-1983\n",
"[2820,2] count mean std min 25% 50% 75% max\n",
" time 2820 1866.458333 67.850684 1749.0 1807.729167 1866.458333 1925.1875 1983.91666667\n",
" value 2820 51.265957 43.448971 0.0 15.7 42.0 74.925 253.8\n",
"\n",
"(65) swiss, Swiss Fertility and Socioeconomic Indicators (1888) Data\n",
" [47,6] count mean std min 25% 50% 75% max\n",
" Fertility 47 70.142553 12.491697 35.0 64.7 70.4 78.45 92.5\n",
" Agriculture 47 50.659574 22.711218 1.2 35.9 54.1 67.65 89.7\n",
" Examination 47 16.489362 7.977883 3.0 12.0 16.0 22.0 37.0\n",
" Education 47 10.978723 9.615407 1.0 6.0 8.0 12.0 53.0\n",
" Catholic 47 41.14383 41.70485 2.15 5.195 15.14 93.125 100.0\n",
"Infant.Mortality 47 19.942553 2.912697 10.8 18.15 20.0 21.7 26.6\n",
"\n",
"(66) Theoph, Pharmacokinetics of Theophylline\n",
"[132,5] count mean std min 25% 50% 75% max\n",
"Subject 132 6.5 3.465203 1.0 3.75 6.5 9.25 12.0\n",
" Wt 132 69.583333 9.133181 54.6 63.575 70.5 74.425 86.4\n",
" Dose 132 4.625833 0.718074 3.1 4.305 4.53 5.0375 5.86\n",
" Time 132 5.894621 6.925952 0.0 0.595 3.53 9.0 24.65\n",
" conc 132 4.960455 2.867319 0.0 2.8775 5.275 7.14 11.4\n",
"\n",
"(67) Titanic, Survival of passengers on the Titanic\n",
"[32,1] count mean std min 25% 50% 75% max\n",
" Freq 32 68.78125 135.995905 0 0.75 13.5 77.0 670\n",
"\n",
"(68) ToothGrowth, The Effect of Vitamin C on Tooth Growth in Guinea Pigs\n",
"[60,2] count mean std min 25% 50% 75% max\n",
" len 60 18.813333 7.649315 4.2 13.075 19.25 25.275 33.9\n",
" dose 60 1.166667 0.628872 0.5 0.5 1.0 2.0 2.0\n",
"\n",
"(69) treering, Yearly Treering Data, -6000-1979\n",
"[7980,2] count mean std min 25% 50% 75% max\n",
" time 7980 -2010.5 2303.771907 -6000.0 -4005.25 -2010.5 -15.75 1979.0\n",
" value 7980 0.996836 0.300358 0.0 0.837 1.034 1.197 1.908\n",
"\n",
"(70) trees, Diameter, Height and Volume for Black Cherry Trees\n",
"[31,3] count mean std min 25% 50% 75% max\n",
" Girth 31 13.248387 3.138139 8.3 11.05 12.9 15.25 20.6\n",
"Height 31 76.0 6.371813 63.0 72.0 76.0 80.0 87.0\n",
"Volume 31 30.170968 16.437846 10.2 19.4 24.2 37.3 77.0\n",
"\n",
"(71) UCBAdmissions, Student Admissions at UC Berkeley\n",
"[24,1] count mean std min 25% 50% 75% max\n",
" Freq 24 188.583333 140.063624 8 80.0 170.0 302.5 512\n",
"\n",
"(72) UKDriverDeaths, Road Casualties in Great Britain 1969-84\n",
"[192,2] count mean std min 25% 50% 75% max\n",
" time 192 1976.958333 4.630815 1969.0 1972.979167 1976.958333 1980.9375 1984.91666666667\n",
" value 192 1670.307292 289.610958 1057.0 1461.75 1631.0 1850.75 2654.0\n",
"\n",
"(73) UKgas, UK Quarterly Gas Consumption\n",
"[108,2] count mean std min 25% 50% 75% max\n",
" time 108 1973.375 7.83023 1960.0 1966.6875 1973.375 1980.0625 1986.75\n",
" value 108 337.630556 251.334776 84.8 153.3 220.9 469.9 1163.9\n",
"\n",
"(74) USAccDeaths, Accidental Deaths in the US 1973-1978\n",
"[72,2] count mean std min 25% 50% 75% max\n",
" time 72 1975.958333 1.744037 1973.0 1974.479167 1975.958333 1977.4375 1978.91666666667\n",
" value 72 8788.791667 957.752606 6892.0 8089.0 8728.5 9323.25 11317.0\n",
"\n",
"(75) USArrests, Violent Crime Rates by US State\n",
" [50,4] count mean std min 25% 50% 75% max\n",
" Murder 50 7.788 4.35551 0.8 4.075 7.25 11.25 17.4\n",
" Assault 50 170.76 83.337661 45.0 109.0 159.0 249.0 337.0\n",
"UrbanPop 50 65.54 14.474763 32.0 54.5 66.0 77.75 91.0\n",
" Rape 50 21.232 9.366385 7.3 15.075 20.1 26.175 46.0\n",
"\n",
"(76) USJudgeRatings, Lawyers' Ratings of State Judges in the US Superior Court\n",
"[43,12] count mean std min 25% 50% 75% max\n",
" CONT 43 7.437209 0.940877 5.7 6.85 7.3 7.9 10.6\n",
" INTG 43 8.02093 0.770145 5.9 7.55 8.1 8.55 9.2\n",
" DMNR 43 7.516279 1.143705 4.3 6.9 7.7 8.35 9.0\n",
" DILG 43 7.693023 0.900898 5.1 7.15 7.8 8.45 9.0\n",
" CFMG 43 7.47907 0.86011 5.4 7.0 7.6 8.05 8.7\n",
" DECI 43 7.565116 0.802936 5.7 7.1 7.7 8.15 8.8\n",
" PREP 43 7.467442 0.95337 4.8 6.9 7.7 8.2 9.1\n",
" FAMI 43 7.488372 0.948987 5.1 6.95 7.6 8.25 9.1\n",
" ORAL 43 7.293023 1.010044 4.7 6.85 7.5 8.0 8.9\n",
" WRIT 43 7.383721 0.961133 4.9 6.9 7.6 8.05 9.0\n",
" PHYS 43 7.934884 0.939575 4.7 7.7 8.1 8.5 9.1\n",
" RTEN 43 7.602326 1.100971 4.8 7.15 7.8 8.25 9.2\n",
"\n",
"(77) USPersonalExpenditure, Personal Expenditure Data\n",
"[5,5] count mean std min 25% 50% 75% max\n",
" 1940 5 7.5222 9.135526 0.341 1.04 3.53 10.5 22.2\n",
" 1945 5 13.7428 18.126113 0.974 1.98 5.76 15.5 44.5\n",
" 1950 5 20.512 24.459026 1.8 2.45 9.71 29.0 59.6\n",
" 1955 5 25.94 29.750597 2.6 3.4 14.0 36.5 73.2\n",
" 1960 5 32.628 34.761213 3.64 5.4 21.1 46.2 86.8\n",
"\n",
"(78) uspop, Populations Recorded by the US Census\n",
"[19,2] count mean std min 25% 50% 75% max\n",
" time 19 1880.0 56.273143 1790.0 1835.0 1880.0 1925.0 1970.0\n",
" value 19 69.769474 63.207036 3.93 15.0 50.2 114.25 203.2\n",
"\n",
"(79) VADeaths, Death Rates in Virginia (1940)\n",
" [5,4] count mean std min 25% 50% 75% max\n",
" Rural Male 5 32.74 21.596134 11.7 18.1 26.9 41.0 66.0\n",
"Rural Female 5 25.18 18.424223 8.7 11.7 20.3 30.9 54.3\n",
" Urban Male 5 40.48 22.582449 15.4 24.3 37.0 54.6 71.1\n",
"Urban Female 5 25.28 17.063323 8.4 13.6 19.3 35.1 50.0\n",
"\n",
"(80) volcano, Topographic Information on Auckland's Maunga Whau Volcano\n",
"[87,61] count mean std min 25% 50% 75% max\n",
" V1 87 110.586207 6.902227 97 106.5 111.0 115.0 124\n",
" V2 87 111.827586 7.565538 97 107.5 113.0 116.0 128\n",
" V3 87 112.954023 8.203669 97 108.0 114.0 117.0 131\n",
" V4 87 114.114943 8.735686 98 108.5 115.0 118.0 134\n",
" V5 87 115.126437 9.295916 98 109.0 116.0 119.0 136\n",
" ... ... ... ... ... ... ... ... ...\n",
" V57 87 107.367816 8.405584 94 101.5 108.0 111.0 124\n",
" V58 87 105.827586 6.844123 94 100.5 106.0 110.0 119\n",
" V59 87 104.632184 5.775077 94 100.0 106.0 108.0 116\n",
" V60 87 103.804598 5.209203 94 100.0 105.0 107.0 113\n",
" V61 87 103.16092 4.874885 94 100.0 104.0 107.0 110\n",
"\n",
"(81) warpbreaks, The Number of Breaks in Yarn during Weaving\n",
"[54,1] count mean std min 25% 50% 75% max\n",
"breaks 54 28.148148 13.198638 10 18.25 26.0 34.0 70\n",
"\n",
"(82) women, Average Heights and Weights for American Women\n",
"[15,2] count mean std min 25% 50% 75% max\n",
"height 15 65.0 4.472136 58 61.5 65.0 68.5 72\n",
"weight 15 136.733333 15.498694 115 124.5 135.0 148.0 164\n",
"\n",
"(83) WorldPhones, The World's Telephones\n",
" [7,7] count mean std min 25% 50% 75% max\n",
" N.Amer 7 66747.571429 11277.462508 45939 62572.0 68484.0 73917.5 79831\n",
" Europe 7 34343.428571 7195.616857 21574 31250.0 35218.0 38969.5 43173\n",
" Asia 7 6229.285714 2124.214578 2876 4969.0 6662.0 7538.0 9053\n",
" S.Amer 7 2772.285714 496.687599 1815 2631.5 2845.0 3072.5 3338\n",
" Oceania 7 2625.0 523.063094 1646 2446.0 2691.0 2961.0 3224\n",
" Africa 7 1484.0 647.706981 89 1478.5 1663.0 1837.0 2005\n",
"Mid.Amer 7 841.714286 176.124685 555 753.0 836.0 959.5 1076\n",
"\n",
"(84) WWWusage, Internet Usage per Minute\n",
"[100,2] count mean std min 25% 50% 75% max\n",
" time 100 50.5 29.011492 1 25.75 50.5 75.25 100\n",
" value 100 137.08 39.999414 83 99.0 138.5 167.5 228\n",
"\n"
]
}
],
"source": [
"dataset_list = Datasets::RdatasetsList.new\n",
"\n",
"package = 'datasets'\n",
"\n",
"dataset_list.filter(package: package).each.with_index(1) do |ds, i|\n",
" puts \"(#{i}) #{ds.dataset}, #{ds.title}\"\n",
" dataset = Datasets::Rdatasets.new(package, ds.dataset)\n",
" df = Rover::DataFrame.new(dataset.to_table.to_h)\n",
" puts df.summary\n",
" puts\n",
"end; nil"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ab2ec2f9-2d38-433e-97b9-3f848cb450f3",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "27886f8d-2006-4bd6-9605-f53a5ee43a00",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "a917886b-5b72-4b3b-b5d3-cd1f58629ddf",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Ruby 3.1.1",
"language": "ruby",
"name": "ruby"
},
"language_info": {
"file_extension": ".rb",
"mimetype": "application/x-ruby",
"name": "ruby",
"version": "3.1.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
module My
module RoverVectorPrepender
def mean
@data.cast_to(Numo::DFloat).mean(nan: true)
end
def median
@data.cast_to(Numo::DFloat).median(nan: true)
end
def std
@data.cast_to(Numo::DFloat).stddev(nan: true)
end
def var
@data.cast_to(Numo::DFloat).var(nan: true)
end
end
module RoverDataFramePrepender
# Show statistical summary of self
# - Returns DataFrame
# - Make stats for numeric columns only
# - 1st column header indicates [n of rows, n of numeric columns]
# - Int type columns are casted to Float64 in mean, std, var (by Vector)
# - NaNs are ignored using (nan: true) option in Numo
# - counts also show non-NaN counts
def summary
num_keys = self.keys.select {|key| self[key].numeric?}
nrow, _ = self.shape
key0 = :"[#{nrow},#{num_keys.size}]"
round = 6
hash = {key0 => num_keys}
hash["count"] = num_keys.map {|k| self[k].missing.to_numo.count_false }
hash["mean"] = num_keys.map {|k| self[k].mean.round(round) }
hash["std"] = num_keys.map {|k| self[k].std.round(round) }
hash["min"] = num_keys.map {|k| self[k].min }
hash["25%"] = num_keys.map {|k| self[k].percentile(25).round(round) }
hash["50%"] = num_keys.map {|k| self[k].percentile(50).round(round) }
hash["75%"] = num_keys.map {|k| self[k].percentile(75).round(round) }
hash["max"] = num_keys.map {|k| self[k].max }
Rover::DataFrame.new(hash)
end
# This method may be abandoned
# - My first implementation
# - Counts sould be Int but casted to Float
def summary_T
num_keys = self.keys.select {|key| self[key].numeric?}
# use key of 1st column to show n_rows and n_of_numeric_columns
nrow, _ = self.shape
key0 = :"[#{nrow},#{num_keys.size}]"
round = 6
ary = [] <<
num_keys.each_with_object({key0 => "count"}) {|k, h| h[k] = self[k].missing.to_numo.count_false } <<
num_keys.each_with_object({key0 => "mean"}) {|k, h| h[k] = self[k].mean.round(round) } <<
num_keys.each_with_object({key0 => "std"}) {|k, h| h[k] = self[k].std.round(round) } <<
num_keys.each_with_object({key0 => "min"}) {|k, h| h[k] = self[k].min } <<
num_keys.each_with_object({key0 => "25%"}) {|k, h| h[k] = self[k].percentile(25).round(round) } <<
num_keys.each_with_object({key0 => "50%"}) {|k, h| h[k] = self[k].percentile(50).round(round) } <<
num_keys.each_with_object({key0 => "75%"}) {|k, h| h[k] = self[k].percentile(75).round(round) } <<
num_keys.each_with_object({key0 => "max"}) {|k, h| h[k] = self[k].max }
Rover::DataFrame.new(ary)
end
end
end
Rover::Vector.prepend My::RoverVectorPrepender
Rover::DataFrame.prepend My::RoverDataFramePrepender
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment