Last active
October 21, 2023 14:17
-
-
Save ileasile/a0b52c0df65bb401078cd845387dd6f0 to your computer and use it in GitHub Desktop.
github_dataframe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 40 kotlin-dataframe puzzles\n", | |
"inspired by [100 pandas puzzles](https://github.com/ajcr/100-pandas-puzzles)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Importing kotlin-dataframe\n", | |
"### Getting started\n", | |
"Difficulty: easy\n", | |
"\n", | |
"**1.** Import kotlin-dataframe" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
" <div id=\"kotlin_out_0\"></div>\n", | |
" <script type=\"text/javascript\">\n", | |
" if(!window.kotlinQueues) {\n", | |
" window.kotlinQueues = {};\n", | |
" }\n", | |
" if(!window.kotlinQueues[\"DataFrame\"]) {\n", | |
" var resQueue = [];\n", | |
" window.kotlinQueues[\"DataFrame\"] = resQueue;\n", | |
" window[\"call_DataFrame\"] = function(f) {\n", | |
" resQueue.push(f);\n", | |
" }\n", | |
" }\n", | |
" (function (){\n", | |
" var modifiers = [(function(script) {\n", | |
" script.src = \"https://cdn.jsdelivr.net/gh/Kotlin/dataframe@3db46ccccaa1291c0627307d64133317f545e6ae/core/src/main/resources/init.js\"\n", | |
" script.type = \"text/javascript\";\n", | |
"})];\n", | |
" var e = document.getElementById(\"kotlin_out_0\");\n", | |
" modifiers.forEach(function (gen) {\n", | |
" var script = document.createElement(\"script\");\n", | |
" gen(script)\n", | |
" script.addEventListener(\"load\", function() {\n", | |
" window[\"call_DataFrame\"] = function(f) {f();};\n", | |
" window.kotlinQueues[\"DataFrame\"].forEach(function(f) {f();});\n", | |
" window.kotlinQueues[\"DataFrame\"] = [];\n", | |
" }, false);\n", | |
" script.addEventListener(\"error\", function() {\n", | |
" window[\"call_DataFrame\"] = function(f) {};\n", | |
" window.kotlinQueues[\"DataFrame\"] = [];\n", | |
" var div = document.createElement(\"div\");\n", | |
" div.style.color = 'darkred';\n", | |
" div.textContent = 'Error loading resource DataFrame';\n", | |
" document.getElementById(\"kotlin_out_0\").appendChild(div);\n", | |
" }, false);\n", | |
" \n", | |
" e.appendChild(script);\n", | |
" });\n", | |
" })();\n", | |
" </script>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
" <style>\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
" </style>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%use dataframe(0.13.0-dev)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## DataFrame Basics\n", | |
"### A few of the fundamental routines for selecting, sorting, adding and aggregating data in DataFrames\n", | |
"Difficulty: easy\n", | |
"\n", | |
"Consider the following columns:\n", | |
"```[kotlin]\n", | |
"val animal by column(\"cat\", \"cat\", \"snake\", \"dog\", \"dog\", \"cat\", \"snake\", \"cat\", \"dog\", \"dog\")\n", | |
"val age by column(2.5, 3.0, 0.5, Double.NaN, 5.0, 2.0, 4.5, Double.NaN, 7, 3)\n", | |
"val visits by column(1, 3, 2, 3, 2, 3, 1, 1, 2, 1)\n", | |
"val priority by column(\"yes\", \"yes\", \"no\", \"yes\", \"no\", \"no\", \"no\", \"yes\", \"no\", \"no\")\n", | |
"```\n", | |
"**2.** Create a DataFrame df from this columns." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":5.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"},{\"animal\":\"snake\",\"age\":4.5,\"visits\":1,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":7.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":3.0,\"visits\":1,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420288\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420287\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>no</td></tr><tr><td>dog</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>dog</td><td>5.000000</td><td>2</td><td>no</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr><tr><td>snake</td><td>4.500000</td><td>1</td><td>no</td></tr><tr><td>cat</td><td>NaN</td><td>1</td><td>yes</td></tr><tr><td>dog</td><td>7.000000</td><td>2</td><td>no</td></tr><tr><td>dog</td><td>3.000000</td><td>1</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\",\"dog\",\"dog\",\"cat\",\"snake\",\"cat\",\"dog\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\",\"yes\",\"no\",\"no\",\"no\",\"yes\",\"no\",\"no\"] }, \n", | |
"], id: -721420288, rootId: -721420288, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420288) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420287\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val animal by columnOf(\"cat\", \"cat\", \"snake\", \"dog\", \"dog\", \"cat\", \"snake\", \"cat\", \"dog\", \"dog\")\n", | |
"val age by columnOf(2.5, 3.0, 0.5, Double.NaN, 5.0, 2.0, 4.5, Double.NaN, 7.0, 3.0)\n", | |
"val visits by columnOf(1, 3, 2, 3, 2, 3, 1, 1, 2, 1)\n", | |
"val priority by columnOf(\"yes\", \"yes\", \"no\", \"yes\", \"no\", \"no\", \"no\", \"yes\", \"no\", \"no\")\n", | |
"\n", | |
"var df = dataFrameOf(animal, age, visits, priority)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"val df1 = df.filter { it.age > 0 && it.visits == 2 }.add(\"xyz\") { it.age * 2 }" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":1,\"columns\":[\"xyz\"],\"kotlin_dataframe\":[{\"xyz\":1.0},{\"xyz\":10.0},{\"xyz\":14.0}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420286\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420285\"><thead><tr><th>xyz</th></tr></thead><tbody><tr><td>1.000000</td></tr><tr><td>10.000000</td></tr><tr><td>14.000000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataColumn: name = \"xyz\", type = Double, size = 3</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"xyz: Double\\\">xyz</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">14.0</span></span>\"] }, \n", | |
"], id: -721420286, rootId: -721420286, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420286) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420285\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df1.xyz" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**3.** Display a summary of the basic information about this DataFrame and its data." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"animal: String\n", | |
"age: Double\n", | |
"visits: Int\n", | |
"priority: String" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.schema()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":4,\"ncol\":12,\"columns\":[\"name\",\"type\",\"count\",\"unique\",\"nulls\",\"top\",\"freq\",\"mean\",\"std\",\"min\",\"median\",\"max\"],\"kotlin_dataframe\":[{\"name\":\"animal\",\"type\":\"String\",\"count\":10,\"unique\":3,\"nulls\":0,\"top\":\"cat\",\"freq\":4,\"mean\":null,\"std\":null,\"min\":\"cat\",\"median\":\"dog\",\"max\":\"snake\"},{\"name\":\"age\",\"type\":\"Double\",\"count\":10,\"unique\":8,\"nulls\":0,\"top\":\"3.0\",\"freq\":2,\"mean\":\"NaN\",\"std\":\"NaN\",\"min\":\"0.5\",\"median\":\"3.75\",\"max\":\"NaN\"},{\"name\":\"visits\",\"type\":\"Int\",\"count\":10,\"unique\":3,\"nulls\":0,\"top\":\"1\",\"freq\":4,\"mean\":1.9,\"std\":0.8755950357709131,\"min\":\"1\",\"median\":\"2\",\"max\":\"3\"},{\"name\":\"priority\",\"type\":\"String\",\"count\":10,\"unique\":2,\"nulls\":0,\"top\":\"no\",\"freq\":6,\"mean\":null,\"std\":null,\"min\":\"no\",\"median\":\"no\",\"max\":\"yes\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420284\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420283\"><thead><tr><th>name</th><th>type</th><th>count</th><th>unique</th><th>nulls</th><th>top</th><th>freq</th><th>mean</th><th>std</th><th>min</th><th>median</th><th>max</th></tr></thead><tbody><tr><td>animal</td><td>String</td><td>10</td><td>3</td><td>0</td><td>cat</td><td>4</td><td>null</td><td>null</td><td>cat</td><td>dog</td><td>snake</td></tr><tr><td>age</td><td>Double</td><td>10</td><td>8</td><td>0</td><td>3.000000</td><td>2</td><td>NaN</td><td>NaN</td><td>0.500000</td><td>3.750000</td><td>NaN</td></tr><tr><td>visits</td><td>Int</td><td>10</td><td>3</td><td>0</td><td>1</td><td>4</td><td>1.900000</td><td>0.875595</td><td>1</td><td>2</td><td>3</td></tr><tr><td>priority</td><td>String</td><td>10</td><td>2</td><td>0</td><td>no</td><td>6</td><td>null</td><td>null</td><td>no</td><td>no</td><td>yes</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 4, columnsCount = 12</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"name: String\\\">name</span>\", children: [], rightAlign: false, values: [\"animal\",\"age\",\"visits\",\"priority\"] }, \n", | |
"{ name: \"<span title=\\\"type: Any\\\">type</span>\", children: [], rightAlign: false, values: [\"String\",\"Double\",\"Int\",\"String\"] }, \n", | |
"{ name: \"<span title=\\\"count: Int\\\">count</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"unique: Int\\\">unique</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">8</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"nulls: Int\\\">nulls</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"top: Comparable<*>\\\">top</span>\", children: [], rightAlign: false, values: [\"cat\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"no\"] }, \n", | |
"{ name: \"<span title=\\\"freq: Int\\\">freq</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"mean: Double?\\\">mean</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1.9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"std: Double?\\\">std</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.875595</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"min: Comparable<*>\\\">min</span>\", children: [], rightAlign: false, values: [\"cat\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"no\"] }, \n", | |
"{ name: \"<span title=\\\"median: Comparable<*>\\\">median</span>\", children: [], rightAlign: false, values: [\"dog\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.8</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"no\"] }, \n", | |
"{ name: \"<span title=\\\"max: Comparable<*>\\\">max</span>\", children: [], rightAlign: false, values: [\"snake\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"yes\"] }, \n", | |
"], id: -721420284, rootId: -721420284, totalRows: 4 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420284) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420283\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.describe()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**4.** Return the first 3 rows of the DataFrame df." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420282\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420281\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\"] }, \n", | |
"], id: -721420282, rootId: -721420282, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420282) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420281\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[0 until 3] // df[0..2]\n", | |
"\n", | |
"// or equivalently\n", | |
"\n", | |
"df.head(3)\n", | |
"\n", | |
"// or\n", | |
"\n", | |
"df.take(3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**5.** Select \"animal\" and \"age\" columns from the DataFrame df." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":2,\"columns\":[\"animal\",\"age\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5},{\"animal\":\"cat\",\"age\":3.0},{\"animal\":\"snake\",\"age\":0.5},{\"animal\":\"dog\",\"age\":\"NaN\"},{\"animal\":\"dog\",\"age\":5.0},{\"animal\":\"cat\",\"age\":2.0},{\"animal\":\"snake\",\"age\":4.5},{\"animal\":\"cat\",\"age\":\"NaN\"},{\"animal\":\"dog\",\"age\":7.0},{\"animal\":\"dog\",\"age\":3.0}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420280\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420279\"><thead><tr><th>animal</th><th>age</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td></tr><tr><td>cat</td><td>3.000000</td></tr><tr><td>snake</td><td>0.500000</td></tr><tr><td>dog</td><td>NaN</td></tr><tr><td>dog</td><td>5.000000</td></tr><tr><td>cat</td><td>2.000000</td></tr><tr><td>snake</td><td>4.500000</td></tr><tr><td>cat</td><td>NaN</td></tr><tr><td>dog</td><td>7.000000</td></tr><tr><td>dog</td><td>3.000000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\",\"dog\",\"dog\",\"cat\",\"snake\",\"cat\",\"dog\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"], id: -721420280, rootId: -721420280, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420280) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420279\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[animal, age]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**6.** Select the data in rows [3, 4, 8] and in columns [\"animal\", \"age\"]." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":2,\"columns\":[\"animal\",\"age\"],\"kotlin_dataframe\":[{\"animal\":\"dog\",\"age\":\"NaN\"},{\"animal\":\"dog\",\"age\":5.0},{\"animal\":\"dog\",\"age\":7.0}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420278\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420277\"><thead><tr><th>animal</th><th>age</th></tr></thead><tbody><tr><td>dog</td><td>NaN</td></tr><tr><td>dog</td><td>5.000000</td></tr><tr><td>dog</td><td>7.000000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"dog\",\"dog\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\"] }, \n", | |
"], id: -721420278, rootId: -721420278, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420278) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420277\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df[3, 4, 8][animal, age]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**7.** Select only the rows where the number of visits is grater than 2." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420276\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420275\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>dog</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"dog\",\"cat\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\"] }, \n", | |
"], id: -721420276, rootId: -721420276, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420276) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420275\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { visits > 2 }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**8.** Select the rows where the age is missing, i.e. it is NaN." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":2,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":\"yes\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420274\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420273\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>dog</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>cat</td><td>NaN</td><td>1</td><td>yes</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 2, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"dog\",\"cat\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\"] }, \n", | |
"], id: -721420274, rootId: -721420274, totalRows: 2 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420274) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420273\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { age.isNaN() }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**9.** Select the rows where the animal is a cat and the age is less than 3." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":2,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420272\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420271\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 2, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"no\"] }, \n", | |
"], id: -721420272, rootId: -721420272, totalRows: 2 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420272) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420271\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { animal == \"cat\" && age < 3 }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**10.** Select the rows where age is between 2 and 4 (inclusive)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":4,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":3.0,\"visits\":1,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420270\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420269\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr><tr><td>dog</td><td>3.000000</td><td>1</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 4, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"cat\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\",\"no\"] }, \n", | |
"], id: -721420270, rootId: -721420270, totalRows: 4 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420270) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420269\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { age in 2.0..4.0 }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**11.** Change tha age in row 5 to 1.5" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_20.jupyter.kts (1:25 - 34) Using 'withValue(C): DataFrame<T>' is an error. Replaced in favor of `with { value }`. Will be removed in 0.13.0." | |
] | |
} | |
], | |
"source": [ | |
"df.update { age }.at(5).withValue(1.5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**12.** Calculate the sum of all visits in df (i.e. the total number of visits)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"19" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.visits.sum()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**13.** Calculate the mean age for each different animal in df." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":2,\"columns\":[\"animal\",\"age\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":\"NaN\"},{\"animal\":\"snake\",\"age\":2.5},{\"animal\":\"dog\",\"age\":\"NaN\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420268\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420267\"><thead><tr><th>animal</th><th>age</th></tr></thead><tbody><tr><td>cat</td><td>NaN</td></tr><tr><td>snake</td><td>2.500000</td></tr><tr><td>dog</td><td>NaN</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"snake\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"], id: -721420268, rootId: -721420268, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420268) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420267\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.groupBy { animal }.mean { age }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**14.** Append a new row to df with your choice of values for each column. Then delete that row to return the original DataFrame." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":5.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"},{\"animal\":\"snake\",\"age\":4.5,\"visits\":1,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":7.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":3.0,\"visits\":1,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420266\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420265\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>no</td></tr><tr><td>dog</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>dog</td><td>5.000000</td><td>2</td><td>no</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr><tr><td>snake</td><td>4.500000</td><td>1</td><td>no</td></tr><tr><td>cat</td><td>NaN</td><td>1</td><td>yes</td></tr><tr><td>dog</td><td>7.000000</td><td>2</td><td>no</td></tr><tr><td>dog</td><td>3.000000</td><td>1</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\",\"dog\",\"dog\",\"cat\",\"snake\",\"cat\",\"dog\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\",\"yes\",\"no\",\"no\",\"no\",\"yes\",\"no\",\"no\"] }, \n", | |
"], id: -721420266, rootId: -721420266, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420266) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420265\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val modifiedDf = df.append(\"dog\", 5.5, 2, \"no\")\n", | |
"modifiedDf.dropLast()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**15.** Count the number of each type of animal in df." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":2,\"columns\":[\"animal\",\"count\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"count\":4},{\"animal\":\"snake\",\"count\":2},{\"animal\":\"dog\",\"count\":4}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420264\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420263\"><thead><tr><th>animal</th><th>count</th></tr></thead><tbody><tr><td>cat</td><td>4</td></tr><tr><td>snake</td><td>2</td></tr><tr><td>dog</td><td>4</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"snake\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"count: Int\\\">count</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\"] }, \n", | |
"], id: -721420264, rootId: -721420264, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420264) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420263\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.groupBy { animal }.count()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**16.** Sort df first by the values in the 'age' in decending order, then by the value in the 'visits' column in ascending order." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"dog\",\"age\":7.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":5.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"snake\",\"age\":4.5,\"visits\":1,\"priority\":\"no\"},{\"animal\":\"dog\",\"age\":3.0,\"visits\":1,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420262\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420261\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>NaN</td><td>1</td><td>yes</td></tr><tr><td>dog</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>dog</td><td>7.000000</td><td>2</td><td>no</td></tr><tr><td>dog</td><td>5.000000</td><td>2</td><td>no</td></tr><tr><td>snake</td><td>4.500000</td><td>1</td><td>no</td></tr><tr><td>dog</td><td>3.000000</td><td>1</td><td>no</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"dog\",\"dog\",\"dog\",\"snake\",\"dog\",\"cat\",\"cat\",\"cat\",\"snake\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\",\"no\",\"no\",\"no\",\"yes\",\"yes\",\"no\",\"no\"] }, \n", | |
"], id: -721420262, rootId: -721420262, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420262) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420261\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.sortBy { age.desc() and visits }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**17.** The 'priority' column contains the values 'yes' and 'no'. Replace this column with a column of boolean values: 'yes' should be True and 'no' should be False." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":true},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":true},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":false},{\"animal\":\"dog\",\"age\":\"NaN\",\"visits\":3,\"priority\":true},{\"animal\":\"dog\",\"age\":5.0,\"visits\":2,\"priority\":false},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":false},{\"animal\":\"snake\",\"age\":4.5,\"visits\":1,\"priority\":false},{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":true},{\"animal\":\"dog\",\"age\":7.0,\"visits\":2,\"priority\":false},{\"animal\":\"dog\",\"age\":3.0,\"visits\":1,\"priority\":false}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420260\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420259\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>true</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>true</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>false</td></tr><tr><td>dog</td><td>NaN</td><td>3</td><td>true</td></tr><tr><td>dog</td><td>5.000000</td><td>2</td><td>false</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>false</td></tr><tr><td>snake</td><td>4.500000</td><td>1</td><td>false</td></tr><tr><td>cat</td><td>NaN</td><td>1</td><td>true</td></tr><tr><td>dog</td><td>7.000000</td><td>2</td><td>false</td></tr><tr><td>dog</td><td>3.000000</td><td>1</td><td>false</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\",\"dog\",\"dog\",\"cat\",\"snake\",\"cat\",\"dog\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: Boolean\\\">priority</span>\", children: [], rightAlign: false, values: [\"true\",\"true\",\"false\",\"true\",\"false\",\"false\",\"false\",\"true\",\"false\",\"false\"] }, \n", | |
"], id: -721420260, rootId: -721420260, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420260) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420259\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 20, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.convert { priority }.with { it == \"yes\" }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**18.** In the 'animal' column, change the 'dog' entries to 'corgi'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":4,\"columns\":[\"animal\",\"age\",\"visits\",\"priority\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"age\":2.5,\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"cat\",\"age\":3.0,\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"snake\",\"age\":0.5,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"corgi\",\"age\":\"NaN\",\"visits\":3,\"priority\":\"yes\"},{\"animal\":\"corgi\",\"age\":5.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":2.0,\"visits\":3,\"priority\":\"no\"},{\"animal\":\"snake\",\"age\":4.5,\"visits\":1,\"priority\":\"no\"},{\"animal\":\"cat\",\"age\":\"NaN\",\"visits\":1,\"priority\":\"yes\"},{\"animal\":\"corgi\",\"age\":7.0,\"visits\":2,\"priority\":\"no\"},{\"animal\":\"corgi\",\"age\":3.0,\"visits\":1,\"priority\":\"no\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420258\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420257\"><thead><tr><th>animal</th><th>age</th><th>visits</th><th>priority</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>1</td><td>yes</td></tr><tr><td>cat</td><td>3.000000</td><td>3</td><td>yes</td></tr><tr><td>snake</td><td>0.500000</td><td>2</td><td>no</td></tr><tr><td>corgi</td><td>NaN</td><td>3</td><td>yes</td></tr><tr><td>corgi</td><td>5.000000</td><td>2</td><td>no</td></tr><tr><td>cat</td><td>2.000000</td><td>3</td><td>no</td></tr><tr><td>snake</td><td>4.500000</td><td>1</td><td>no</td></tr><tr><td>cat</td><td>NaN</td><td>1</td><td>yes</td></tr><tr><td>corgi</td><td>7.000000</td><td>2</td><td>no</td></tr><tr><td>corgi</td><td>3.000000</td><td>1</td><td>no</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"cat\",\"snake\",\"corgi\",\"corgi\",\"cat\",\"snake\",\"cat\",\"corgi\",\"corgi\"] }, \n", | |
"{ name: \"<span title=\\\"age: Double\\\">age</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"visits: Int\\\">visits</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"priority: String\\\">priority</span>\", children: [], rightAlign: false, values: [\"yes\",\"yes\",\"no\",\"yes\",\"no\",\"no\",\"no\",\"yes\",\"no\",\"no\"] }, \n", | |
"], id: -721420258, rootId: -721420258, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420258) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420257\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.update { animal }.where { it == \"dog\" }.with { \"corgi\" }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**19.** For each animal type and each number of visits, find the mean age. In other words, each row is an animal, each column is a number of visits and the values are the mean ages (hint: use a pivot table)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":4,\"columns\":[\"animal\",\"1\",\"3\",\"2\"],\"kotlin_dataframe\":[{\"animal\":\"cat\",\"1\":2.5,\"3\":2.5,\"2\":null},{\"animal\":\"snake\",\"1\":4.5,\"3\":null,\"2\":0.5},{\"animal\":\"dog\",\"1\":3.0,\"3\":\"NaN\",\"2\":6.0}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420256\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420255\"><thead><tr><th>animal</th><th>1</th><th>3</th><th>2</th></tr></thead><tbody><tr><td>cat</td><td>2.500000</td><td>2.500000</td><td>null</td></tr><tr><td>snake</td><td>4.500000</td><td>null</td><td>0.500000</td></tr><tr><td>dog</td><td>3.000000</td><td>NaN</td><td>6.000000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"animal: String\\\">animal</span>\", children: [], rightAlign: false, values: [\"cat\",\"snake\",\"dog\"] }, \n", | |
"{ name: \"<span title=\\\"1: Double\\\">1</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"3: Double?\\\">3</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"2: Double?\\\">2</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">null</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6.0</span></span>\"] }, \n", | |
"], id: -721420256, rootId: -721420256, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420256) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420255\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 22, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.pivot(inward = false) { visits }.groupBy { animal }.mean(skipNA = true) { age }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## DataFrame: beyond the basics\n", | |
"### Slightly trickier: you may need to combine two or more methods to get the right answer\n", | |
"Difficulty: medium\n", | |
"\n", | |
"The previous section was tour through some basic but essential DataFrame operations. Below are some ways that you might need to cut your data, but for which there is no single \"out of the box\" method." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**20.** You have a DataFrame df with a column 'A' of integers. For example:\n", | |
"```kotlin\n", | |
"val df = dataFrameOf(\"A\")(1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7)\n", | |
"```\n", | |
"How do you filter out rows which contain the same integer as the row immediately above?\n", | |
"\n", | |
"You should be left with a column containing the following values:\n", | |
"```\n", | |
"1, 2, 3, 4, 5, 6, 7\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":11,\"ncol\":1,\"columns\":[\"A\"],\"kotlin_dataframe\":[{\"A\":1},{\"A\":2},{\"A\":2},{\"A\":3},{\"A\":4},{\"A\":5},{\"A\":5},{\"A\":5},{\"A\":6},{\"A\":7},{\"A\":7}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420254\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420253\"><thead><tr><th>A</th></tr></thead><tbody><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>5</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr><tr><td>7</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 11, columnsCount = 1</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"A: Int\\\">A</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\"] }, \n", | |
"], id: -721420254, rootId: -721420254, totalRows: 11 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420254) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420253\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 23, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val df = dataFrameOf(\"A\")(1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":7,\"ncol\":1,\"columns\":[\"A\"],\"kotlin_dataframe\":[{\"A\":1},{\"A\":2},{\"A\":3},{\"A\":4},{\"A\":5},{\"A\":6},{\"A\":7}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420252\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420251\"><thead><tr><th>A</th></tr></thead><tbody><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 7, columnsCount = 1</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"A: Int\\\">A</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\"] }, \n", | |
"], id: -721420252, rootId: -721420252, totalRows: 7 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420252) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420251\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 24, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { prev()?.A != A }" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_33.jupyter.kts (1:13 - 17) Using 'diff(RowExpression<T, Int> /* = DataRow<T>.(it: DataRow<T>) -> Int */): Int?' is an error. Replaced to explicitly indicate nullable return value; added a new non-null overload. Will be removed in 0.13.0." | |
] | |
} | |
], | |
"source": [ | |
"df.filter { diff { A } != 0 }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We could use `distinct()` here but it won't work as desired if A is [1, 1, 2, 2, 1, 1] for example." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":7,\"ncol\":1,\"columns\":[\"A\"],\"kotlin_dataframe\":[{\"A\":1},{\"A\":2},{\"A\":3},{\"A\":4},{\"A\":5},{\"A\":6},{\"A\":7}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420250\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420249\"><thead><tr><th>A</th></tr></thead><tbody><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>5</td></tr><tr><td>6</td></tr><tr><td>7</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 7, columnsCount = 1</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"A: Int\\\">A</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\"] }, \n", | |
"], id: -721420250, rootId: -721420250, totalRows: 7 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420250) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420249\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 26, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.distinct()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**21.** Given a DataFrame of random numetic values:\n", | |
"```kotlin\n", | |
"val df = dataFrameOf(\"a\", \"b\", \"c\").randomDouble(5) // this is a 5x3 DataFrame of double values\n", | |
"```\n", | |
"\n", | |
"how do you subtract the row mean from each element in the row?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":3,\"columns\":[\"a\",\"b\",\"c\"],\"kotlin_dataframe\":[{\"a\":0.8171689910806472,\"b\":0.4714849194065086,\"c\":0.8664075263853748},{\"a\":0.9633775275766739,\"b\":0.4439972594447551,\"c\":0.36019522800908554},{\"a\":0.8184573174606876,\"b\":0.5908626299421427,\"c\":0.6144277131529076},{\"a\":0.17165989354475153,\"b\":0.29192496041731886,\"c\":0.19806554903102092},{\"a\":0.04471860912559833,\"b\":0.4184324005942671,\"c\":0.054163844546154194}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420248\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420247\"><thead><tr><th>a</th><th>b</th><th>c</th></tr></thead><tbody><tr><td>0.817169</td><td>0.471485</td><td>0.866408</td></tr><tr><td>0.963378</td><td>0.443997</td><td>0.360195</td></tr><tr><td>0.818457</td><td>0.590863</td><td>0.614428</td></tr><tr><td>0.171660</td><td>0.291925</td><td>0.198066</td></tr><tr><td>0.044719</td><td>0.418432</td><td>0.054164</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 3</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"a: Double\\\">a</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.817169</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.963378</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.818457</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.171660</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.044719</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"b: Double\\\">b</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.471485</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.443997</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.590863</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.291925</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.418432</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"c: Double\\\">c</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.866408</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.360195</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.614428</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.198066</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.054164</span></span>\"] }, \n", | |
"], id: -721420248, rootId: -721420248, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420248) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420247\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 27, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val df = dataFrameOf(\"a\", \"b\", \"c\").randomDouble(5)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":3,\"columns\":[\"a\",\"b\",\"c\"],\"kotlin_dataframe\":[{\"a\":0.09881517878980361,\"b\":-0.246868892884335,\"c\":0.14805371409453116},{\"a\":0.37418752256650234,\"b\":-0.1451927455654165,\"c\":-0.22899477700108606},{\"a\":0.1438747639421083,\"b\":-0.08371992357643665,\"c\":-0.06015484036567176},{\"a\":-0.048890240786278905,\"b\":0.07137482608628842,\"c\":-0.02248458530000952},{\"a\":-0.12771967562974154,\"b\":0.24599411583892725,\"c\":-0.11827444020918568}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420246\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420245\"><thead><tr><th>a</th><th>b</th><th>c</th></tr></thead><tbody><tr><td>0.098815</td><td>-0.246869</td><td>0.148054</td></tr><tr><td>0.374188</td><td>-0.145193</td><td>-0.228995</td></tr><tr><td>0.143875</td><td>-0.083720</td><td>-0.060155</td></tr><tr><td>-0.048890</td><td>0.071375</td><td>-0.022485</td></tr><tr><td>-0.127720</td><td>0.245994</td><td>-0.118274</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 3</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"a: Double\\\">a</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.098815</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.374188</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.143875</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.048890</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.127720</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"b: Double\\\">b</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.246869</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.145193</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.083720</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.071375</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.245994</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"c: Double\\\">c</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.148054</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.228995</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.060155</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.022485</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-0.118274</span></span>\"] }, \n", | |
"], id: -721420246, rootId: -721420246, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420246) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420245\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.update { colsOf<Double>() }\n", | |
" .with { it - rowMean() }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**22.** Suppose you have DataFrame with 10 columns of real numbers, for example:\n", | |
"```kotlin\n", | |
"val names = ('a'..'j').map { it.toString() }\n", | |
"val df = dataFrameOf(names).randomDouble(5)\n", | |
"```\n", | |
"\n", | |
"Which column of number has the smallest sum? Return that column's label." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":10,\"columns\":[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\"],\"kotlin_dataframe\":[{\"a\":0.8407087196154294,\"b\":0.3790330178054705,\"c\":0.477114880649399,\"d\":0.1499141245447161,\"e\":0.17936603588384237,\"f\":0.7923876025081584,\"g\":0.025030439749053057,\"h\":0.9307028554065956,\"i\":0.018218218971698397,\"j\":0.8938509528664251},{\"a\":0.18575975886017237,\"b\":0.9910280788931969,\"c\":0.6248637457915516,\"d\":0.00592492477606521,\"e\":0.6682366936376537,\"f\":0.6608868371125171,\"g\":0.21113478964759758,\"h\":0.7485337375084319,\"i\":0.647558753536968,\"j\":0.7862916790610925},{\"a\":0.21314032798060445,\"b\":0.08617693242661184,\"c\":0.13456873605680642,\"d\":0.835962388003577,\"e\":0.007116663334354456,\"f\":0.6627840769557837,\"g\":0.1663763401242394,\"h\":0.5034248801138117,\"i\":0.6976531564434139,\"j\":0.9091576990364647},{\"a\":0.6202158081579895,\"b\":0.19211979065219664,\"c\":0.24786893938614107,\"d\":0.5370384821747691,\"e\":0.7927683320301318,\"f\":0.15189961040292,\"g\":0.6958829348702343,\"h\":0.8494420927675825,\"i\":0.7863269893388269,\"j\":0.24618597549299714},{\"a\":0.62428433616325,\"b\":0.7606117799629312,\"c\":0.8810076750328809,\"d\":0.5140851489833934,\"e\":0.4555580796583696,\"f\":0.3325862067389924,\"g\":0.644833347615384,\"h\":0.9316928377180133,\"i\":0.7253759504384429,\"j\":0.8464323517041374}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420244\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420243\"><thead><tr><th>a</th><th>b</th><th>c</th><th>d</th><th>e</th><th>f</th><th>g</th><th>h</th><th>i</th><th>j</th></tr></thead><tbody><tr><td>0.840709</td><td>0.379033</td><td>0.477115</td><td>0.149914</td><td>0.179366</td><td>0.792388</td><td>0.025030</td><td>0.930703</td><td>0.018218</td><td>0.893851</td></tr><tr><td>0.185760</td><td>0.991028</td><td>0.624864</td><td>0.005925</td><td>0.668237</td><td>0.660887</td><td>0.211135</td><td>0.748534</td><td>0.647559</td><td>0.786292</td></tr><tr><td>0.213140</td><td>0.086177</td><td>0.134569</td><td>0.835962</td><td>0.007117</td><td>0.662784</td><td>0.166376</td><td>0.503425</td><td>0.697653</td><td>0.909158</td></tr><tr><td>0.620216</td><td>0.192120</td><td>0.247869</td><td>0.537038</td><td>0.792768</td><td>0.151900</td><td>0.695883</td><td>0.849442</td><td>0.786327</td><td>0.246186</td></tr><tr><td>0.624284</td><td>0.760612</td><td>0.881008</td><td>0.514085</td><td>0.455558</td><td>0.332586</td><td>0.644833</td><td>0.931693</td><td>0.725376</td><td>0.846432</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 10</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"a: Double\\\">a</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.840709</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.185760</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.213140</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.620216</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.624284</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"b: Double\\\">b</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.379033</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.991028</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.086177</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.192120</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.760612</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"c: Double\\\">c</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.477115</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.624864</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.134569</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.247869</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.881008</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"d: Double\\\">d</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.149914</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.005925</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.835962</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.537038</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.514085</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"e: Double\\\">e</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.179366</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.668237</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.007117</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.792768</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.455558</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"f: Double\\\">f</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.792388</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.660887</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.662784</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.151900</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.332586</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"g: Double\\\">g</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.025030</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.211135</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.166376</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.695883</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.644833</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"h: Double\\\">h</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.930703</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.748534</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.503425</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.849442</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.931693</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"i: Double\\\">i</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.018218</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.647559</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.697653</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.786327</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.725376</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"j: Double\\\">j</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.893851</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.786292</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.909158</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.246186</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.846432</span></span>\"] }, \n", | |
"], id: -721420244, rootId: -721420244, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420244) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420243\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 29, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val names = ('a'..'j').map { it.toString() }\n", | |
"val df = dataFrameOf(names).randomDouble(5)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"g" | |
] | |
}, | |
"execution_count": 30, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.sum().transpose().minBy(\"value\")[\"name\"]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**23.** How do you count how many unique rows a DataFrame has (i.e. ignore all rows that are duplicates)?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_43.jupyter.kts (2:15 - 19) Expression 'nrow' of type 'Int' cannot be invoked as a function. The function 'invoke()' is not found\n", | |
"Line_43.jupyter.kts (2:15 - 19) Cannot access 'nrow': it is internal in 'org.jetbrains.kotlinx.dataframe'" | |
] | |
} | |
], | |
"source": [ | |
"val df = dataFrameOf(\"a\", \"b\", \"c\").randomInt(30, 0..2)\n", | |
"df.distinct().nrow()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**24.** In the cell below, you have a DataFrame `df` that consists of 10 columns of floating-point numbers. Exactly 5 entries in each row are NaN values.\n", | |
"\n", | |
"For each row of the DataFrame, find the *column* which contains the *third* NaN value.\n", | |
"\n", | |
"You should return a Series of column labels: `e, c, d, h, d`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":10,\"columns\":[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\"],\"kotlin_dataframe\":[{\"a\":0.04,\"b\":\"NaN\",\"c\":\"NaN\",\"d\":0.25,\"e\":\"NaN\",\"f\":0.43,\"g\":0.71,\"h\":0.51,\"i\":\"NaN\",\"j\":\"NaN\"},{\"a\":\"NaN\",\"b\":\"NaN\",\"c\":\"NaN\",\"d\":0.04,\"e\":0.76,\"f\":\"NaN\",\"g\":\"NaN\",\"h\":0.67,\"i\":0.76,\"j\":0.16},{\"a\":\"NaN\",\"b\":\"NaN\",\"c\":0.5,\"d\":\"NaN\",\"e\":0.31,\"f\":0.4,\"g\":\"NaN\",\"h\":\"NaN\",\"i\":0.24,\"j\":0.01},{\"a\":0.49,\"b\":\"NaN\",\"c\":\"NaN\",\"d\":0.62,\"e\":0.73,\"f\":0.26,\"g\":0.85,\"h\":\"NaN\",\"i\":\"NaN\",\"j\":\"NaN\"},{\"a\":\"NaN\",\"b\":\"NaN\",\"c\":0.41,\"d\":\"NaN\",\"e\":0.05,\"f\":\"NaN\",\"g\":0.61,\"h\":\"NaN\",\"i\":0.48,\"j\":0.68}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420242\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420241\"><thead><tr><th>a</th><th>b</th><th>c</th><th>d</th><th>e</th><th>f</th><th>g</th><th>h</th><th>i</th><th>j</th></tr></thead><tbody><tr><td>0.040000</td><td>NaN</td><td>NaN</td><td>0.250000</td><td>NaN</td><td>0.430000</td><td>0.710000</td><td>0.510000</td><td>NaN</td><td>NaN</td></tr><tr><td>NaN</td><td>NaN</td><td>NaN</td><td>0.040000</td><td>0.760000</td><td>NaN</td><td>NaN</td><td>0.670000</td><td>0.760000</td><td>0.160000</td></tr><tr><td>NaN</td><td>NaN</td><td>0.500000</td><td>NaN</td><td>0.310000</td><td>0.400000</td><td>NaN</td><td>NaN</td><td>0.240000</td><td>0.010000</td></tr><tr><td>0.490000</td><td>NaN</td><td>NaN</td><td>0.620000</td><td>0.730000</td><td>0.260000</td><td>0.850000</td><td>NaN</td><td>NaN</td><td>NaN</td></tr><tr><td>NaN</td><td>NaN</td><td>0.410000</td><td>NaN</td><td>0.050000</td><td>NaN</td><td>0.610000</td><td>NaN</td><td>0.480000</td><td>0.680000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 10</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"a: Double\\\">a</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.04</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.49</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"b: Double\\\">b</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"c: Double\\\">c</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.50</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.41</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"d: Double\\\">d</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.25</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.04</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.62</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"e: Double\\\">e</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.76</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.31</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.73</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.05</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"f: Double\\\">f</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.43</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.40</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.26</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"g: Double\\\">g</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.71</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.85</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.61</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"h: Double\\\">h</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.51</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.67</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"i: Double\\\">i</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.76</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.24</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.48</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"j: Double\\\">j</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.01</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.68</span></span>\"] }, \n", | |
"], id: -721420242, rootId: -721420242, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420242) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420241\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 32, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val nan = Double.NaN\n", | |
"val names = ('a'..'j').map { it.toString() }\n", | |
"val data = listOf(\n", | |
" 0.04, nan, nan, 0.25, nan, 0.43, 0.71, 0.51, nan, nan,\n", | |
" nan, nan, nan, 0.04, 0.76, nan, nan, 0.67, 0.76, 0.16,\n", | |
" nan, nan, 0.5 , nan, 0.31, 0.4 , nan, nan, 0.24, 0.01,\n", | |
" 0.49, nan, nan, 0.62, 0.73, 0.26, 0.85, nan, nan, nan,\n", | |
" nan, nan, 0.41, nan, 0.05, nan, 0.61, nan, 0.48, 0.68\n", | |
")\n", | |
"val df = dataFrameOf(names)(*data.toTypedArray())\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_47.jupyter.kts (1:8 - 13) Type mismatch: inferred type is String but RowExpression<TypeVariable(T), TypeVariable(R)> /* = DataRow<TypeVariable(T)>.(DataRow<TypeVariable(T)>) -> TypeVariable(R) */ was expected\n", | |
"Line_47.jupyter.kts (1:15 - 5:2) Too many arguments for public fun <T, R> DataFrame<T>.map(transform: RowExpression<T, R> /* = DataRow<T>.(it: DataRow<T>) -> R */): List<R> defined in org.jetbrains.kotlinx.dataframe.api\n", | |
"Line_47.jupyter.kts (2:5 - 18) Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: \n", | |
"public inline fun <reified R> AnyRow /* = DataRow<*> */.namedValuesOf(): List<NameValuePair<TypeVariable(R)>> defined in org.jetbrains.kotlinx.dataframe.api\n", | |
"Line_47.jupyter.kts (3:19 - 21) Unresolved reference: it" | |
] | |
} | |
], | |
"source": [ | |
"df.map(\"res\") { \n", | |
" namedValuesOf<Double>()\n", | |
" .filter { it.value.isNaN() }.drop(2)\n", | |
" .firstOrNull()?.name \n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**25.** A DataFrame has a column of groups 'grps' and and column of integer values 'vals':\n", | |
"```kotlin\n", | |
"val grps by column(\"a\", \"a\", \"a\", \"b\", \"b\", \"c\", \"a\", \"a\", \"b\", \"c\", \"c\", \"c\", \"b\", \"b\", \"c\")\n", | |
"val vals by column(12, 345, 3, 1, 45, 14, 4, 52, 54, 23, 235, 21, 57, 3, 87)\n", | |
"\n", | |
"val df = dataFrameOf(grps, vals)\n", | |
"```\n", | |
"\n", | |
"For each group, find the sum of the three greatest values. You should end up with the answer as follows:\n", | |
"```\n", | |
"grps\n", | |
"a 409\n", | |
"b 156\n", | |
"c 345\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":15,\"ncol\":2,\"columns\":[\"grps\",\"vals\"],\"kotlin_dataframe\":[{\"grps\":\"a\",\"vals\":12},{\"grps\":\"a\",\"vals\":345},{\"grps\":\"a\",\"vals\":3},{\"grps\":\"b\",\"vals\":1},{\"grps\":\"b\",\"vals\":45},{\"grps\":\"c\",\"vals\":14},{\"grps\":\"a\",\"vals\":4},{\"grps\":\"a\",\"vals\":52},{\"grps\":\"b\",\"vals\":54},{\"grps\":\"c\",\"vals\":23},{\"grps\":\"c\",\"vals\":235},{\"grps\":\"c\",\"vals\":21},{\"grps\":\"b\",\"vals\":57},{\"grps\":\"b\",\"vals\":3},{\"grps\":\"c\",\"vals\":87}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420240\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420239\"><thead><tr><th>grps</th><th>vals</th></tr></thead><tbody><tr><td>a</td><td>12</td></tr><tr><td>a</td><td>345</td></tr><tr><td>a</td><td>3</td></tr><tr><td>b</td><td>1</td></tr><tr><td>b</td><td>45</td></tr><tr><td>c</td><td>14</td></tr><tr><td>a</td><td>4</td></tr><tr><td>a</td><td>52</td></tr><tr><td>b</td><td>54</td></tr><tr><td>c</td><td>23</td></tr><tr><td>c</td><td>235</td></tr><tr><td>c</td><td>21</td></tr><tr><td>b</td><td>57</td></tr><tr><td>b</td><td>3</td></tr><tr><td>c</td><td>87</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 15, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"grps: String\\\">grps</span>\", children: [], rightAlign: false, values: [\"a\",\"a\",\"a\",\"b\",\"b\",\"c\",\"a\",\"a\",\"b\",\"c\",\"c\",\"c\",\"b\",\"b\",\"c\"] }, \n", | |
"{ name: \"<span title=\\\"vals: Int\\\">vals</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">12</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">345</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">45</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">14</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">52</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">54</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">235</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">57</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">87</span></span>\"] }, \n", | |
"], id: -721420240, rootId: -721420240, totalRows: 15 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420240) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420239\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 34, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val grps by columnOf(\"a\", \"a\", \"a\", \"b\", \"b\", \"c\", \"a\", \"a\", \"b\", \"c\", \"c\", \"c\", \"b\", \"b\", \"c\")\n", | |
"val vals by columnOf(12, 345, 3, 1, 45, 14, 4, 52, 54, 23, 235, 21, 57, 3, 87)\n", | |
"\n", | |
"val df = dataFrameOf(grps, vals)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":2,\"columns\":[\"grps\",\"res\"],\"kotlin_dataframe\":[{\"grps\":\"a\",\"res\":409},{\"grps\":\"b\",\"res\":156},{\"grps\":\"c\",\"res\":345}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420238\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420237\"><thead><tr><th>grps</th><th>res</th></tr></thead><tbody><tr><td>a</td><td>409</td></tr><tr><td>b</td><td>156</td></tr><tr><td>c</td><td>345</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"grps: String\\\">grps</span>\", children: [], rightAlign: false, values: [\"a\",\"b\",\"c\"] }, \n", | |
"{ name: \"<span title=\\\"res: Int\\\">res</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">409</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">156</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">345</span></span>\"] }, \n", | |
"], id: -721420238, rootId: -721420238, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420238) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420237\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.groupBy { grps }.aggregate { \n", | |
" vals.sortDesc().take(3).sum() into \"res\"\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**26.** The DataFrame `df` constructed below has two integer columns 'A' and 'B'. The values in 'A' are between 1 and 100 (inclusive).\n", | |
"\n", | |
"For each group of 10 consecutive integers in 'A' (i.e. `(0, 10]`, `(10, 20]`, ...), calculate the sum of the corresponding values in column 'B'.\n", | |
"\n", | |
"The answer as follows:\n", | |
"\n", | |
"```\n", | |
"A\n", | |
"(0, 10] 635\n", | |
"(10, 20] 360\n", | |
"(20, 30] 315\n", | |
"(30, 40] 306\n", | |
"(40, 50] 750\n", | |
"(50, 60] 284\n", | |
"(60, 70] 424\n", | |
"(70, 80] 526\n", | |
"(80, 90] 835\n", | |
"(90, 100] 852\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":100,\"ncol\":2,\"columns\":[\"A\",\"B\"],\"kotlin_dataframe\":[{\"A\":34,\"B\":41},{\"A\":42,\"B\":3},{\"A\":42,\"B\":33},{\"A\":22,\"B\":41},{\"A\":70,\"B\":88},{\"A\":53,\"B\":68},{\"A\":80,\"B\":4},{\"A\":59,\"B\":59},{\"A\":45,\"B\":1},{\"A\":27,\"B\":14},{\"A\":70,\"B\":8},{\"A\":11,\"B\":52},{\"A\":51,\"B\":60},{\"A\":46,\"B\":43},{\"A\":17,\"B\":17},{\"A\":17,\"B\":42},{\"A\":56,\"B\":29},{\"A\":58,\"B\":49},{\"A\":48,\"B\":7},{\"A\":73,\"B\":52}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420236\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420235\"><thead><tr><th>A</th><th>B</th></tr></thead><tbody><tr><td>34</td><td>41</td></tr><tr><td>42</td><td>3</td></tr><tr><td>42</td><td>33</td></tr><tr><td>22</td><td>41</td></tr><tr><td>70</td><td>88</td></tr><tr><td>53</td><td>68</td></tr><tr><td>80</td><td>4</td></tr><tr><td>59</td><td>59</td></tr><tr><td>45</td><td>1</td></tr><tr><td>27</td><td>14</td></tr><tr><td>70</td><td>8</td></tr><tr><td>11</td><td>52</td></tr><tr><td>51</td><td>60</td></tr><tr><td>46</td><td>43</td></tr><tr><td>17</td><td>17</td></tr><tr><td>17</td><td>42</td></tr><tr><td>56</td><td>29</td></tr><tr><td>58</td><td>49</td></tr><tr><td>48</td><td>7</td></tr><tr><td>73</td><td>52</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">... showing only top 20 of 100 rows</p><p class=\"dataframe_description\">DataFrame: rowsCount = 100, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"A: Int\\\">A</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">34</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">42</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">42</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">22</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">70</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">53</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">80</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">59</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">45</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">27</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">70</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">11</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">51</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">46</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">56</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">58</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">48</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">73</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"B: Int\\\">B</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">41</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">33</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">41</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">88</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">68</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">59</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">14</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">8</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">52</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">60</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">43</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">42</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">29</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">49</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">52</span></span>\"] }, \n", | |
"], id: -721420236, rootId: -721420236, totalRows: 100 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420236) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420235\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 36, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import kotlin.random.Random\n", | |
"\n", | |
"val random = Random(42)\n", | |
"val list = List(200) { random.nextInt(1, 101)}\n", | |
"val df = dataFrameOf(\"A\", \"B\")(*list.toTypedArray())\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":2,\"columns\":[\"A\",\"B\"],\"kotlin_dataframe\":[{\"A\":\"(0, 10]\",\"B\":353},{\"A\":\"(10, 20]\",\"B\":873},{\"A\":\"(20, 30]\",\"B\":321},{\"A\":\"(30, 40]\",\"B\":322},{\"A\":\"(40, 50]\",\"B\":432},{\"A\":\"(50, 60]\",\"B\":754},{\"A\":\"(60, 70]\",\"B\":405},{\"A\":\"(70, 80]\",\"B\":561},{\"A\":\"(80, 90]\",\"B\":657},{\"A\":\"(90, 100]\",\"B\":527}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420234\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420233\"><thead><tr><th>A</th><th>B</th></tr></thead><tbody><tr><td>(0, 10]</td><td>353</td></tr><tr><td>(10, 20]</td><td>873</td></tr><tr><td>(20, 30]</td><td>321</td></tr><tr><td>(30, 40]</td><td>322</td></tr><tr><td>(40, 50]</td><td>432</td></tr><tr><td>(50, 60]</td><td>754</td></tr><tr><td>(60, 70]</td><td>405</td></tr><tr><td>(70, 80]</td><td>561</td></tr><tr><td>(80, 90]</td><td>657</td></tr><tr><td>(90, 100]</td><td>527</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"A: String\\\">A</span>\", children: [], rightAlign: false, values: [\"(0, 10]\",\"(10, 20]\",\"(20, 30]\",\"(30, 40]\",\"(40, 50]\",\"(50, 60]\",\"(60, 70]\",\"(70, 80]\",\"(80, 90]\",\"(90, 100]\"] }, \n", | |
"{ name: \"<span title=\\\"B: Int\\\">B</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">353</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">873</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">321</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">322</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">432</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">754</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">405</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">561</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">657</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">527</span></span>\"] }, \n", | |
"], id: -721420234, rootId: -721420234, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420234) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420233\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 37, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.groupBy { A.map { (it - 1) / 10 } }.sum { B }\n", | |
" .sortBy { A }\n", | |
" .convert { A }.with { \"(${it * 10}, ${it * 10 + 10}]\" }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## DataFrames: harder problems\n", | |
"\n", | |
"### These might require a bit of thinking outside the box...\n", | |
"\n", | |
"Difficulty: hard" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**27.** Consider a DataFrame `df` where there is an integer column 'X':\n", | |
"```kotlin\n", | |
"val df = dataFrameOf(\"X\")(7, 2, 0, 3, 4, 2, 5, 0, 3 , 4)\n", | |
"```\n", | |
"For each value, count the difference back to the previous zero (or the start of the column, whichever is closer). These values should therefore be\n", | |
"\n", | |
"```\n", | |
"[1, 2, 0, 1, 2, 3, 4, 0, 1, 2]\n", | |
"```\n", | |
"\n", | |
"Make this a new column 'Y'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":10,\"ncol\":1,\"columns\":[\"X\"],\"kotlin_dataframe\":[{\"X\":7},{\"X\":2},{\"X\":0},{\"X\":3},{\"X\":4},{\"X\":2},{\"X\":5},{\"X\":0},{\"X\":3},{\"X\":4}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420232\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420231\"><thead><tr><th>X</th></tr></thead><tbody><tr><td>7</td></tr><tr><td>2</td></tr><tr><td>0</td></tr><tr><td>3</td></tr><tr><td>4</td></tr><tr><td>2</td></tr><tr><td>5</td></tr><tr><td>0</td></tr><tr><td>3</td></tr><tr><td>4</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 10, columnsCount = 1</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"X: Int\\\">X</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\"] }, \n", | |
"], id: -721420232, rootId: -721420232, totalRows: 10 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420232) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420231\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val df = dataFrameOf(\"X\")(7, 2, 0, 3, 4, 2, 5, 0, 3 , 4)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_59.jupyter.kts (1:8 - 11) Type mismatch: inferred type is String but RowExpression<TypeVariable(T), TypeVariable(R)> /* = DataRow<TypeVariable(T)>.(DataRow<TypeVariable(T)>) -> TypeVariable(R) */ was expected\n", | |
"Line_59.jupyter.kts (1:13 - 3:2) Too many arguments for public fun <T, R> DataFrame<T>.map(transform: RowExpression<T, R> /* = DataRow<T>.(it: DataRow<T>) -> R */): List<R> defined in org.jetbrains.kotlinx.dataframe.api\n", | |
"Line_59.jupyter.kts (2:8 - 10) Unresolved reference: it\n", | |
"Line_59.jupyter.kts (2:27 - 31) Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: \n", | |
"public fun <T> DataRow<TypeVariable(T)>.prev(): DataRow<TypeVariable(T)>? defined in org.jetbrains.kotlinx.dataframe.api" | |
] | |
} | |
], | |
"source": [ | |
"df.map(\"Y\") {\n", | |
" if(it.X == 0) 0 else (prev()?.new() ?: 0) + 1\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**28.** Consider the DataFrame constructed below which contains rows and columns of numerical data.\n", | |
"\n", | |
"Create a list of the column-row index locations of the 3 largest values in this DataFrame. In thi case, the answer should be:\n", | |
"```\n", | |
"[(0, d), (2, c), (3, f)]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":8,\"ncol\":8,\"columns\":[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\"],\"kotlin_dataframe\":[{\"a\":43,\"b\":88,\"c\":66,\"d\":100,\"e\":9,\"f\":59,\"g\":74,\"h\":23},{\"a\":6,\"b\":63,\"c\":43,\"d\":58,\"e\":4,\"f\":85,\"g\":9,\"h\":25},{\"a\":49,\"b\":59,\"c\":100,\"d\":52,\"e\":28,\"f\":1,\"g\":19,\"h\":81},{\"a\":92,\"b\":41,\"c\":13,\"d\":57,\"e\":28,\"f\":97,\"g\":63,\"h\":39},{\"a\":4,\"b\":59,\"c\":72,\"d\":65,\"e\":50,\"f\":35,\"g\":14,\"h\":31},{\"a\":55,\"b\":74,\"c\":33,\"d\":66,\"e\":17,\"f\":39,\"g\":80,\"h\":38},{\"a\":18,\"b\":64,\"c\":91,\"d\":39,\"e\":80,\"f\":55,\"g\":65,\"h\":2},{\"a\":19,\"b\":76,\"c\":75,\"d\":18,\"e\":32,\"f\":97,\"g\":1,\"h\":32}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420230\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420229\"><thead><tr><th>a</th><th>b</th><th>c</th><th>d</th><th>e</th><th>f</th><th>g</th><th>h</th></tr></thead><tbody><tr><td>43</td><td>88</td><td>66</td><td>100</td><td>9</td><td>59</td><td>74</td><td>23</td></tr><tr><td>6</td><td>63</td><td>43</td><td>58</td><td>4</td><td>85</td><td>9</td><td>25</td></tr><tr><td>49</td><td>59</td><td>100</td><td>52</td><td>28</td><td>1</td><td>19</td><td>81</td></tr><tr><td>92</td><td>41</td><td>13</td><td>57</td><td>28</td><td>97</td><td>63</td><td>39</td></tr><tr><td>4</td><td>59</td><td>72</td><td>65</td><td>50</td><td>35</td><td>14</td><td>31</td></tr><tr><td>55</td><td>74</td><td>33</td><td>66</td><td>17</td><td>39</td><td>80</td><td>38</td></tr><tr><td>18</td><td>64</td><td>91</td><td>39</td><td>80</td><td>55</td><td>65</td><td>2</td></tr><tr><td>19</td><td>76</td><td>75</td><td>18</td><td>32</td><td>97</td><td>1</td><td>32</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 8, columnsCount = 8</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"a: Int\\\">a</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">43</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">49</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">92</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">55</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">18</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">19</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"b: Int\\\">b</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">88</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">63</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">59</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">41</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">59</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">74</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">64</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">76</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"c: Int\\\">c</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">66</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">43</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">100</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">13</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">72</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">33</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">91</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">75</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"d: Int\\\">d</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">100</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">58</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">52</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">57</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">65</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">66</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">39</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">18</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"e: Int\\\">e</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">28</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">28</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">50</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">80</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">32</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"f: Int\\\">f</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">59</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">85</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">97</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">35</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">39</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">55</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">97</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"g: Int\\\">g</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">74</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">63</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">14</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">80</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">65</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"h: Int\\\">h</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">25</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">81</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">39</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">31</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">38</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">32</span></span>\"] }, \n", | |
"], id: -721420230, rootId: -721420230, totalRows: 8 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420230) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420229\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 40, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val names = ('a'..'h').map { it.toString() } // val names = (0..7).map { it.toString() }\n", | |
"val random = Random(30)\n", | |
"val list = List(64) { random.nextInt(1, 101) }\n", | |
"val df = dataFrameOf(names)(*list.toTypedArray())\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":2,\"columns\":[\"index\",\"name\"],\"kotlin_dataframe\":[{\"index\":0,\"name\":\"d\"},{\"index\":2,\"name\":\"c\"},{\"index\":3,\"name\":\"f\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420228\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420227\"><thead><tr><th>index</th><th>name</th></tr></thead><tbody><tr><td>0</td><td>d</td></tr><tr><td>2</td><td>c</td></tr><tr><td>3</td><td>f</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"index: Int\\\">index</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"name: String\\\">name</span>\", children: [], rightAlign: false, values: [\"d\",\"c\",\"f\"] }, \n", | |
"], id: -721420228, rootId: -721420228, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420228) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420227\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 41, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.add(\"index\") { index() }\n", | |
" .gather { dropLast() }.into(\"name\", \"vals\")\n", | |
" .sortByDesc(\"vals\").take(3)[\"index\", \"name\"]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**29.** You are given the DataFrame below with a column of group IDs, 'grps', and a column of corresponding integer values, 'vals'.\n", | |
"\n", | |
"```kotlin\n", | |
"val random = Random(31)\n", | |
"val lab = listOf(\"A\", \"B\")\n", | |
"\n", | |
"val vals by columnOf(List(15) { random.nextInt(-30, 30) })\n", | |
"val grps by columnOf(List(15) { lab[random.nextInt(0, 2)] })\n", | |
"\n", | |
"val df = dataFrameOf(vals, grps)\n", | |
"```\n", | |
"\n", | |
"Create a new column 'patched_values' which contains the same values as the 'vals' any negative values in 'vals' with the group mean:\n", | |
"\n", | |
"```\n", | |
"vals grps patched_vals\n", | |
"-17\tB\t21.000000\n", | |
"-7\tB\t21.000000\n", | |
"28\tB\t28.000000\n", | |
"16\tB\t16.000000\n", | |
"-21\tB\t21.000000\n", | |
"19\tB\t19.000000\n", | |
"-2\tB\t21.000000\n", | |
"-19\tB\t21.000000\n", | |
"16\tA\t16.000000\n", | |
"9\tA\t9.000000\n", | |
"-14\tA\t16.000000\n", | |
"-19\tA\t16.000000\n", | |
"-22\tA\t16.000000\n", | |
"-1\tA\t16.000000\n", | |
"23\tA\t23.000000\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":15,\"ncol\":2,\"columns\":[\"vals\",\"grps\"],\"kotlin_dataframe\":[{\"vals\":-17,\"grps\":\"B\"},{\"vals\":-7,\"grps\":\"B\"},{\"vals\":16,\"grps\":\"A\"},{\"vals\":28,\"grps\":\"B\"},{\"vals\":9,\"grps\":\"A\"},{\"vals\":16,\"grps\":\"B\"},{\"vals\":-21,\"grps\":\"B\"},{\"vals\":-14,\"grps\":\"A\"},{\"vals\":-19,\"grps\":\"A\"},{\"vals\":-22,\"grps\":\"A\"},{\"vals\":19,\"grps\":\"B\"},{\"vals\":-2,\"grps\":\"B\"},{\"vals\":-1,\"grps\":\"A\"},{\"vals\":-19,\"grps\":\"B\"},{\"vals\":23,\"grps\":\"A\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420226\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420225\"><thead><tr><th>vals</th><th>grps</th></tr></thead><tbody><tr><td>-17</td><td>B</td></tr><tr><td>-7</td><td>B</td></tr><tr><td>16</td><td>A</td></tr><tr><td>28</td><td>B</td></tr><tr><td>9</td><td>A</td></tr><tr><td>16</td><td>B</td></tr><tr><td>-21</td><td>B</td></tr><tr><td>-14</td><td>A</td></tr><tr><td>-19</td><td>A</td></tr><tr><td>-22</td><td>A</td></tr><tr><td>19</td><td>B</td></tr><tr><td>-2</td><td>B</td></tr><tr><td>-1</td><td>A</td></tr><tr><td>-19</td><td>B</td></tr><tr><td>23</td><td>A</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 15, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"vals: Int\\\">vals</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-7</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">28</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-21</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-14</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-22</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"grps: String\\\">grps</span>\", children: [], rightAlign: false, values: [\"B\",\"B\",\"A\",\"B\",\"A\",\"B\",\"B\",\"A\",\"A\",\"A\",\"B\",\"B\",\"A\",\"B\",\"A\"] }, \n", | |
"], id: -721420226, rootId: -721420226, totalRows: 15 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420226) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420225\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 42, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val random = Random(31)\n", | |
"val lab = listOf(\"A\", \"B\")\n", | |
"\n", | |
"val vals by columnOf(*Array(15) { random.nextInt(-30, 30) })\n", | |
"val grps by columnOf(*Array(15) { lab[random.nextInt(0, 2)] })\n", | |
"\n", | |
"val df = dataFrameOf(vals, grps)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":15,\"ncol\":3,\"columns\":[\"vals\",\"grps\",\"patched_values\"],\"kotlin_dataframe\":[{\"vals\":-17,\"grps\":\"B\",\"patched_values\":\"21.0\"},{\"vals\":-7,\"grps\":\"B\",\"patched_values\":\"21.0\"},{\"vals\":16,\"grps\":\"A\",\"patched_values\":\"16\"},{\"vals\":28,\"grps\":\"B\",\"patched_values\":\"28\"},{\"vals\":9,\"grps\":\"A\",\"patched_values\":\"9\"},{\"vals\":16,\"grps\":\"B\",\"patched_values\":\"16\"},{\"vals\":-21,\"grps\":\"B\",\"patched_values\":\"21.0\"},{\"vals\":-14,\"grps\":\"A\",\"patched_values\":\"16.0\"},{\"vals\":-19,\"grps\":\"A\",\"patched_values\":\"16.0\"},{\"vals\":-22,\"grps\":\"A\",\"patched_values\":\"16.0\"},{\"vals\":19,\"grps\":\"B\",\"patched_values\":\"19\"},{\"vals\":-2,\"grps\":\"B\",\"patched_values\":\"21.0\"},{\"vals\":-1,\"grps\":\"A\",\"patched_values\":\"16.0\"},{\"vals\":-19,\"grps\":\"B\",\"patched_values\":\"21.0\"},{\"vals\":23,\"grps\":\"A\",\"patched_values\":\"23\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420224\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420223\"><thead><tr><th>vals</th><th>grps</th><th>patched_values</th></tr></thead><tbody><tr><td>-17</td><td>B</td><td>21.000000</td></tr><tr><td>-7</td><td>B</td><td>21.000000</td></tr><tr><td>16</td><td>A</td><td>16</td></tr><tr><td>28</td><td>B</td><td>28</td></tr><tr><td>9</td><td>A</td><td>9</td></tr><tr><td>16</td><td>B</td><td>16</td></tr><tr><td>-21</td><td>B</td><td>21.000000</td></tr><tr><td>-14</td><td>A</td><td>16.000000</td></tr><tr><td>-19</td><td>A</td><td>16.000000</td></tr><tr><td>-22</td><td>A</td><td>16.000000</td></tr><tr><td>19</td><td>B</td><td>19</td></tr><tr><td>-2</td><td>B</td><td>21.000000</td></tr><tr><td>-1</td><td>A</td><td>16.000000</td></tr><tr><td>-19</td><td>B</td><td>21.000000</td></tr><tr><td>23</td><td>A</td><td>23</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 15, columnsCount = 3</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"vals: Int\\\">vals</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-17</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-7</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">28</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-21</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-14</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-22</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">-19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"grps: String\\\">grps</span>\", children: [], rightAlign: false, values: [\"B\",\"B\",\"A\",\"B\",\"A\",\"B\",\"B\",\"A\",\"A\",\"A\",\"B\",\"B\",\"A\",\"B\",\"A\"] }, \n", | |
"{ name: \"<span title=\\\"patched_values: Any\\\">patched_values</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">28</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">9</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">19</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23</span></span>\"] }, \n", | |
"], id: -721420224, rootId: -721420224, totalRows: 15 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420224) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420223\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 43, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val means = df.filter { vals >= 0 }\n", | |
" .groupBy { grps }.mean() \n", | |
" .pivot { grps }.values { vals }\n", | |
"\n", | |
"df.add(\"patched_values\") {\n", | |
" if(vals < 0) means[grps] else vals\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**30.** Implement a rolling mean over groups with window size 3, which ignores NaN value. For example consider the following DataFrame:\n", | |
"```kotlin\n", | |
"val group by columnOf(\"a\", \"a\", \"b\", \"b\", \"a\", \"b\", \"b\", \"b\", \"a\", \"b\", \"a\", \"b\")\n", | |
"val value by columnOf(1.0, 2.0, 3.0, Double.NaN, 2.0, 3.0, Double.NaN, 1.0, 7.0, 3.0, Double.NaN, 8.0)\n", | |
"\n", | |
"val df = dataFrameOf(group, value)\n", | |
"df\n", | |
"\n", | |
"group value\n", | |
"a 1.0\n", | |
"a 2.0\n", | |
"b 3.0\n", | |
"b NaN\n", | |
"a 2.0\n", | |
"b 3.0\n", | |
"b NaN\n", | |
"b 1.0\n", | |
"a 7.0\n", | |
"b 3.0\n", | |
"a NaN\n", | |
"b 8.0\n", | |
"```\n", | |
"The goal is:\n", | |
"```\n", | |
"1.000000\n", | |
"1.500000\n", | |
"3.000000\n", | |
"3.000000\n", | |
"1.666667\n", | |
"3.000000\n", | |
"3.000000\n", | |
"2.000000\n", | |
"3.666667\n", | |
"2.000000\n", | |
"4.500000\n", | |
"4.000000\n", | |
"```\n", | |
"E.g. the first window of size three for group 'b' has values 3.0, NaN and 3.0 and occurs at row index 5. Instead of being NaN the value in the new column at this row index should be 3.0 (just the two non-NaN values are used to compute the mean (3+3)/2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":12,\"ncol\":2,\"columns\":[\"groups\",\"value\"],\"kotlin_dataframe\":[{\"groups\":\"a\",\"value\":1.0},{\"groups\":\"a\",\"value\":2.0},{\"groups\":\"b\",\"value\":3.0},{\"groups\":\"b\",\"value\":\"NaN\"},{\"groups\":\"a\",\"value\":2.0},{\"groups\":\"b\",\"value\":3.0},{\"groups\":\"b\",\"value\":\"NaN\"},{\"groups\":\"b\",\"value\":1.0},{\"groups\":\"a\",\"value\":7.0},{\"groups\":\"b\",\"value\":3.0},{\"groups\":\"a\",\"value\":\"NaN\"},{\"groups\":\"b\",\"value\":8.0}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420222\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420221\"><thead><tr><th>groups</th><th>value</th></tr></thead><tbody><tr><td>a</td><td>1.000000</td></tr><tr><td>a</td><td>2.000000</td></tr><tr><td>b</td><td>3.000000</td></tr><tr><td>b</td><td>NaN</td></tr><tr><td>a</td><td>2.000000</td></tr><tr><td>b</td><td>3.000000</td></tr><tr><td>b</td><td>NaN</td></tr><tr><td>b</td><td>1.000000</td></tr><tr><td>a</td><td>7.000000</td></tr><tr><td>b</td><td>3.000000</td></tr><tr><td>a</td><td>NaN</td></tr><tr><td>b</td><td>8.000000</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 12, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"groups: String\\\">groups</span>\", children: [], rightAlign: false, values: [\"a\",\"a\",\"b\",\"b\",\"a\",\"b\",\"b\",\"b\",\"a\",\"b\",\"a\",\"b\"] }, \n", | |
"{ name: \"<span title=\\\"value: Double\\\">value</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">7.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">8.0</span></span>\"] }, \n", | |
"], id: -721420222, rootId: -721420222, totalRows: 12 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420222) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420221\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 44, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val groups by columnOf(\"a\", \"a\", \"b\", \"b\", \"a\", \"b\", \"b\", \"b\", \"a\", \"b\", \"a\", \"b\")\n", | |
"val value by columnOf(1.0, 2.0, 3.0, Double.NaN, 2.0, 3.0, Double.NaN, 1.0, 7.0, 3.0, Double.NaN, 8.0)\n", | |
"\n", | |
"val df = dataFrameOf(groups, value)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Line_73.jupyter.kts (3:9 - 13) Unresolved reference: near\n", | |
"Line_73.jupyter.kts (3:51 - 56) Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: \n", | |
"public inline fun Double.isNaN(): Boolean defined in kotlin" | |
] | |
} | |
], | |
"source": [ | |
"df.add(\"id\"){ index() }\n", | |
" .groupBy { groups }.add(\"res\") {\n", | |
" near(-2..0).map { it.value }.filter { !it.isNaN() }.average()\n", | |
" }.concat()\n", | |
" .sortBy(\"id\")\n", | |
" .remove(\"id\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Date\n", | |
"Difficulty: easy/medium" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**31.** Create a column Of LocalDate that contains each day of 2015 and column of random numbers." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"@file:DependsOn(\"org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.3.1\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import kotlinx.datetime.*" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class DateRangeIterator(first: LocalDate, last: LocalDate, val step: Int) : Iterator<LocalDate> {\n", | |
" private val finalElement: LocalDate = last\n", | |
" private var hasNext: Boolean = if (step > 0) first <= last else first >= last\n", | |
" private var next: LocalDate = if (hasNext) first else finalElement\n", | |
"\n", | |
" override fun hasNext(): Boolean = hasNext\n", | |
"\n", | |
" override fun next(): LocalDate {\n", | |
" val value = next\n", | |
" if (value == finalElement) {\n", | |
" if (!hasNext) throw kotlin.NoSuchElementException()\n", | |
" hasNext = false\n", | |
" }\n", | |
" else {\n", | |
" next = next.plus(step, DateTimeUnit.DayBased(1))\n", | |
" }\n", | |
" return value\n", | |
" }\n", | |
"}\n", | |
"\n", | |
"operator fun ClosedRange<LocalDate>.iterator() = DateRangeIterator(this.start, this.endInclusive, 1)\n", | |
"\n", | |
"fun ClosedRange<LocalDate>.toList(): List<LocalDate> {\n", | |
" return when (val size = this.start.daysUntil(this.endInclusive)) {\n", | |
" 0 -> emptyList()\n", | |
" 1 -> listOf(iterator().next())\n", | |
" else -> {\n", | |
" val dest = ArrayList<LocalDate>(size)\n", | |
" for (item in this) {\n", | |
" dest.add(item)\n", | |
" }\n", | |
" dest\n", | |
" }\n", | |
" }\n", | |
"}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":2,\"columns\":[\"dti\",\"s\"],\"kotlin_dataframe\":[{\"dti\":\"2015-01-01\",\"s\":0.34821546321980923},{\"dti\":\"2015-01-02\",\"s\":0.32289421861862344},{\"dti\":\"2015-01-03\",\"s\":0.9528633830442775},{\"dti\":\"2015-01-04\",\"s\":0.9880246210425332},{\"dti\":\"2015-01-05\",\"s\":0.5623564124651401}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420220\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420219\"><thead><tr><th>dti</th><th>s</th></tr></thead><tbody><tr><td>2015-01-01</td><td>0.348215</td></tr><tr><td>2015-01-02</td><td>0.322894</td></tr><tr><td>2015-01-03</td><td>0.952863</td></tr><tr><td>2015-01-04</td><td>0.988025</td></tr><tr><td>2015-01-05</td><td>0.562356</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"dti: kotlinx.datetime.LocalDate\\\">dti</span>\", children: [], rightAlign: false, values: [\"2015-01-01\",\"2015-01-02\",\"2015-01-03\",\"2015-01-04\",\"2015-01-05\"] }, \n", | |
"{ name: \"<span title=\\\"s: Double\\\">s</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.348215</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.322894</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.952863</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.988025</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.562356</span></span>\"] }, \n", | |
"], id: -721420220, rootId: -721420220, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420220) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420219\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 49, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val start = LocalDate(2015, 1, 1)\n", | |
"val end = LocalDate(2016, 1, 1)\n", | |
"\n", | |
"val days = (start..end).toList()\n", | |
"\n", | |
"val dti = days.toColumn(\"dti\")\n", | |
"val s = List(dti.size()) { Random.nextDouble() }.toColumn(\"s\")\n", | |
"val df = dataFrameOf(dti, s)\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**32.** Find the sum of the values in s for every Wednesday." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"23.624683062373318" | |
] | |
}, | |
"execution_count": 50, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.filter { dti.dayOfWeek.ordinal == 2 }.sum { s }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**33.** For each calendar month in s, find the mean of values." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":12,\"ncol\":2,\"columns\":[\"month\",\"s\"],\"kotlin_dataframe\":[{\"month\":\"JANUARY\",\"s\":0.482487975969208},{\"month\":\"FEBRUARY\",\"s\":0.512633956847872},{\"month\":\"MARCH\",\"s\":0.4846588742157985},{\"month\":\"APRIL\",\"s\":0.47572767908471253},{\"month\":\"MAY\",\"s\":0.44465222297244494},{\"month\":\"JUNE\",\"s\":0.4855045967745654},{\"month\":\"JULY\",\"s\":0.432414278916195},{\"month\":\"AUGUST\",\"s\":0.4884829239251337},{\"month\":\"SEPTEMBER\",\"s\":0.5178199687032211},{\"month\":\"OCTOBER\",\"s\":0.5058610598294432},{\"month\":\"NOVEMBER\",\"s\":0.5173684251317131},{\"month\":\"DECEMBER\",\"s\":0.41629574750448034}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420218\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420217\"><thead><tr><th>month</th><th>s</th></tr></thead><tbody><tr><td>JANUARY</td><td>0.482488</td></tr><tr><td>FEBRUARY</td><td>0.512634</td></tr><tr><td>MARCH</td><td>0.484659</td></tr><tr><td>APRIL</td><td>0.475728</td></tr><tr><td>MAY</td><td>0.444652</td></tr><tr><td>JUNE</td><td>0.485505</td></tr><tr><td>JULY</td><td>0.432414</td></tr><tr><td>AUGUST</td><td>0.488483</td></tr><tr><td>SEPTEMBER</td><td>0.517820</td></tr><tr><td>OCTOBER</td><td>0.505861</td></tr><tr><td>NOVEMBER</td><td>0.517368</td></tr><tr><td>DECEMBER</td><td>0.416296</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 12, columnsCount = 2</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"month: java.time.Month\\\">month</span>\", children: [], rightAlign: false, values: [\"JANUARY\",\"FEBRUARY\",\"MARCH\",\"APRIL\",\"MAY\",\"JUNE\",\"JULY\",\"AUGUST\",\"SEPTEMBER\",\"OCTOBER\",\"NOVEMBER\",\"DECEMBER\"] }, \n", | |
"{ name: \"<span title=\\\"s: Double\\\">s</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.482488</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.512634</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.484659</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.475728</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.444652</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.485505</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.432414</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.488483</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.517820</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.505861</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.517368</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.416296</span></span>\"] }, \n", | |
"], id: -721420218, rootId: -721420218, totalRows: 12 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420218) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420217\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 51, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.groupBy { dti.map { it.month } named \"month\" }.mean()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**34.** For each group of four consecutive calendar months in s, find the date on which the highest value occurred." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":3,\"ncol\":4,\"columns\":[\"month4\",\"dti\",\"s\",\"month41\"],\"kotlin_dataframe\":[{\"month4\":1,\"dti\":\"2015-01-07\",\"s\":0.9895083821383692,\"month41\":1},{\"month4\":2,\"dti\":\"2015-08-18\",\"s\":0.9988478970043665,\"month41\":2},{\"month4\":3,\"dti\":\"2015-11-10\",\"s\":0.9963217477568667,\"month41\":3}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420216\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420215\"><thead><tr><th>month4</th><th>dti</th><th>s</th><th>month41</th></tr></thead><tbody><tr><td>1</td><td>2015-01-07</td><td>0.989508</td><td>1</td></tr><tr><td>2</td><td>2015-08-18</td><td>0.998848</td><td>2</td></tr><tr><td>3</td><td>2015-11-10</td><td>0.996322</td><td>3</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 3, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"month4: Int\\\">month4</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"dti: kotlinx.datetime.LocalDate\\\">dti</span>\", children: [], rightAlign: false, values: [\"2015-01-07\",\"2015-08-18\",\"2015-11-10\"] }, \n", | |
"{ name: \"<span title=\\\"s: Double\\\">s</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.989508</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.998848</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">0.996322</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"month41: Int\\\">month41</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\"] }, \n", | |
"], id: -721420216, rootId: -721420216, totalRows: 3 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420216) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420215\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 52, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.add(\"month4\") {\n", | |
" when(dti.monthNumber) {\n", | |
" in 1..4 -> 1\n", | |
" in 5..8 -> 2\n", | |
" else -> 3\n", | |
" }\n", | |
"}.groupBy(\"month4\").aggregate { maxBy(s) into \"max\" }.flatten()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**35.** Create a column consisting of the third Thursday in each month for the years 2015 and 2016." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import java.time.temporal.WeekFields\n", | |
"import java.util.*" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":24,\"ncol\":1,\"columns\":[\"3thu\"],\"kotlin_dataframe\":[{\"3thu\":\"2015-01-15\"},{\"3thu\":\"2015-02-19\"},{\"3thu\":\"2015-03-19\"},{\"3thu\":\"2015-04-16\"},{\"3thu\":\"2015-05-14\"},{\"3thu\":\"2015-06-18\"},{\"3thu\":\"2015-07-16\"},{\"3thu\":\"2015-08-13\"},{\"3thu\":\"2015-09-17\"},{\"3thu\":\"2015-10-15\"},{\"3thu\":\"2015-11-19\"},{\"3thu\":\"2015-12-17\"},{\"3thu\":\"2016-01-14\"},{\"3thu\":\"2016-02-18\"},{\"3thu\":\"2016-03-17\"},{\"3thu\":\"2016-04-14\"},{\"3thu\":\"2016-05-19\"},{\"3thu\":\"2016-06-16\"},{\"3thu\":\"2016-07-14\"},{\"3thu\":\"2016-08-18\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420214\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420213\"><thead><tr><th>3thu</th></tr></thead><tbody><tr><td>2015-01-15</td></tr><tr><td>2015-02-19</td></tr><tr><td>2015-03-19</td></tr><tr><td>2015-04-16</td></tr><tr><td>2015-05-14</td></tr><tr><td>2015-06-18</td></tr><tr><td>2015-07-16</td></tr><tr><td>2015-08-13</td></tr><tr><td>2015-09-17</td></tr><tr><td>2015-10-15</td></tr><tr><td>2015-11-19</td></tr><tr><td>2015-12-17</td></tr><tr><td>2016-01-14</td></tr><tr><td>2016-02-18</td></tr><tr><td>2016-03-17</td></tr><tr><td>2016-04-14</td></tr><tr><td>2016-05-19</td></tr><tr><td>2016-06-16</td></tr><tr><td>2016-07-14</td></tr><tr><td>2016-08-18</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">... showing only top 20 of 24 rows</p><p class=\"dataframe_description\">DataColumn: name = \"3thu\", type = kotlinx.datetime.LocalDate, size = 24</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"3thu: kotlinx.datetime.LocalDate\\\">3thu</span>\", children: [], rightAlign: false, values: [\"2015-01-15\",\"2015-02-19\",\"2015-03-19\",\"2015-04-16\",\"2015-05-14\",\"2015-06-18\",\"2015-07-16\",\"2015-08-13\",\"2015-09-17\",\"2015-10-15\",\"2015-11-19\",\"2015-12-17\",\"2016-01-14\",\"2016-02-18\",\"2016-03-17\",\"2016-04-14\",\"2016-05-19\",\"2016-06-16\",\"2016-07-14\",\"2016-08-18\"] }, \n", | |
"], id: -721420214, rootId: -721420214, totalRows: 24 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420214) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420213\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 54, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val start = LocalDate(2015, 1, 1)\n", | |
"val end = LocalDate(2016, 12, 31)\n", | |
"\n", | |
"(start..end).toList().toColumn(\"3thu\").filter { \n", | |
" it.toJavaLocalDate()[WeekFields.of(Locale.ENGLISH).weekOfMonth()] == 3\n", | |
" && it.dayOfWeek.value == 4\n", | |
" }" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Cleaning Data\n", | |
"### Making a DataFrame easier to work with\n", | |
"Difficulty: *easy/medium*\n", | |
"\n", | |
"It happens all the time: someone gives you data containing malformed strings, lists and missing data. How do you tidy it up so you can get on with the analysis?\n", | |
"\n", | |
"Take this monstrosity as the DataFrame to use in the following puzzles:\n", | |
"```kotlin\n", | |
"val fromTo = listOf(\"LoNDon_paris\", \"MAdrid_miLAN\", \"londON_StockhOlm\", \"Budapest_PaRis\", \"Brussels_londOn\").toColumn(\"From_To\")\n", | |
"val flightNumber = listOf(10045.0, Double.NaN, 10065.0, Double.NaN, 10085.0).toColumn(\"FlightNumber\")\n", | |
"val recentDelays = listOf(listOf(23, 47), listOf(), listOf(24, 43, 87), listOf(13), listOf(67, 32)).toColumn(\"RecentDelays\")\n", | |
"val airline = listOf(\"KLM(!)\", \"<Air France> (12)\", \"(British Airways. )\", \"12. Air France\", \"'Swiss Air'\").toColumn(\"Airline\")\n", | |
"\n", | |
"val df = dataFrameOf(fromTo, flightNumber, recentDelays, airline)\n", | |
"```\n", | |
"\n", | |
"It looks like this:\n", | |
"```\n", | |
"From_To FlightNumber RecentDelays Airline\n", | |
"LoNDon_paris 10045.000000 [23, 47] KLM(!)\n", | |
"MAdrid_miLAN NaN [] {Air France} (12)\n", | |
"londON_StockhOlm 10065.000000 [24, 43, 87] (British Airways. )\n", | |
"Budapest_PaRis NaN [13] 12. Air France\n", | |
"Brussels_londOn 10085.000000 [67, 32] 'Swiss Air'\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":4,\"columns\":[\"From_To\",\"FlightNumber\",\"RecentDelays\",\"Airline\"],\"kotlin_dataframe\":[{\"From_To\":\"LoNDon_paris\",\"FlightNumber\":10045.0,\"RecentDelays\":[23,47],\"Airline\":\"KLM(!)\"},{\"From_To\":\"MAdrid_miLAN\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[],\"Airline\":\"{Air France} (12)\"},{\"From_To\":\"londON_StockhOlm\",\"FlightNumber\":10065.0,\"RecentDelays\":[24,43,87],\"Airline\":\"(British Airways. )\"},{\"From_To\":\"Budapest_PaRis\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[13],\"Airline\":\"12. Air France\"},{\"From_To\":\"Brussels_londOn\",\"FlightNumber\":10085.0,\"RecentDelays\":[67,32],\"Airline\":\"'Swiss Air'\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420212\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420211\"><thead><tr><th>From_To</th><th>FlightNumber</th><th>RecentDelays</th><th>Airline</th></tr></thead><tbody><tr><td>LoNDon_paris</td><td>10045.000000</td><td>[23, 47]</td><td>KLM(!)</td></tr><tr><td>MAdrid_miLAN</td><td>NaN</td><td>[ ]</td><td>{Air France} (12)</td></tr><tr><td>londON_StockhOlm</td><td>10065.000000</td><td>[24, 43, 87]</td><td>(British Airways. )</td></tr><tr><td>Budapest_PaRis</td><td>NaN</td><td>[13]</td><td>12. Air France</td></tr><tr><td>Brussels_londOn</td><td>10085.000000</td><td>[67, 32]</td><td>'Swiss Air'</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From_To: String\\\">From_To</span>\", children: [], rightAlign: false, values: [\"LoNDon_paris\",\"MAdrid_miLAN\",\"londON_StockhOlm\",\"Budapest_PaRis\",\"Brussels_londOn\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Double\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"RecentDelays: List<Int>\\\">RecentDelays</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"23\\n47\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">23</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">47</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">[ ]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"24\\n43\\n87\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">24</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">43</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">87</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"13\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">13</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"67\\n32\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">67</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">32</span><span class=\\\"structural\\\">]</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM(!)\",\"{Air France} (12)\",\"(British Airways. )\",\"12. Air France\",\"'Swiss Air'\"] }, \n", | |
"], id: -721420212, rootId: -721420212, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420212) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420211\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 55, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val fromTo = listOf(\"LoNDon_paris\", \"MAdrid_miLAN\", \"londON_StockhOlm\", \"Budapest_PaRis\", \"Brussels_londOn\").toColumn(\"From_To\")\n", | |
"val flightNumber = listOf(10045.0, Double.NaN, 10065.0, Double.NaN, 10085.0).toColumn(\"FlightNumber\")\n", | |
"val recentDelays = listOf(listOf(23, 47), listOf(), listOf(24, 43, 87), listOf(13), listOf(67, 32)).toColumn(\"RecentDelays\")\n", | |
"val airline = listOf(\"KLM(!)\", \"{Air France} (12)\", \"(British Airways. )\", \"12. Air France\", \"'Swiss Air'\").toColumn(\"Airline\")\n", | |
"\n", | |
"var df = dataFrameOf(fromTo, flightNumber, recentDelays, airline)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**36.** Some values in the FlightNumber column are missing (they are NaN). These numbers are meant to increase by 10 with each row, so 10055 and 10075 need to be put in place. Modify df to fill in these missing numbers and make the column an integer column (instead of a float column)." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 56, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":4,\"columns\":[\"From_To\",\"FlightNumber\",\"RecentDelays\",\"Airline\"],\"kotlin_dataframe\":[{\"From_To\":\"LoNDon_paris\",\"FlightNumber\":10045,\"RecentDelays\":[23,47],\"Airline\":\"KLM(!)\"},{\"From_To\":\"MAdrid_miLAN\",\"FlightNumber\":10055,\"RecentDelays\":[],\"Airline\":\"{Air France} (12)\"},{\"From_To\":\"londON_StockhOlm\",\"FlightNumber\":10065,\"RecentDelays\":[24,43,87],\"Airline\":\"(British Airways. )\"},{\"From_To\":\"Budapest_PaRis\",\"FlightNumber\":10075,\"RecentDelays\":[13],\"Airline\":\"12. Air France\"},{\"From_To\":\"Brussels_londOn\",\"FlightNumber\":10085,\"RecentDelays\":[67,32],\"Airline\":\"'Swiss Air'\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420210\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420209\"><thead><tr><th>From_To</th><th>FlightNumber</th><th>RecentDelays</th><th>Airline</th></tr></thead><tbody><tr><td>LoNDon_paris</td><td>10045</td><td>[23, 47]</td><td>KLM(!)</td></tr><tr><td>MAdrid_miLAN</td><td>10055</td><td>[ ]</td><td>{Air France} (12)</td></tr><tr><td>londON_StockhOlm</td><td>10065</td><td>[24, 43, 87]</td><td>(British Airways. )</td></tr><tr><td>Budapest_PaRis</td><td>10075</td><td>[13]</td><td>12. Air France</td></tr><tr><td>Brussels_londOn</td><td>10085</td><td>[67, 32]</td><td>'Swiss Air'</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 4</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From_To: String\\\">From_To</span>\", children: [], rightAlign: false, values: [\"LoNDon_paris\",\"MAdrid_miLAN\",\"londON_StockhOlm\",\"Budapest_PaRis\",\"Brussels_londOn\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Int\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10055</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10075</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"RecentDelays: List<Int>\\\">RecentDelays</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"23\\n47\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">23</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">47</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">[ ]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"24\\n43\\n87\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">24</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">43</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">87</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"13\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">13</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"67\\n32\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">67</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">32</span><span class=\\\"structural\\\">]</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM(!)\",\"{Air France} (12)\",\"(British Airways. )\",\"12. Air France\",\"'Swiss Air'\"] }, \n", | |
"], id: -721420210, rootId: -721420210, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420210) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420209\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 56, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val df1 = df.update { FlightNumber }\n", | |
" .where { it.isNaN() }.with { prev()!!.FlightNumber + (next()!!.FlightNumber - prev()!!.FlightNumber) / 2 }\n", | |
" .convert { FlightNumber }.toInt()\n", | |
"df1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**37.** The **From_To** column would be better as two separate columns! Split each string on the underscore delimiter **_** to give a new two columns. Assign the correct names 'From' and 'To' to this columns." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":5,\"columns\":[\"From\",\"To\",\"FlightNumber\",\"RecentDelays\",\"Airline\"],\"kotlin_dataframe\":[{\"From\":\"LoNDon\",\"To\":\"paris\",\"FlightNumber\":10045.0,\"RecentDelays\":[23,47],\"Airline\":\"KLM(!)\"},{\"From\":\"MAdrid\",\"To\":\"miLAN\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[],\"Airline\":\"{Air France} (12)\"},{\"From\":\"londON\",\"To\":\"StockhOlm\",\"FlightNumber\":10065.0,\"RecentDelays\":[24,43,87],\"Airline\":\"(British Airways. )\"},{\"From\":\"Budapest\",\"To\":\"PaRis\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[13],\"Airline\":\"12. Air France\"},{\"From\":\"Brussels\",\"To\":\"londOn\",\"FlightNumber\":10085.0,\"RecentDelays\":[67,32],\"Airline\":\"'Swiss Air'\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420208\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420207\"><thead><tr><th>From</th><th>To</th><th>FlightNumber</th><th>RecentDelays</th><th>Airline</th></tr></thead><tbody><tr><td>LoNDon</td><td>paris</td><td>10045.000000</td><td>[23, 47]</td><td>KLM(!)</td></tr><tr><td>MAdrid</td><td>miLAN</td><td>NaN</td><td>[ ]</td><td>{Air France} (12)</td></tr><tr><td>londON</td><td>StockhOlm</td><td>10065.000000</td><td>[24, 43, 87]</td><td>(British Airways. )</td></tr><tr><td>Budapest</td><td>PaRis</td><td>NaN</td><td>[13]</td><td>12. Air France</td></tr><tr><td>Brussels</td><td>londOn</td><td>10085.000000</td><td>[67, 32]</td><td>'Swiss Air'</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 5</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From: String\\\">From</span>\", children: [], rightAlign: false, values: [\"LoNDon\",\"MAdrid\",\"londON\",\"Budapest\",\"Brussels\"] }, \n", | |
"{ name: \"<span title=\\\"To: String\\\">To</span>\", children: [], rightAlign: false, values: [\"paris\",\"miLAN\",\"StockhOlm\",\"PaRis\",\"londOn\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Double\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"RecentDelays: List<Int>\\\">RecentDelays</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"23\\n47\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">23</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">47</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">[ ]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"24\\n43\\n87\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">24</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">43</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">87</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"13\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">13</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"67\\n32\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">67</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">32</span><span class=\\\"structural\\\">]</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM(!)\",\"{Air France} (12)\",\"(British Airways. )\",\"12. Air France\",\"'Swiss Air'\"] }, \n", | |
"], id: -721420208, rootId: -721420208, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420208) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420207\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 57, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"var df2 = df.split { From_To }.by(\"_\").into(\"From\", \"To\")\n", | |
"df2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**38.** Notice how the capitalisation of the city names is all mixed up in this temporary DataFrame 'temp'. Standardise the strings so that only the first letter is uppercase (e.g. \"londON\" should become \"London\".)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":5,\"columns\":[\"From\",\"To\",\"FlightNumber\",\"RecentDelays\",\"Airline\"],\"kotlin_dataframe\":[{\"From\":\"London\",\"To\":\"Paris\",\"FlightNumber\":10045.0,\"RecentDelays\":[23,47],\"Airline\":\"KLM(!)\"},{\"From\":\"Madrid\",\"To\":\"Milan\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[],\"Airline\":\"{Air France} (12)\"},{\"From\":\"London\",\"To\":\"Stockholm\",\"FlightNumber\":10065.0,\"RecentDelays\":[24,43,87],\"Airline\":\"(British Airways. )\"},{\"From\":\"Budapest\",\"To\":\"Paris\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[13],\"Airline\":\"12. Air France\"},{\"From\":\"Brussels\",\"To\":\"London\",\"FlightNumber\":10085.0,\"RecentDelays\":[67,32],\"Airline\":\"'Swiss Air'\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420206\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420205\"><thead><tr><th>From</th><th>To</th><th>FlightNumber</th><th>RecentDelays</th><th>Airline</th></tr></thead><tbody><tr><td>London</td><td>Paris</td><td>10045.000000</td><td>[23, 47]</td><td>KLM(!)</td></tr><tr><td>Madrid</td><td>Milan</td><td>NaN</td><td>[ ]</td><td>{Air France} (12)</td></tr><tr><td>London</td><td>Stockholm</td><td>10065.000000</td><td>[24, 43, 87]</td><td>(British Airways. )</td></tr><tr><td>Budapest</td><td>Paris</td><td>NaN</td><td>[13]</td><td>12. Air France</td></tr><tr><td>Brussels</td><td>London</td><td>10085.000000</td><td>[67, 32]</td><td>'Swiss Air'</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 5</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From: String\\\">From</span>\", children: [], rightAlign: false, values: [\"London\",\"Madrid\",\"London\",\"Budapest\",\"Brussels\"] }, \n", | |
"{ name: \"<span title=\\\"To: String\\\">To</span>\", children: [], rightAlign: false, values: [\"Paris\",\"Milan\",\"Stockholm\",\"Paris\",\"London\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Double\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"RecentDelays: List<Int>\\\">RecentDelays</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"23\\n47\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">23</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">47</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">[ ]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"24\\n43\\n87\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">24</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">43</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">87</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"13\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">13</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"67\\n32\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">67</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">32</span><span class=\\\"structural\\\">]</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM(!)\",\"{Air France} (12)\",\"(British Airways. )\",\"12. Air France\",\"'Swiss Air'\"] }, \n", | |
"], id: -721420206, rootId: -721420206, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420206) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420205\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 58, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df2 = df2.update { From and To }.with { it.lowercase().replaceFirstChar(Char::uppercase) }\n", | |
"df2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**39.** In the **Airline** column, you can see some extra punctuation and symbols have appeared around the airline names. Pull out just the airline name. E.g. `'(British Airways. )'` should become `'British Airways'`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":5,\"columns\":[\"From\",\"To\",\"FlightNumber\",\"RecentDelays\",\"Airline\"],\"kotlin_dataframe\":[{\"From\":\"London\",\"To\":\"Paris\",\"FlightNumber\":10045.0,\"RecentDelays\":[23,47],\"Airline\":\"KLM\"},{\"From\":\"Madrid\",\"To\":\"Milan\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[],\"Airline\":\"Air France\"},{\"From\":\"London\",\"To\":\"Stockholm\",\"FlightNumber\":10065.0,\"RecentDelays\":[24,43,87],\"Airline\":\"British Airways\"},{\"From\":\"Budapest\",\"To\":\"Paris\",\"FlightNumber\":\"NaN\",\"RecentDelays\":[13],\"Airline\":\" Air France\"},{\"From\":\"Brussels\",\"To\":\"London\",\"FlightNumber\":10085.0,\"RecentDelays\":[67,32],\"Airline\":\"Swiss Air\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420204\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420203\"><thead><tr><th>From</th><th>To</th><th>FlightNumber</th><th>RecentDelays</th><th>Airline</th></tr></thead><tbody><tr><td>London</td><td>Paris</td><td>10045.000000</td><td>[23, 47]</td><td>KLM</td></tr><tr><td>Madrid</td><td>Milan</td><td>NaN</td><td>[ ]</td><td>Air France</td></tr><tr><td>London</td><td>Stockholm</td><td>10065.000000</td><td>[24, 43, 87]</td><td>British Airways</td></tr><tr><td>Budapest</td><td>Paris</td><td>NaN</td><td>[13]</td><td> Air France</td></tr><tr><td>Brussels</td><td>London</td><td>10085.000000</td><td>[67, 32]</td><td>Swiss Air</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 5</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From: String\\\">From</span>\", children: [], rightAlign: false, values: [\"London\",\"Madrid\",\"London\",\"Budapest\",\"Brussels\"] }, \n", | |
"{ name: \"<span title=\\\"To: String\\\">To</span>\", children: [], rightAlign: false, values: [\"Paris\",\"Milan\",\"Stockholm\",\"Paris\",\"London\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Double\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"RecentDelays: List<Int>\\\">RecentDelays</span>\", children: [], rightAlign: false, values: [\"<span class=\\\"formatted\\\" title=\\\"23\\n47\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">23</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">47</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"null\\\">[ ]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"24\\n43\\n87\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">24</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">43</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">87</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"13\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">13</span><span class=\\\"structural\\\">]</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"67\\n32\\\"><span class=\\\"structural\\\">[</span><span class=\\\"numbers\\\">67</span><span class=\\\"structural\\\">, </span><span class=\\\"numbers\\\">32</span><span class=\\\"structural\\\">]</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM\",\"Air France\",\"British Airways\",\" Air France\",\"Swiss Air\"] }, \n", | |
"], id: -721420204, rootId: -721420204, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420204) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420203\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 59, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df2 = df2.update { Airline }.with {\n", | |
" \"([a-zA-Z\\\\s]+)\".toRegex().find(it)?.value ?: \"\"\n", | |
" }\n", | |
"df2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"**40.** In the **RecentDelays** column, the values have been entered into the DataFrame as a list. We would like each first value in its own column, each second value in its own column, and so on. If there isn't an Nth value, the value should be NaN.\n", | |
"\n", | |
"Expand the column of lists into columns named 'delays_' and replace the unwanted RecentDelays column in `df` with 'delays'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":7,\"columns\":[\"From\",\"To\",\"FlightNumber\",\"delay_1\",\"delay_2\",\"delay_3\",\"Airline\"],\"kotlin_dataframe\":[{\"From\":\"London\",\"To\":\"Paris\",\"FlightNumber\":10045.0,\"delay_1\":23.0,\"delay_2\":47.0,\"delay_3\":\"NaN\",\"Airline\":\"KLM\"},{\"From\":\"Madrid\",\"To\":\"Milan\",\"FlightNumber\":\"NaN\",\"delay_1\":\"NaN\",\"delay_2\":\"NaN\",\"delay_3\":\"NaN\",\"Airline\":\"Air France\"},{\"From\":\"London\",\"To\":\"Stockholm\",\"FlightNumber\":10065.0,\"delay_1\":24.0,\"delay_2\":43.0,\"delay_3\":87.0,\"Airline\":\"British Airways\"},{\"From\":\"Budapest\",\"To\":\"Paris\",\"FlightNumber\":\"NaN\",\"delay_1\":13.0,\"delay_2\":\"NaN\",\"delay_3\":\"NaN\",\"Airline\":\" Air France\"},{\"From\":\"Brussels\",\"To\":\"London\",\"FlightNumber\":10085.0,\"delay_1\":67.0,\"delay_2\":32.0,\"delay_3\":\"NaN\",\"Airline\":\"Swiss Air\"}]}", | |
"text/html": [ | |
" <html>\n", | |
" <head>\n", | |
" <style type=\"text/css\">\n", | |
" :root {\n", | |
" --background: #fff;\n", | |
" --background-odd: #f5f5f5;\n", | |
" --background-hover: #d9edfd;\n", | |
" --header-text-color: #474747;\n", | |
" --text-color: #848484;\n", | |
" --text-color-dark: #000;\n", | |
" --text-color-medium: #737373;\n", | |
" --text-color-pale: #b3b3b3;\n", | |
" --inner-border-color: #aaa;\n", | |
" --bold-border-color: #000;\n", | |
" --link-color: #296eaa;\n", | |
" --link-color-pale: #296eaa;\n", | |
" --link-hover: #1a466c;\n", | |
"}\n", | |
"\n", | |
":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", | |
" --background: #303030;\n", | |
" --background-odd: #3c3c3c;\n", | |
" --background-hover: #464646;\n", | |
" --header-text-color: #dddddd;\n", | |
" --text-color: #b3b3b3;\n", | |
" --text-color-dark: #dddddd;\n", | |
" --text-color-medium: #b2b2b2;\n", | |
" --text-color-pale: #737373;\n", | |
" --inner-border-color: #707070;\n", | |
" --bold-border-color: #777777;\n", | |
" --link-color: #008dc0;\n", | |
" --link-color-pale: #97e1fb;\n", | |
" --link-hover: #00688e;\n", | |
"}\n", | |
"\n", | |
"p.dataframe_description {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe {\n", | |
" font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", | |
" font-size: 12px;\n", | |
" background-color: var(--background);\n", | |
" color: var(--text-color-dark);\n", | |
" border: none;\n", | |
" border-collapse: collapse;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th, td {\n", | |
" padding: 6px;\n", | |
" border: 1px solid transparent;\n", | |
" text-align: left;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th {\n", | |
" background-color: var(--background);\n", | |
" color: var(--header-text-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td {\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.bottomBorder {\n", | |
" border-bottom-color: var(--bold-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(odd) {\n", | |
" background: var(--background-odd);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:nth-child(even) {\n", | |
" background: var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tbody > tr:hover {\n", | |
" background: var(--background-hover);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a {\n", | |
" cursor: pointer;\n", | |
" color: var(--link-color);\n", | |
" text-decoration: none;\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover > td a {\n", | |
" color: var(--link-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe a:hover {\n", | |
" color: var(--link-hover);\n", | |
" text-decoration: underline;\n", | |
"}\n", | |
"\n", | |
"table.dataframe img {\n", | |
" max-width: fit-content;\n", | |
"}\n", | |
"\n", | |
"table.dataframe th.complex {\n", | |
" background-color: var(--background);\n", | |
" border: 1px solid var(--background);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .leftBorder {\n", | |
" border-left-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightBorder {\n", | |
" border-right-color: var(--inner-border-color);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .rightAlign {\n", | |
" text-align: right;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expanderSvg {\n", | |
" width: 8px;\n", | |
" height: 8px;\n", | |
" margin-right: 3px;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .expander {\n", | |
" display: flex;\n", | |
" align-items: center;\n", | |
"}\n", | |
"\n", | |
"/* formatting */\n", | |
"\n", | |
"table.dataframe .null {\n", | |
" color: var(--text-color-pale);\n", | |
"}\n", | |
"\n", | |
"table.dataframe .structural {\n", | |
" color: var(--text-color-medium);\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .dataFrameCaption {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
"table.dataframe .numbers {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe td:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"table.dataframe tr:hover .formatted .structural, .null {\n", | |
" color: var(--text-color-dark);\n", | |
"}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
" </style>\n", | |
" </head>\n", | |
" <body>\n", | |
" \n", | |
"<table class=\"dataframe\" id=\"df_-721420202\"></table>\n", | |
"\n", | |
"<table class=\"dataframe\" id=\"static_df_-721420201\"><thead><tr><th>From</th><th>To</th><th>FlightNumber</th><th>delay_1</th><th>delay_2</th><th>delay_3</th><th>Airline</th></tr></thead><tbody><tr><td>London</td><td>Paris</td><td>10045.000000</td><td>23.000000</td><td>47.000000</td><td>NaN</td><td>KLM</td></tr><tr><td>Madrid</td><td>Milan</td><td>NaN</td><td>NaN</td><td>NaN</td><td>NaN</td><td>Air France</td></tr><tr><td>London</td><td>Stockholm</td><td>10065.000000</td><td>24.000000</td><td>43.000000</td><td>87.000000</td><td>British Airways</td></tr><tr><td>Budapest</td><td>Paris</td><td>NaN</td><td>13.000000</td><td>NaN</td><td>NaN</td><td> Air France</td></tr><tr><td>Brussels</td><td>London</td><td>10085.000000</td><td>67.000000</td><td>32.000000</td><td>NaN</td><td>Swiss Air</td></tr></tbody></table>\n", | |
"<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 7</p>\n", | |
" </body>\n", | |
" <script>\n", | |
" \n", | |
"/*<!--*/\n", | |
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"From: String\\\">From</span>\", children: [], rightAlign: false, values: [\"London\",\"Madrid\",\"London\",\"Budapest\",\"Brussels\"] }, \n", | |
"{ name: \"<span title=\\\"To: String\\\">To</span>\", children: [], rightAlign: false, values: [\"Paris\",\"Milan\",\"Stockholm\",\"Paris\",\"London\"] }, \n", | |
"{ name: \"<span title=\\\"FlightNumber: Double\\\">FlightNumber</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10045.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10065.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">10085.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"delay_1: Double\\\">delay_1</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">23.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">24.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">13.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">67.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"delay_2: Double\\\">delay_2</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">47.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">43.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">32.0</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"delay_3: Double\\\">delay_3</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">87.0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">NaN</span></span>\"] }, \n", | |
"{ name: \"<span title=\\\"Airline: String\\\">Airline</span>\", children: [], rightAlign: false, values: [\"KLM\",\"Air France\",\"British Airways\",\" Air France\",\"Swiss Air\"] }, \n", | |
"], id: -721420202, rootId: -721420202, totalRows: 5 } ) });\n", | |
"/*-->*/\n", | |
"\n", | |
"call_DataFrame(function() { DataFrame.renderTable(-721420202) });\n", | |
"\n", | |
"document.getElementById(\"static_df_-721420201\").style.display = \"none\";\n", | |
"\n", | |
" </script>\n", | |
" </html>" | |
] | |
}, | |
"execution_count": 60, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"val prep_df = df2\n", | |
" .convert { RecentDelays }.with { it.map { it.toDouble() } }\n", | |
" .split { RecentDelays }.default(Double.NaN).into { \"delay_$it\" }\n", | |
"prep_df" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The DataFrame should look much better now:\n", | |
"\n", | |
"|From |To |FlightNumber |delay_1 |delay_2 |delay_3 |Airline |\n", | |
"|------------|----------|-----------------|---------------|---------------|---------------|----------------|\n", | |
"|London |Paris |10045 |23.000000 |47.000000 |NaN |KLM |\n", | |
"|Madrid |Milan |10055 |NaN |NaN |NaN |Air France |\n", | |
"|London |Stockholm |10065 |24.000000 |43.000000 |87.000000 |British Airways |\n", | |
"|Budapest |Paris |10075 |13.000000 |NaN |NaN | Air France |\n", | |
"|Brussels |London |10085 |67.000000 |32.000000 |NaN |Swiss Air |" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Kotlin", | |
"language": "kotlin", | |
"name": "kotlin" | |
}, | |
"language_info": { | |
"codemirror_mode": "text/x-kotlin", | |
"file_extension": ".kt", | |
"mimetype": "text/x-kotlin", | |
"name": "kotlin", | |
"nbconvert_exporter": "", | |
"pygments_lexer": "kotlin", | |
"version": "1.9.0" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment