12835 lines
1.4 MiB
Vendored
12835 lines
1.4 MiB
Vendored
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "90cc0c45",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Kotlin DataFrame: Getting Started\n",
|
||
"\n",
|
||
"## What is this\n",
|
||
"\n",
|
||
"This is a short introduction for those Kotlin developers, who are familiar at least with the syntax and basic concepts of Kotlin\n",
|
||
"\n",
|
||
"## What is this **not**\n",
|
||
"\n",
|
||
"This is not a guide that will help you to migrate from another language or technology to Kotlin DataFrame\n",
|
||
"\n",
|
||
"## What is Kotlin DataFrame\n",
|
||
"\n",
|
||
"_From now on I will refer to this library as \"KotlinDF\". Although it is not the official name, it's much shorter and comfortable to use._\n",
|
||
"\n",
|
||
"KotlinDF is a library to work with DataFrames. DataFrame is a simple representation of any table-like data that has columns and rows.\n",
|
||
"Anyone who has seen products like MS Excel is already familiar with DF: one can add/remove/operate on columns/rows/cells, name, etc.\n",
|
||
"\n",
|
||
"But of course programming gives us very powerful tools which are hard to use in spreadsheet editors — aggregations for example.\n",
|
||
"\n",
|
||
"## Getting started\n",
|
||
"\n",
|
||
"### Task\n",
|
||
"\n",
|
||
"https://movielens.org/ is an online service, providing recommendations based on user's taste.\n",
|
||
"Users may grade any movie from on a scale from 1 to 10, and some algorithm will give them recommendations based on their taste and the taste of other users.\n",
|
||
"\n",
|
||
"Indeed, this service should contain comprehensive information about movies and, of course, lots of information produced by users, like tags.\n",
|
||
"\n",
|
||
"You can collect data [here](https://grouplens.org/datasets/movielens/). We will use some example data.\n",
|
||
"\n",
|
||
"Today we're going to find the following information:\n",
|
||
"\n",
|
||
"1. Find the most popular genre of movies since 1920\n",
|
||
"2. Find the most tagged movie\n",
|
||
"\n",
|
||
"### Find the most popular genre of movies since 1920\n",
|
||
"\n",
|
||
"To query data, we should at first read it. Read it to a DF in our case. This is how we do that:"
|
||
]
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:51.491311Z",
|
||
"start_time": "2025-05-27T14:20:46.082916Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"%useLatestDescriptors\n",
|
||
"%use dataframe"
|
||
],
|
||
"id": "74cf06e74a2d456a",
|
||
"outputs": [],
|
||
"execution_count": 1
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:54.559862Z",
|
||
"start_time": "2025-05-27T14:20:51.507819Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "val rawMovies = DataFrame.read(\"movies.csv\")",
|
||
"id": "270f3eea1123fadf",
|
||
"outputs": [],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "51368a9d",
|
||
"metadata": {},
|
||
"source": [
|
||
"Yes, it's that simple!\n",
|
||
"KotlinDF determines a format itself and loads the data into a value, called `rawMovies`\n",
|
||
"\n",
|
||
"But how should we query this data? We don't even know what it looks like.\n",
|
||
"Let's explore it.\n",
|
||
"\n",
|
||
"This very basic statement will do the magic and will output the result:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "ca3dda7f",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:55.071183Z",
|
||
"start_time": "2025-05-27T14:20:54.579220Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"rawMovies.head()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_1()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_1\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617792"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 5, columnsCount = 3</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black (1997)","Bumblebee Movie (2007)","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men (2001)\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel (2001)\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Sun Conflicts: Part IV: A Novel Espair (1977)\">Sun Conflicts: Part IV: A Novel Espai<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy"] }, \n",
|
||
"], id: -1459617792, rootId: -1459617792, totalRows: 5 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617792) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_1() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_1\");\n",
|
||
" resize_iframe_out_1(elem);\n",
|
||
" setInterval(resize_iframe_out_1, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_1(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617791\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black (1997)</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie (2007)</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espai<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617791\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"}],\"nrow\":5,\"ncol\":3},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black (1997)\",\"genres\":\"Fantasy|Suspenseful|Comedy\"},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie (2007)\",\"genres\":\"Comedy|Jazz|Family|Animation\"},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men (2001)\",\"genres\":\"Fantasy|Growing up|Magic\"},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel (2001)\",\"genres\":\"Fantasy|Magic|Suspenseful\"},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair (1977)\",\"genres\":\"Fantasy\"}]}"
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 3
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0d1b25d6",
|
||
"metadata": {},
|
||
"source": [
|
||
"The structure is simple, right? Just three columns:\n",
|
||
"\n",
|
||
"1. movieId\n",
|
||
"2. title\n",
|
||
"3. genres\n",
|
||
"\n",
|
||
"_NB: Interesting observation: without any effort from our side, KotlinDF already determined the type of each column._\n",
|
||
"\n",
|
||
"And furthermore, we can already see how to solve our first task.\n",
|
||
"\n",
|
||
"What do we need to do?\n",
|
||
"\n",
|
||
"1. Extract the year to a separate column\n",
|
||
"2. If the year is not known — remove the movie from our DF — it's not relevant for us\n",
|
||
"3. Remove the year from the title (because it's not an actual part of the title)\n",
|
||
"4. If genre is `(no genres listed)` — remove the movie from our DF — it's irrelevant for us\n",
|
||
"5. Split genres by `|` simple\n",
|
||
"6. Convert each row with multiple genres into multiple rows with a single genre each\n",
|
||
"7. Group the data by year and genre\n",
|
||
"8. Count the number of movies in each year-genre bucket\n",
|
||
"\n",
|
||
"#### Extract the year to a separate column\n",
|
||
"\n",
|
||
"To add a column based on another column, we can use the `add` function. In our case it will look like this:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "c6e55d9e",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:56.077515Z",
|
||
"start_time": "2025-05-27T14:20:55.078446Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"val moviesWithYear = rawMovies\n",
|
||
" .add(\"year\"/* ① */) {\n",
|
||
" \"\\\\d{4}\".toRegex() /* ② */\n",
|
||
" .findAll(title/* ③ */)\n",
|
||
" .lastOrNull()/* ④ */\n",
|
||
" ?.value\n",
|
||
" ?.toInt()/* ⑤ */\n",
|
||
" ?: -1 /* ⑥ */\n",
|
||
" }"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 4
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fbbb48d2",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's look at all interesting places in this expression.\n",
|
||
"\n",
|
||
"- ① - We're adding a column named `year`\n",
|
||
"- ② - To add a column, we'll use the regular expression `\\\\d{4}`; this just looks for any consecutive four digits\n",
|
||
"- ③ - thanks to jupyter's magic, we can call the column just by name! In other environments the syntax may be a bit more cluttered, for example `\"title\"<String>()`. _However, when the [compiler plugin is enabled](https://kotlin.github.io/dataframe/compiler-plugin.html), the same notation works in any project!_\n",
|
||
"- ④ - We are looking for the latest possible appearance of 4-digit sequences, or, if there are no such sequences we return `null`.\n",
|
||
"- ⑤ - If it exists we're casting it to `Int`\n",
|
||
"- ⑥ - Otherwise we're returning `-1`. We have a strong belief that there are no movies filmed before 0 AD...\n",
|
||
" \n",
|
||
"Let's check if we've achieved our first goal, by calling `head` again. The output is:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "6bcdbe7e",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:56.296976Z",
|
||
"start_time": "2025-05-27T14:20:56.096706Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"moviesWithYear.head()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_2()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_2\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617790"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 5, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black (1997)","Bumblebee Movie (2007)","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men (2001)\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel (2001)\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Sun Conflicts: Part IV: A Novel Espair (1977)\">Sun Conflicts: Part IV: A Novel Espai<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>"] }, \n",
|
||
"], id: -1459617790, rootId: -1459617790, totalRows: 5 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617790) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_2() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_2\");\n",
|
||
" resize_iframe_out_2(elem);\n",
|
||
" setInterval(resize_iframe_out_2, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_2(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617789\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black (1997)</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie (2007)</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espai<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617789\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":5,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black (1997)\",\"genres\":\"Fantasy|Suspenseful|Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie (2007)\",\"genres\":\"Comedy|Jazz|Family|Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men (2001)\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel (2001)\",\"genres\":\"Fantasy|Magic|Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair (1977)\",\"genres\":\"Fantasy\",\"year\":1977}]}"
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 5
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2f03354c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Looks fine!\n",
|
||
"\n",
|
||
"#### Now let's remove year from the title\n",
|
||
"\n",
|
||
"For this we will use the `update` function. The regex here might look complex, so here is a small explanation of it:\n",
|
||
"\n",
|
||
"```java\n",
|
||
"\"\\\\s\" + // Match a single character that is a “whitespace character”\n",
|
||
" \"*\" + // Between zero and unlimited times, as many times as possible, giving back as needed\n",
|
||
"\"\\\\\\(\" + // Match the opening parenthesis character\n",
|
||
"\"\\\\d\" + // Match a single character that is a “digit”\n",
|
||
" \"{4}\" + // Exactly 4 times\n",
|
||
"\"\\\\\\)\" + // Match the closing parenthesis character\n",
|
||
"\"\\\\s\" + // Match a single character that is a “whitespace character”\n",
|
||
" \"*\" + // Between zero and unlimited times, as many times as possible, giving back as needed\n",
|
||
"\"$\" // Assert position at the end of the string, or before the line break at the end of the string, if any\n",
|
||
"```"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "e9d93026",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:56.585030Z",
|
||
"start_time": "2025-05-27T14:20:56.306499Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"val movies = moviesWithYear\n",
|
||
" .update(\"title\") {\n",
|
||
" \"\\\\s*\\\\(\\\\d{4}\\\\)\\\\s*$\".toRegex().replace(title, \"\")\n",
|
||
" }"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 6
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6caf6df7",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Remove movies older than 1920\n",
|
||
"\n",
|
||
"Filtering is quite easy, we need to just call the `filter function`, like this:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "b1c3ea1b",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:56.891455Z",
|
||
"start_time": "2025-05-27T14:20:56.590909Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies.filter { year >= 1920 }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_3()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_3\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617788"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 20, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524","2bb29b3a245e434fa80542e711fd2cee"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>","This is No Movie"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy","Fantasy|Superhero|Family","Horror|Existential","Sci-fi|Futuristic","Family|Drama","Superhero|Fantasy|Family|Growing up","Comedy|Drama","Drama|History|Family|Romance","Animation|Family","Animation|Family","Fantasy|Superhero|Family","Fantasy|Superhero|Family|Horror","Horror","Horror","Comedy","(no genres listed)"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1950</span></span>"] }, \n",
|
||
"], id: -1459617788, rootId: -1459617788, totalRows: 20 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617788) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_3() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_3\");\n",
|
||
" resize_iframe_out_3(elem);\n",
|
||
" setInterval(resize_iframe_out_3, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_3(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617787\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">Family|Drama</td><td style=\"vertical-align:top\">1994</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">Superhero|Fantasy|Family|Growing up</td><td style=\"vertical-align:top\">2002</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">Comedy|Drama</td><td style=\"vertical-align:top\">2003</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">Drama|History|Family|Romance</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">2006</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">1995</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2010</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family|Horror</td><td style=\"vertical-align:top\">2022</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1984</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1980</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2006</td></tr><tr><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">This is No Movie</td><td style=\"vertical-align:top\">(no genres listed)</td><td style=\"vertical-align:top\">1950</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617787\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":20,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy|Suspenseful|Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy|Jazz|Family|Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy|Magic|Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"genres\":\"Family|Drama\",\"year\":1994},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"genres\":\"Superhero|Fantasy|Family|Growing up\",\"year\":2002},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"genres\":\"Comedy|Drama\",\"year\":2003},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"genres\":\"Drama|History|Family|Romance\",\"year\":1997},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"genres\":\"Animation|Family\",\"year\":2006},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"genres\":\"Animation|Family\",\"year\":1995},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2010},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"genres\":\"Fantasy|Superhero|Family|Horror\",\"year\":2022},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"genres\":\"Horror\",\"year\":1984},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"genres\":\"Horror\",\"year\":1980},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"genres\":\"Comedy\",\"year\":2006},{\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"title\":\"This is No Movie\",\"genres\":\"(no genres listed)\",\"year\":1950}]}"
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 7
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "b9396ccb",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Remove lines where genre is `(no genres listed)`\n",
|
||
"\n",
|
||
"It's quite a simple operation again, just one more filter"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "b40766a9",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:57.192042Z",
|
||
"start_time": "2025-05-27T14:20:56.897102Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 }\n",
|
||
" .filter { genres != \"(no genres listed)\" }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_4()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_4\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617786"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 19, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy","Fantasy|Superhero|Family","Horror|Existential","Sci-fi|Futuristic","Family|Drama","Superhero|Fantasy|Family|Growing up","Comedy|Drama","Drama|History|Family|Romance","Animation|Family","Animation|Family","Fantasy|Superhero|Family","Fantasy|Superhero|Family|Horror","Horror","Horror","Comedy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>"] }, \n",
|
||
"], id: -1459617786, rootId: -1459617786, totalRows: 19 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617786) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_4() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_4\");\n",
|
||
" resize_iframe_out_4(elem);\n",
|
||
" setInterval(resize_iframe_out_4, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_4(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617785\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">Family|Drama</td><td style=\"vertical-align:top\">1994</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">Superhero|Fantasy|Family|Growing up</td><td style=\"vertical-align:top\">2002</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">Comedy|Drama</td><td style=\"vertical-align:top\">2003</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">Drama|History|Family|Romance</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">2006</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">1995</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2010</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family|Horror</td><td style=\"vertical-align:top\">2022</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1984</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1980</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2006</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617785\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":19,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy|Suspenseful|Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy|Jazz|Family|Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy|Magic|Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"genres\":\"Family|Drama\",\"year\":1994},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"genres\":\"Superhero|Fantasy|Family|Growing up\",\"year\":2002},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"genres\":\"Comedy|Drama\",\"year\":2003},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"genres\":\"Drama|History|Family|Romance\",\"year\":1997},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"genres\":\"Animation|Family\",\"year\":2006},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"genres\":\"Animation|Family\",\"year\":1995},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2010},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"genres\":\"Fantasy|Superhero|Family|Horror\",\"year\":2022},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"genres\":\"Horror\",\"year\":1984},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"genres\":\"Horror\",\"year\":1980},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"genres\":\"Comedy\",\"year\":2006}]}"
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e4f82cc7",
|
||
"metadata": {},
|
||
"source": [
|
||
"Or you can do everything in one filter"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "ea387005",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:57.454931Z",
|
||
"start_time": "2025-05-27T14:20:57.196797Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies.filter { year >= 1920 && genres != \"(no genres listed)\" }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_5()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_5\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617784"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 19, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy","Fantasy|Superhero|Family","Horror|Existential","Sci-fi|Futuristic","Family|Drama","Superhero|Fantasy|Family|Growing up","Comedy|Drama","Drama|History|Family|Romance","Animation|Family","Animation|Family","Fantasy|Superhero|Family","Fantasy|Superhero|Family|Horror","Horror","Horror","Comedy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>"] }, \n",
|
||
"], id: -1459617784, rootId: -1459617784, totalRows: 19 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617784) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_5() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_5\");\n",
|
||
" resize_iframe_out_5(elem);\n",
|
||
" setInterval(resize_iframe_out_5, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_5(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617783\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">Family|Drama</td><td style=\"vertical-align:top\">1994</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">Superhero|Fantasy|Family|Growing up</td><td style=\"vertical-align:top\">2002</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">Comedy|Drama</td><td style=\"vertical-align:top\">2003</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">Drama|History|Family|Romance</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">2006</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">Animation|Family</td><td style=\"vertical-align:top\">1995</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2010</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family|Horror</td><td style=\"vertical-align:top\">2022</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1984</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1980</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2006</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617783\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":19,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy|Suspenseful|Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy|Jazz|Family|Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy|Magic|Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"genres\":\"Family|Drama\",\"year\":1994},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"genres\":\"Superhero|Fantasy|Family|Growing up\",\"year\":2002},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"genres\":\"Comedy|Drama\",\"year\":2003},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"genres\":\"Drama|History|Family|Romance\",\"year\":1997},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"genres\":\"Animation|Family\",\"year\":2006},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"genres\":\"Animation|Family\",\"year\":1995},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2010},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"genres\":\"Fantasy|Superhero|Family|Horror\",\"year\":2022},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"genres\":\"Horror\",\"year\":1984},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"genres\":\"Horror\",\"year\":1980},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"genres\":\"Comedy\",\"year\":2006}]}"
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 9
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "98b6251c",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Split genres by the \"`|`\" symbol\n",
|
||
"\n",
|
||
"Here we meet the next exciting concept of KotlinDF: built-in column operations.\n",
|
||
"Most of them can be called right on a dataframe!\n",
|
||
"One of them is the `split` operation."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "a9010baa",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:57.900212Z",
|
||
"start_time": "2025-05-27T14:20:57.461309Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").inplace()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_6()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_6\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617782"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 19, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: List<String>\">genres</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Fantasy\nSuspenseful\nComedy\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Suspenseful<span class=\"structural\">, </span>Comedy<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Comedy\nJazz\nFamily\nAnimation\"><span class=\"structural\">[</span>Comedy<span class=\"structural\">, </span>Jazz<span class=\"structural\">, </span>Family<span class=\"structural\">, </span>Animation<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\nGrowing up\nMagic\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Growing up<span class=\"structural\">, </span>Magic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\nMagic\nSuspenseful\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Magic<span class=\"structural\">, </span>Suspenseful<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\nSuperhero\nFamily\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Superhero<span class=\"structural\">, </span>Family<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Horror\nExistential\"><span class=\"structural\">[</span>Horror<span class=\"structural\">, </span>Existential<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Sci-fi\nFuturistic\"><span class=\"structural\">[</span>Sci-fi<span class=\"structural\">, </span>Futuristic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Family\nDrama\"><span class=\"structural\">[</span>Family<span class=\"structural\">, </span>Drama<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Superhero\nFantasy\nFamily\nGrowing up\"><span class=\"structural\">[</span>Superhero<span class=\"structural\">, </span>Fantasy<span class=\"structural\">, </span>Family<span class=\"structural\">, </span>Growing up<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Comedy\nDrama\"><span class=\"structural\">[</span>Comedy<span class=\"structural\">, </span>Drama<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Drama\nHistory\nFamily\nRomance\"><span class=\"structural\">[</span>Drama<span class=\"structural\">, </span>History<span class=\"structural\">, </span>Family<span class=\"structural\">, </span>Romance<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Animation\nFamily\"><span class=\"structural\">[</span>Animation<span class=\"structural\">, </span>Family<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Animation\nFamily\"><span class=\"structural\">[</span>Animation<span class=\"structural\">, </span>Family<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\nSuperhero\nFamily\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Superhero<span class=\"structural\">, </span>Family<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Fantasy\nSuperhero\nFamily\nHorror\"><span class=\"structural\">[</span>Fantasy<span class=\"structural\">, </span>Superhero<span class=\"structural\">, </span>Family<span class=\"structural\">, </span>Horror<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Horror\"><span class=\"structural\">[</span>Horror<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Horror\"><span class=\"structural\">[</span>Horror<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Comedy\"><span class=\"structural\">[</span>Comedy<span class=\"structural\">]</span></span>"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>"] }, \n",
|
||
"], id: -1459617782, rootId: -1459617782, totalRows: 19 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617782) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_6() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_6\");\n",
|
||
" resize_iframe_out_6(elem);\n",
|
||
" setInterval(resize_iframe_out_6, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_6(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617781\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">[Fantasy, Suspenseful, Comedy]</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">[Comedy, Jazz, Family, Animation]</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[Fantasy, Growing up, Magic]</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[Fantasy, Magic, Suspenseful]</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">[Fantasy]</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">[Fantasy, Superhero, Family]</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">[Horror, Existential]</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">[Sci-fi, Futuristic]</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">[Family, Drama]</td><td style=\"vertical-align:top\">1994</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">[Superhero, Fantasy, Family, Growing up]</td><td style=\"vertical-align:top\">2002</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">[Comedy, Drama]</td><td style=\"vertical-align:top\">2003</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">[Drama, History, Family, Romance]</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">[Animation, Family]</td><td style=\"vertical-align:top\">2006</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">[Animation, Family]</td><td style=\"vertical-align:top\">1995</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">[Fantasy, Superhero, Family]</td><td style=\"vertical-align:top\">2010</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">[Fantasy, Superhero, Family, Horror]</td><td style=\"vertical-align:top\">2022</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">[Horror]</td><td style=\"vertical-align:top\">1984</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">[Horror]</td><td style=\"vertical-align:top\">1980</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[Comedy]</td><td style=\"vertical-align:top\">2006</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617781\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":19,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":[\"Fantasy\",\"Suspenseful\",\"Comedy\"],\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":[\"Comedy\",\"Jazz\",\"Family\",\"Animation\"],\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":[\"Fantasy\",\"Growing up\",\"Magic\"],\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":[\"Fantasy\",\"Magic\",\"Suspenseful\"],\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":[\"Fantasy\"],\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":[\"Fantasy\",\"Superhero\",\"Family\"],\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":[\"Horror\",\"Existential\"],\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":[\"Sci-fi\",\"Futuristic\"],\"year\":2014},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"genres\":[\"Family\",\"Drama\"],\"year\":1994},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"genres\":[\"Superhero\",\"Fantasy\",\"Family\",\"Growing up\"],\"year\":2002},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"genres\":[\"Comedy\",\"Drama\"],\"year\":2003},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"genres\":[\"Drama\",\"History\",\"Family\",\"Romance\"],\"year\":1997},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"genres\":[\"Animation\",\"Family\"],\"year\":2006},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"genres\":[\"Animation\",\"Family\"],\"year\":1995},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"genres\":[\"Fantasy\",\"Superhero\",\"Family\"],\"year\":2010},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"genres\":[\"Fantasy\",\"Superhero\",\"Family\",\"Horror\"],\"year\":2022},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"genres\":[\"Horror\"],\"year\":1984},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"genres\":[\"Horror\"],\"year\":1980},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"genres\":[\"Comedy\"],\"year\":2006}]}"
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 10
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "eee011ae",
|
||
"metadata": {},
|
||
"source": [
|
||
"_NB: the whole `split` operation is type-safe. We cannot call other operations on DF until we will finish splitting._\n",
|
||
"\n",
|
||
"`inplace` here means that we want to replace current `genres` column with new content: string -> list of strings."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5e565279",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Convert each row with multiple genres into multiple rows having a single genre each\n",
|
||
"\n",
|
||
"There is a special function right for this task: `explode`!\n",
|
||
"And again, despite it being an operation on a column, we can call it on a DF by selecting which columns to explode."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "92cba457",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:58.275907Z",
|
||
"start_time": "2025-05-27T14:20:57.906111Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").inplace()\n",
|
||
" .explode { genres }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_7()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_7\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617780"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 47 rows</p><p class="dataframe_description">DataFrame: rowsCount = 47, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","9b30aff7943f44579e92c261f3adc193","9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","f44ceb4771504342bb856d76c112d5a6","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","43d02fb064514ff3bd30d1e3a7398357","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","eace16e59ce24eff90bf8924eb6a926c","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Women in Black","Women in Black","Bumblebee Movie","Bumblebee Movie","Bumblebee Movie","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","The Outstanding Bulk","The Outstanding Bulk","In Automata","In Automata","Interplanetary"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy","Suspenseful","Comedy","Comedy","Jazz","Family","Animation","Fantasy","Growing up","Magic","Fantasy","Magic","Suspenseful","Fantasy","Fantasy","Superhero","Family","Horror","Existential","Sci-fi"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617780, rootId: -1459617780, totalRows: 47 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617780) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_7() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_7\");\n",
|
||
" resize_iframe_out_7(elem);\n",
|
||
" setInterval(resize_iframe_out_7, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_7(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617779\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Jazz</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Growing up</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Superhero</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Existential</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617779\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":47,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy\",\"year\":1997},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Suspenseful\",\"year\":1997},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Jazz\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Family\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy\",\"year\":2001},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Growing up\",\"year\":2001},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy\",\"year\":2008},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Superhero\",\"year\":2008},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Family\",\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror\",\"year\":2014},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Existential\",\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi\",\"year\":2014}]}"
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 11
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "fba59f32",
|
||
"metadata": {},
|
||
"source": [
|
||
"To make it even easier, we can immediately split the column into lines."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "744c8f49",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:58.564989Z",
|
||
"start_time": "2025-05-27T14:20:58.281609Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").intoRows()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_8()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_8\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617778"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 47 rows</p><p class="dataframe_description">DataFrame: rowsCount = 47, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","9b30aff7943f44579e92c261f3adc193","9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","f44ceb4771504342bb856d76c112d5a6","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","43d02fb064514ff3bd30d1e3a7398357","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","eace16e59ce24eff90bf8924eb6a926c","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Women in Black","Women in Black","Bumblebee Movie","Bumblebee Movie","Bumblebee Movie","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","The Outstanding Bulk","The Outstanding Bulk","In Automata","In Automata","Interplanetary"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy","Suspenseful","Comedy","Comedy","Jazz","Family","Animation","Fantasy","Growing up","Magic","Fantasy","Magic","Suspenseful","Fantasy","Fantasy","Superhero","Family","Horror","Existential","Sci-fi"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617778, rootId: -1459617778, totalRows: 47 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617778) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_8() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_8\");\n",
|
||
" resize_iframe_out_8(elem);\n",
|
||
" setInterval(resize_iframe_out_8, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_8(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617777\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">1997</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Jazz</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Animation</td><td style=\"vertical-align:top\">2007</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Growing up</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Superhero</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2008</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Existential</td><td style=\"vertical-align:top\">2014</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617777\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":47,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy\",\"year\":1997},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Suspenseful\",\"year\":1997},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Comedy\",\"year\":1997},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Jazz\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Family\",\"year\":2007},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Animation\",\"year\":2007},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy\",\"year\":2001},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Growing up\",\"year\":2001},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Suspenseful\",\"year\":2001},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy\",\"year\":2008},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Superhero\",\"year\":2008},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Family\",\"year\":2008},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror\",\"year\":2014},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Existential\",\"year\":2014},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi\",\"year\":2014}]}"
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 12
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6cfb6144",
|
||
"metadata": {},
|
||
"source": [
|
||
"Now the data is clean enough, analytics can start!\n",
|
||
"\n",
|
||
"#### Grouping\n",
|
||
"\n",
|
||
"The first thing we should do here is to group the data by year and genre:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "0e7e5b3a",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:59.133144Z",
|
||
"start_time": "2025-05-27T14:20:58.568486Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").intoRows()\n",
|
||
" .groupBy { year and genres }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_9()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_9\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617776"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 45 rows</p><p class="dataframe_description">GroupBy</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy","Suspenseful","Comedy","Comedy","Jazz","Family","Animation","Fantasy","Growing up","Magic","Suspenseful","Fantasy","Fantasy","Superhero","Family","Horror","Existential","Sci-fi","Futuristic","Family"] }, \n",
|
||
"{ name: "<span title=\"group: DataFrame<*>\">group</span>", children: [], rightAlign: false, values: [{ frameId: -1459617775, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617774, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617773, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617772, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617771, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617770, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617769, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617768, value: "<b>DataFrame 2 x 4</b>" },{ frameId: -1459617767, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617766, value: "<b>DataFrame 2 x 4</b>" },{ frameId: -1459617765, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617764, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617763, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617762, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617761, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617760, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617759, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617758, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617757, value: "<b>DataFrame 1 x 4</b>" },{ frameId: -1459617756, value: "<b>DataFrame 1 x 4</b>" }] }, \n",
|
||
"], id: -1459617776, rootId: -1459617776, totalRows: 45 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>"] }, \n",
|
||
"], id: -1459617775, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Suspenseful"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>"] }, \n",
|
||
"], id: -1459617774, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Comedy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>"] }, \n",
|
||
"], id: -1459617773, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["2a1ba1fc5caf492a80188e032995843e"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Bumblebee Movie"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Comedy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>"] }, \n",
|
||
"], id: -1459617772, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["2a1ba1fc5caf492a80188e032995843e"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Bumblebee Movie"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Jazz"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>"] }, \n",
|
||
"], id: -1459617771, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["2a1ba1fc5caf492a80188e032995843e"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Bumblebee Movie"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Family"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>"] }, \n",
|
||
"], id: -1459617770, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["2a1ba1fc5caf492a80188e032995843e"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Bumblebee Movie"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Animation"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>"] }, \n",
|
||
"], id: -1459617769, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy","Fantasy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>"] }, \n",
|
||
"], id: -1459617768, rootId: -1459617776, totalRows: 2 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["f44ceb4771504342bb856d76c112d5a6"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Growing up"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>"] }, \n",
|
||
"], id: -1459617767, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Magic","Magic"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>"] }, \n",
|
||
"], id: -1459617766, rootId: -1459617776, totalRows: 2 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["43d02fb064514ff3bd30d1e3a7398357"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Suspenseful"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>"] }, \n",
|
||
"], id: -1459617765, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["6aa0d26a483148998c250b9c80ddf550"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Sun Conflicts: Part IV: A Novel Espair"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>"] }, \n",
|
||
"], id: -1459617764, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["eace16e59ce24eff90bf8924eb6a926c"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["The Outstanding Bulk"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>"] }, \n",
|
||
"], id: -1459617763, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["eace16e59ce24eff90bf8924eb6a926c"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["The Outstanding Bulk"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Superhero"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>"] }, \n",
|
||
"], id: -1459617762, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["eace16e59ce24eff90bf8924eb6a926c"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["The Outstanding Bulk"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Family"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>"] }, \n",
|
||
"], id: -1459617761, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["ae916bc4844a4bb7b42b70d9573d05cd"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["In Automata"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Horror"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617760, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["ae916bc4844a4bb7b42b70d9573d05cd"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["In Automata"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Existential"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617759, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["c1f0a868aeb44c5ea8d154ec3ca295ac"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Interplanetary"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Sci-fi"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617758, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["c1f0a868aeb44c5ea8d154ec3ca295ac"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Interplanetary"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Futuristic"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"], id: -1459617757, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9595b771f87f42a3b8dd07d91e7cb328"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Woods Run"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Family"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>"] }, \n",
|
||
"], id: -1459617756, rootId: -1459617776, totalRows: 1 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617776) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_9() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_9\");\n",
|
||
" resize_iframe_out_9(elem);\n",
|
||
" setInterval(resize_iframe_out_9, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_9(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617755\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">year</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">group</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617754\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1997</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617753\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">1997</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617752\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">1997</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617751\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">2007</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Jazz</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617750\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Jazz</td><td style=\"vertical-align:top\">2007</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617749\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2007</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Animation</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617748\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Animation</td><td style=\"vertical-align:top\">2007</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [2 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617747\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2001</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Growing up</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617746\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Growing up</td><td style=\"vertical-align:top\">2001</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\"><details><summary>DataFrame [2 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617745\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2001</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617744\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">2001</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617743\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617742\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2008</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Superhero</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617741\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Superhero</td><td style=\"vertical-align:top\">2008</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617740\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">2008</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617739\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Existential</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617738\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Existential</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Sci-fi</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617737\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Futuristic</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617736\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Futuristic</td><td style=\"vertical-align:top\">2014</td></tr></tbody></table></details></td></tr><tr><td style=\"vertical-align:top\">1994</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\"><details><summary>DataFrame [1 x 4]</summary><table class=\"dataframe\" id=\"static_df_-1459617735\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">1994</td></tr></tbody></table></details></td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617755\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"year\",\"genres\",\"group\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"FrameColumn\"}],\"nrow\":45,\"ncol\":3},\"kotlin_dataframe\":[{\"year\":1997,\"genres\":\"Fantasy\",\"group\":{\"data\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy\",\"year\":1997}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":1997,\"genres\":\"Suspenseful\",\"group\":{\"data\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Suspenseful\",\"year\":1997}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":1997,\"genres\":\"Comedy\",\"group\":{\"data\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Comedy\",\"year\":1997}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2007,\"genres\":\"Comedy\",\"group\":{\"data\":[{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy\",\"year\":2007}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2007,\"genres\":\"Jazz\",\"group\":{\"data\":[{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Jazz\",\"year\":2007}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2007,\"genres\":\"Family\",\"group\":{\"data\":[{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Family\",\"year\":2007}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2007,\"genres\":\"Animation\",\"group\":{\"data\":[{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Animation\",\"year\":2007}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2001,\"genres\":\"Fantasy\",\"group\":{\"data\":[{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy\",\"year\":2001}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":2}}},{\"year\":2001,\"genres\":\"Growing up\",\"group\":{\"data\":[{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Growing up\",\"year\":2001}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2001,\"genres\":\"Magic\",\"group\":{\"data\":[{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Magic\",\"year\":2001},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Magic\",\"year\":2001}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":2}}},{\"year\":2001,\"genres\":\"Suspenseful\",\"group\":{\"data\":[{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Suspenseful\",\"year\":2001}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":1977,\"genres\":\"Fantasy\",\"group\":{\"data\":[{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2008,\"genres\":\"Fantasy\",\"group\":{\"data\":[{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy\",\"year\":2008}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2008,\"genres\":\"Superhero\",\"group\":{\"data\":[{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Superhero\",\"year\":2008}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2008,\"genres\":\"Family\",\"group\":{\"data\":[{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Family\",\"year\":2008}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2014,\"genres\":\"Horror\",\"group\":{\"data\":[{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror\",\"year\":2014}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2014,\"genres\":\"Existential\",\"group\":{\"data\":[{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Existential\",\"year\":2014}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2014,\"genres\":\"Sci-fi\",\"group\":{\"data\":[{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi\",\"year\":2014}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":2014,\"genres\":\"Futuristic\",\"group\":{\"data\":[{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Futuristic\",\"year\":2014}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}},{\"year\":1994,\"genres\":\"Family\",\"group\":{\"data\":[{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"genres\":\"Family\",\"year\":1994}],\"metadata\":{\"kind\":\"FrameColumn\",\"columns\":[\"movieId\",\"title\",\"genres\",\"year\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"ncol\":4,\"nrow\":1}}}]}"
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 13
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e155a45b",
|
||
"metadata": {},
|
||
"source": [
|
||
"_Several interesting observations here_\n",
|
||
"\n",
|
||
"1. We have a synthetic column called `group` here that contains dataframes inside. This means that DataFrames here are first-class citizens. DFs can contain other DFs up to infinite depth!\n",
|
||
"2. The returned type from previous is of type `GroupBy`, which allows us to perform special *aggregation* operations\n",
|
||
"\n",
|
||
"#### Counting movies in groups"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "99826ece",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:20:59.830212Z",
|
||
"start_time": "2025-05-27T14:20:59.138314Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").intoRows()\n",
|
||
" .groupBy { year and genres }.count()\n",
|
||
" .sortBy { it[\"count\"].desc() }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_10()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_10\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617734"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 45 rows</p><p class="dataframe_description">DataFrame: rowsCount = 45, columnsCount = 3</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy","Magic","Fantasy","Suspenseful","Comedy","Comedy","Jazz","Family","Animation","Growing up","Suspenseful","Fantasy","Fantasy","Superhero","Family","Horror","Existential","Sci-fi","Futuristic","Family"] }, \n",
|
||
"{ name: "<span title=\"count: Int\">count</span>", children: [], rightAlign: true, values: ["<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\">1</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\">1</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\">1</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\">1</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\">1</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\">1</span></span>"] }, \n",
|
||
"], id: -1459617734, rootId: -1459617734, totalRows: 45 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617734) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_10() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_10\");\n",
|
||
" resize_iframe_out_10(elem);\n",
|
||
" setInterval(resize_iframe_out_10, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_10(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617733\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">year</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">count</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">2</td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Magic</td><td style=\"vertical-align:top\">2</td></tr><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Comedy</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Jazz</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">Animation</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Growing up</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">Suspenseful</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Superhero</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Horror</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Existential</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Sci-fi</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">Futuristic</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">1994</td><td style=\"vertical-align:top\">Family</td><td style=\"vertical-align:top\">1</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617733\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"year\",\"genres\",\"count\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":45,\"ncol\":3},\"kotlin_dataframe\":[{\"year\":2001,\"genres\":\"Fantasy\",\"count\":2},{\"year\":2001,\"genres\":\"Magic\",\"count\":2},{\"year\":1997,\"genres\":\"Fantasy\",\"count\":1},{\"year\":1997,\"genres\":\"Suspenseful\",\"count\":1},{\"year\":1997,\"genres\":\"Comedy\",\"count\":1},{\"year\":2007,\"genres\":\"Comedy\",\"count\":1},{\"year\":2007,\"genres\":\"Jazz\",\"count\":1},{\"year\":2007,\"genres\":\"Family\",\"count\":1},{\"year\":2007,\"genres\":\"Animation\",\"count\":1},{\"year\":2001,\"genres\":\"Growing up\",\"count\":1},{\"year\":2001,\"genres\":\"Suspenseful\",\"count\":1},{\"year\":1977,\"genres\":\"Fantasy\",\"count\":1},{\"year\":2008,\"genres\":\"Fantasy\",\"count\":1},{\"year\":2008,\"genres\":\"Superhero\",\"count\":1},{\"year\":2008,\"genres\":\"Family\",\"count\":1},{\"year\":2014,\"genres\":\"Horror\",\"count\":1},{\"year\":2014,\"genres\":\"Existential\",\"count\":1},{\"year\":2014,\"genres\":\"Sci-fi\",\"count\":1},{\"year\":2014,\"genres\":\"Futuristic\",\"count\":1},{\"year\":1994,\"genres\":\"Family\",\"count\":1}]}"
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 14
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a1bd1f06",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's visualize this data and we'll see\n",
|
||
"\n",
|
||
"\n",
|
||
"In other notebooks, you will learn how to build visualizations like these using Kandy!"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "171dddcc",
|
||
"metadata": {},
|
||
"source": "An alternative way to visualize the data is to build a pivot table. The principle is basically the same."
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "21e73488",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:00.382384Z",
|
||
"start_time": "2025-05-27T14:20:59.834426Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").intoRows()\n",
|
||
" .sortBy { year and genres }\n",
|
||
" .groupBy { year }.pivot { genres }.count()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_11()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_11\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617732"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 15, columnsCount = 2</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Fantasy: Int\">Fantasy</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Horror: Int\">Horror</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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>","<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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Drama: Int\">Drama</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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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\">1</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>","<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=\"Family: Int\">Family</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\">1</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\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Animation: Int\">Animation</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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=\"Comedy: Int\">Comedy</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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\">1</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\">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=\"History: Int\">History</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Romance: Int\">Romance</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Suspenseful: Int\">Suspenseful</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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>","<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=\"Growing up: Int\">Growing up</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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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=\"Magic: Int\">Magic</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>","<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\">2</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Superhero: Int\">Superhero</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>","<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\">1</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>","<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\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Jazz: Int\">Jazz</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>","<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>","<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\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Existential: Int\">Existential</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Futuristic: Int\">Futuristic</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Sci-fi: Int\">Sci-fi</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: DataRow<*>\">genres</span>", children: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], rightAlign: false, values: ["<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 1\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 1\nFamily: 1\nAnimation: 0\nComedy: 1\nHistory: 1\nRomance: 1\nSuspenseful: 1\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 2\nHorror: 0\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 1\nGrowing up: 1\nMagic: 2\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">2</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 1\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 1\nFamily: 0\nAnimation: 0\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 1\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 1\nFuturistic: 1\nSci-fi: 1\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 1\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>"] }, \n",
|
||
"], id: -1459617732, rootId: -1459617732, totalRows: 15 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617732) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_11() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_11\");\n",
|
||
" resize_iframe_out_11(elem);\n",
|
||
" setInterval(resize_iframe_out_11, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_11(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617731\"><thead><tr><th class=\"rightBorder\" style=\"text-align:left\">year</th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">genres</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\">Fantasy</th><th class=\"bottomBorder\" style=\"text-align:left\">Horror</th><th class=\"bottomBorder\" style=\"text-align:left\">Drama</th><th class=\"bottomBorder\" style=\"text-align:left\">Family</th><th class=\"bottomBorder\" style=\"text-align:left\">Animation</th><th class=\"bottomBorder\" style=\"text-align:left\">Comedy</th><th class=\"bottomBorder\" style=\"text-align:left\">History</th><th class=\"bottomBorder\" style=\"text-align:left\">Romance</th><th class=\"bottomBorder\" style=\"text-align:left\">Suspenseful</th><th class=\"bottomBorder\" style=\"text-align:left\">Growing up</th><th class=\"bottomBorder\" style=\"text-align:left\">Magic</th><th class=\"bottomBorder\" style=\"text-align:left\">Superhero</th><th class=\"bottomBorder\" style=\"text-align:left\">Jazz</th><th class=\"bottomBorder\" style=\"text-align:left\">Existential</th><th class=\"bottomBorder\" style=\"text-align:left\">Futuristic</th><th class=\"bottomBorder\" style=\"text-align:left\">Sci-fi</th></tr></thead><tbody><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1977</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1980</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1984</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1994</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1995</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1997</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2001</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">2</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">2</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2002</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2003</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2006</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2007</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2008</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2010</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2014</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2022</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617731\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"year\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ColumnGroup\"}],\"nrow\":15,\"ncol\":2},\"kotlin_dataframe\":[{\"year\":1977,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1980,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1984,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1994,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":1,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1995,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1997,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":1,\"Family\":1,\"Animation\":0,\"Comedy\":1,\"History\":1,\"Romance\":1,\"Suspenseful\":1,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2001,\"genres\":{\"data\":{\"Fantasy\":2,\"Horror\":0,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":1,\"Growing up\":1,\"Magic\":2,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2002,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":1,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2003,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":1,\"Family\":0,\"Animation\":0,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2006,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2007,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":1,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2008,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2010,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2014,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":1,\"Futuristic\":1,\"Sci-fi\":1},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2022,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":1,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}}]}"
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 15
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9f298812",
|
||
"metadata": {},
|
||
"source": "`pivot { genres }.count()` can be replaced with a shortcut operation: `pivotCounts { genres }`"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "50cbf68b",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:00.876869Z",
|
||
"start_time": "2025-05-27T14:21:00.386655Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"movies\n",
|
||
" .filter { year >= 1920 && genres != \"(no genres listed)\" }\n",
|
||
" .split { genres }.by(\"|\").intoRows()\n",
|
||
" .sortBy { year and genres }\n",
|
||
" .groupBy { year }.pivotCounts { genres }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_12()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_12\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617730"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 15, columnsCount = 2</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1980</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1984</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1994</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1995</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2002</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2003</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2006</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2010</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2022</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Fantasy: Int\">Fantasy</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Horror: Int\">Horror</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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>","<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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Drama: Int\">Drama</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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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\">1</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>","<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=\"Family: Int\">Family</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\">1</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\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Animation: Int\">Animation</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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=\"Comedy: Int\">Comedy</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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\">1</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\">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=\"History: Int\">History</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Romance: Int\">Romance</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Suspenseful: Int\">Suspenseful</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</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\">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>","<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=\"Growing up: Int\">Growing up</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>","<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\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</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>","<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=\"Magic: Int\">Magic</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>","<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\">2</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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Superhero: Int\">Superhero</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>","<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\">1</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>","<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\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Jazz: Int\">Jazz</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>","<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>","<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\">1</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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Existential: Int\">Existential</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Futuristic: Int\">Futuristic</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"Sci-fi: Int\">Sci-fi</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>","<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>","<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>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">0</span></span>"] }, \n",
|
||
"{ name: "<span title=\"genres: DataRow<*>\">genres</span>", children: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], rightAlign: false, values: ["<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 1\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 1\nFamily: 1\nAnimation: 0\nComedy: 1\nHistory: 1\nRomance: 1\nSuspenseful: 1\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 2\nHorror: 0\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 1\nGrowing up: 1\nMagic: 2\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">2</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 1\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 1\nFamily: 0\nAnimation: 0\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 1\nComedy: 1\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 1\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 0\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 0\nHorror: 1\nDrama: 0\nFamily: 0\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 0\nJazz: 0\nExistential: 1\nFuturistic: 1\nSci-fi: 1\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"Fantasy: 1\nHorror: 1\nDrama: 0\nFamily: 1\nAnimation: 0\nComedy: 0\nHistory: 0\nRomance: 0\nSuspenseful: 0\nGrowing up: 0\nMagic: 0\nSuperhero: 1\nJazz: 0\nExistential: 0\nFuturistic: 0\nSci-fi: 0\"><span class=\"structural\">{ </span><span class=\"structural\">Fantasy: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Horror: </span><span class=\"numbers\">1</span><span class=\"structural\">, </span><span class=\"structural\">Drama: </span><span class=\"numbers\">0</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\"> }</span></span>"] }, \n",
|
||
"], id: -1459617730, rootId: -1459617730, totalRows: 15 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617730) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_12() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_12\");\n",
|
||
" resize_iframe_out_12(elem);\n",
|
||
" setInterval(resize_iframe_out_12, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_12(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617729\"><thead><tr><th class=\"rightBorder\" style=\"text-align:left\">year</th><th class=\"rightBorder leftBorder\" style=\"text-align:left\">genres</th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th><th style=\"text-align:left\"></th></tr><tr><th class=\"bottomBorder rightBorder\" style=\"text-align:left\"></th><th class=\"bottomBorder rightBorder leftBorder\" style=\"text-align:left\">Fantasy</th><th class=\"bottomBorder\" style=\"text-align:left\">Horror</th><th class=\"bottomBorder\" style=\"text-align:left\">Drama</th><th class=\"bottomBorder\" style=\"text-align:left\">Family</th><th class=\"bottomBorder\" style=\"text-align:left\">Animation</th><th class=\"bottomBorder\" style=\"text-align:left\">Comedy</th><th class=\"bottomBorder\" style=\"text-align:left\">History</th><th class=\"bottomBorder\" style=\"text-align:left\">Romance</th><th class=\"bottomBorder\" style=\"text-align:left\">Suspenseful</th><th class=\"bottomBorder\" style=\"text-align:left\">Growing up</th><th class=\"bottomBorder\" style=\"text-align:left\">Magic</th><th class=\"bottomBorder\" style=\"text-align:left\">Superhero</th><th class=\"bottomBorder\" style=\"text-align:left\">Jazz</th><th class=\"bottomBorder\" style=\"text-align:left\">Existential</th><th class=\"bottomBorder\" style=\"text-align:left\">Futuristic</th><th class=\"bottomBorder\" style=\"text-align:left\">Sci-fi</th></tr></thead><tbody><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1977</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1980</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1984</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1994</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1995</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">1997</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2001</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">2</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">2</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2002</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2003</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2006</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2007</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2008</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2010</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2014</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td></tr><tr><td class=\"rightBorder\" style=\"vertical-align:top\">2022</td><td class=\"rightBorder leftBorder\" style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">1</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td><td style=\"vertical-align:top\">0</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617729\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"year\",\"genres\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ColumnGroup\"}],\"nrow\":15,\"ncol\":2},\"kotlin_dataframe\":[{\"year\":1977,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1980,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1984,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1994,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":1,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1995,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":1997,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":1,\"Family\":1,\"Animation\":0,\"Comedy\":1,\"History\":1,\"Romance\":1,\"Suspenseful\":1,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2001,\"genres\":{\"data\":{\"Fantasy\":2,\"Horror\":0,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":1,\"Growing up\":1,\"Magic\":2,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2002,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":1,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2003,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":1,\"Family\":0,\"Animation\":0,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2006,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2007,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":1,\"Comedy\":1,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":1,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2008,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2010,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":0,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2014,\"genres\":{\"data\":{\"Fantasy\":0,\"Horror\":1,\"Drama\":0,\"Family\":0,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":0,\"Jazz\":0,\"Existential\":1,\"Futuristic\":1,\"Sci-fi\":1},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}},{\"year\":2022,\"genres\":{\"data\":{\"Fantasy\":1,\"Horror\":1,\"Drama\":0,\"Family\":1,\"Animation\":0,\"Comedy\":0,\"History\":0,\"Romance\":0,\"Suspenseful\":0,\"Growing up\":0,\"Magic\":0,\"Superhero\":1,\"Jazz\":0,\"Existential\":0,\"Futuristic\":0,\"Sci-fi\":0},\"metadata\":{\"kind\":\"ColumnGroup\",\"columns\":[\"Fantasy\",\"Horror\",\"Drama\",\"Family\",\"Animation\",\"Comedy\",\"History\",\"Romance\",\"Suspenseful\",\"Growing up\",\"Magic\",\"Superhero\",\"Jazz\",\"Existential\",\"Futuristic\",\"Sci-fi\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}]}}}]}"
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 16
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c612a76f",
|
||
"metadata": {},
|
||
"source": [
|
||
"Drama has been the most popular all these years! I was a bit shocked when I discovered it.\n",
|
||
"\n",
|
||
"Now let's move to the next part.\n",
|
||
"\n",
|
||
"### Find the most tagged movie\n",
|
||
"\n",
|
||
"Now you're familiar with the basics, we can skip several things, but here is what we're going to do:\n",
|
||
"\n",
|
||
"1. Read tags\n",
|
||
"2. Join movies with tags\n",
|
||
"3. Group by movie id\n",
|
||
"4. Aggregate all tags into a set (to remove duplicates, if any)\n",
|
||
"5. Get 10 top-tagged movies\n",
|
||
"6. ???\n",
|
||
"7. PROFIT\n",
|
||
"\n",
|
||
"First, let's read tags' data and explore its schema."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "77d58a44085dd8e3",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:26:52.443812Z",
|
||
"start_time": "2025-05-27T14:26:52.279869Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"val tags = DataFrame.read(\"../../../idea-examples/movies/src/main/resources/tags.csv\")\n",
|
||
"tags"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_35()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_35\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617644"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 38 rows</p><p class="dataframe_description">DataFrame: rowsCount = 38, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"userId: Int\">userId</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\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">84</span></span>"] }, \n",
|
||
"{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9595b771f87f42a3b8dd07d91e7cb328","6aa0d26a483148998c250b9c80ddf550","f24327f2b05147b197ca34bf13ae3524","ae916bc4844a4bb7b42b70d9573d05cd","f24327f2b05147b197ca34bf13ae3524","d4a325ab648a42c4a2d6f35dfabb387f","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","2bb29b3a245e434fa80542e711fd2cee","60ebe74947234ddcab49dea1a958faed","2bb29b3a245e434fa80542e711fd2cee","9b30aff7943f44579e92c261f3adc193","43d02fb064514ff3bd30d1e3a7398357","f44ceb4771504342bb856d76c112d5a6","c1f0a868aeb44c5ea8d154ec3ca295ac","2a1ba1fc5caf492a80188e032995843e","f24327f2b05147b197ca34bf13ae3524"] }, \n",
|
||
"{ name: "<span title=\"tag: String\">tag</span>", children: [], rightAlign: false, values: ["classic","sci-fi","dark comedy","great dialogue","so bad it&#39;s good","tense","artificial intelligence","philosophical","tense","so bad it&#39;s good","cliche","musical","horror","unpredictable","Oscar (Best Supporting Actress)","adventure","fantasy","post-apocalyptic","bah","documentary"] }, \n",
|
||
"{ name: "<span title=\"timestamp: Int\">timestamp</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1439472355</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1439472256</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943598</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943604</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943455</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943077</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573942979</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943033</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943042</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573942965</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943721</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943714</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573945163</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573945171</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1446909853</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286141</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286144</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286136</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1155082282</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1549387432</span></span>"] }, \n",
|
||
"], id: -1459617644, rootId: -1459617644, totalRows: 38 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617644) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_35() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_35\");\n",
|
||
" resize_iframe_out_35(elem);\n",
|
||
" setInterval(resize_iframe_out_35, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_35(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617643\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">userId</th><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">tag</th><th class=\"bottomBorder\" style=\"text-align:left\">timestamp</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">classic</td><td style=\"vertical-align:top\">1439472355</td></tr><tr><td style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">sci-fi</td><td style=\"vertical-align:top\">1439472256</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">dark comedy</td><td style=\"vertical-align:top\">1573943598</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">great dialogue</td><td style=\"vertical-align:top\">1573943604</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">so bad it's good</td><td style=\"vertical-align:top\">1573943455</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">tense</td><td style=\"vertical-align:top\">1573943077</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">artificial intelligence</td><td style=\"vertical-align:top\">1573942979</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">philosophical</td><td style=\"vertical-align:top\">1573943033</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">tense</td><td style=\"vertical-align:top\">1573943042</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">so bad it's good</td><td style=\"vertical-align:top\">1573942965</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">cliche</td><td style=\"vertical-align:top\">1573943721</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">musical</td><td style=\"vertical-align:top\">1573943714</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">horror</td><td style=\"vertical-align:top\">1573945163</td></tr><tr><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">unpredictable</td><td style=\"vertical-align:top\">1573945171</td></tr><tr><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Oscar (Best Supporting Actress)</td><td style=\"vertical-align:top\">1446909853</td></tr><tr><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">adventure</td><td style=\"vertical-align:top\">1445286141</td></tr><tr><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">fantasy</td><td style=\"vertical-align:top\">1445286144</td></tr><tr><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">post-apocalyptic</td><td style=\"vertical-align:top\">1445286136</td></tr><tr><td style=\"vertical-align:top\">20</td><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">bah</td><td style=\"vertical-align:top\">1155082282</td></tr><tr><td style=\"vertical-align:top\">84</td><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">documentary</td><td style=\"vertical-align:top\">1549387432</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617643\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"userId\",\"movieId\",\"tag\",\"timestamp\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":38,\"ncol\":4},\"kotlin_dataframe\":[{\"userId\":3,\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"tag\":\"classic\",\"timestamp\":1439472355},{\"userId\":3,\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"tag\":\"sci-fi\",\"timestamp\":1439472256},{\"userId\":4,\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"tag\":\"dark comedy\",\"timestamp\":1573943598},{\"userId\":4,\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"tag\":\"great dialogue\",\"timestamp\":1573943604},{\"userId\":4,\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"tag\":\"so bad it's good\",\"timestamp\":1573943455},{\"userId\":4,\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"tag\":\"tense\",\"timestamp\":1573943077},{\"userId\":4,\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"tag\":\"artificial intelligence\",\"timestamp\":1573942979},{\"userId\":4,\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"tag\":\"philosophical\",\"timestamp\":1573943033},{\"userId\":4,\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"tag\":\"tense\",\"timestamp\":1573943042},{\"userId\":4,\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"tag\":\"so bad it's good\",\"timestamp\":1573942965},{\"userId\":4,\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"tag\":\"cliche\",\"timestamp\":1573943721},{\"userId\":4,\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"tag\":\"musical\",\"timestamp\":1573943714},{\"userId\":4,\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"tag\":\"horror\",\"timestamp\":1573945163},{\"userId\":4,\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"tag\":\"unpredictable\",\"timestamp\":1573945171},{\"userId\":19,\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"tag\":\"Oscar (Best Supporting Actress)\",\"timestamp\":1446909853},{\"userId\":19,\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"tag\":\"adventure\",\"timestamp\":1445286141},{\"userId\":19,\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"tag\":\"fantasy\",\"timestamp\":1445286144},{\"userId\":19,\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"tag\":\"post-apocalyptic\",\"timestamp\":1445286136},{\"userId\":20,\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"tag\":\"bah\",\"timestamp\":1155082282},{\"userId\":84,\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"tag\":\"documentary\",\"timestamp\":1549387432}]}"
|
||
},
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 25
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:26:59.200830Z",
|
||
"start_time": "2025-05-27T14:26:59.152566Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "tags.schema()",
|
||
"id": "8c4bde5b",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"userId: Int\n",
|
||
"movieId: String\n",
|
||
"tag: String\n",
|
||
"timestamp: Int"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 26
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a8e7c9f3",
|
||
"metadata": {},
|
||
"source": [
|
||
"Nothing too shocking here.\n",
|
||
"We get `tag`, `userId`, `movieId`, and `timestamp`.\n",
|
||
"We're not interested in `userId` and `timestamp` this time. Instead, we should join on `movieId`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "81769f72",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:02.041238Z",
|
||
"start_time": "2025-05-27T14:21:01.512756Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"val moviesWithTags = movies.leftJoin(tags) { movieId }\n",
|
||
"moviesWithTags"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_13()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_13\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617728"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">... showing only top 20 of 41 rows</p><p class="dataframe_description">DataFrame: rowsCount = 41, columnsCount = 7</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","6aa0d26a483148998c250b9c80ddf550","6aa0d26a483148998c250b9c80ddf550","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","c1f0a868aeb44c5ea8d154ec3ca295ac","c1f0a868aeb44c5ea8d154ec3ca295ac"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","Sun Conflicts: Part IV: A Novel Espair","Sun Conflicts: Part IV: A Novel Espair","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","In Automata","In Automata","In Automata","In Automata","In Automata","In Automata","Interplanetary","Interplanetary","Interplanetary"] }, \n",
|
||
"{ name: "<span title=\"genres: String\">genres</span>", children: [], rightAlign: false, values: ["Fantasy|Suspenseful|Comedy","Comedy|Jazz|Family|Animation","Fantasy|Growing up|Magic","Fantasy|Growing up|Magic","Fantasy|Magic|Suspenseful","Fantasy","Fantasy","Fantasy","Fantasy","Fantasy|Superhero|Family","Horror|Existential","Horror|Existential","Horror|Existential","Horror|Existential","Horror|Existential","Horror|Existential","Horror|Existential","Sci-fi|Futuristic","Sci-fi|Futuristic","Sci-fi|Futuristic"] }, \n",
|
||
"{ name: "<span title=\"year: Int\">year</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1997</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2007</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2001</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1977</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2008</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">2014</span></span>"] }, \n",
|
||
"{ name: "<span title=\"userId: Int?\">userId</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">91</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">3</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">91</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">4</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">19</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>"] }, \n",
|
||
"{ name: "<span title=\"tag: String?\">tag</span>", children: [], rightAlign: false, values: ["Oscar (Best Supporting Actress)","bah","fantasy","based on book","adventure","sci-fi","sci-fi","science fiction","space","bad science","great dialogue","artificial intelligence","philosophical","android(s)/cyborg(s)","artificial intelligence","philosophical issues","thought-provoking","tense","post-apocalyptic","sci-fi"] }, \n",
|
||
"{ name: "<span title=\"timestamp: Int?\">timestamp</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">1446909853</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1155082282</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286144</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1414248543</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286141</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1439472256</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1522676660</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1522676703</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1522676664</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1522676752</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943604</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573942979</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943033</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1542309549</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1542309599</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1522676687</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1415131203</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1573943042</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1445286136</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">1542308464</span></span>"] }, \n",
|
||
"], id: -1459617728, rootId: -1459617728, totalRows: 41 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617728) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_13() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_13\");\n",
|
||
" resize_iframe_out_13(elem);\n",
|
||
" setInterval(resize_iframe_out_13, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_13(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617727\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">genres</th><th class=\"bottomBorder\" style=\"text-align:left\">year</th><th class=\"bottomBorder\" style=\"text-align:left\">userId</th><th class=\"bottomBorder\" style=\"text-align:left\">tag</th><th class=\"bottomBorder\" style=\"text-align:left\">timestamp</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">Fantasy|Suspenseful|Comedy</td><td style=\"vertical-align:top\">1997</td><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">Oscar (Best Supporting Actress)</td><td style=\"vertical-align:top\">1446909853</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">Comedy|Jazz|Family|Animation</td><td style=\"vertical-align:top\">2007</td><td style=\"vertical-align:top\">20</td><td style=\"vertical-align:top\">bah</td><td style=\"vertical-align:top\">1155082282</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">fantasy</td><td style=\"vertical-align:top\">1445286144</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Growing up|Magic</td><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">91</td><td style=\"vertical-align:top\">based on book</td><td style=\"vertical-align:top\">1414248543</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">Fantasy|Magic|Suspenseful</td><td style=\"vertical-align:top\">2001</td><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">adventure</td><td style=\"vertical-align:top\">1445286141</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">3</td><td style=\"vertical-align:top\">sci-fi</td><td style=\"vertical-align:top\">1439472256</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">sci-fi</td><td style=\"vertical-align:top\">1522676660</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">science fiction</td><td style=\"vertical-align:top\">1522676703</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">Fantasy</td><td style=\"vertical-align:top\">1977</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">space</td><td style=\"vertical-align:top\">1522676664</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">Fantasy|Superhero|Family</td><td style=\"vertical-align:top\">2008</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">bad science</td><td style=\"vertical-align:top\">1522676752</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">great dialogue</td><td style=\"vertical-align:top\">1573943604</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">artificial intelligence</td><td style=\"vertical-align:top\">1573942979</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">philosophical</td><td style=\"vertical-align:top\">1573943033</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">android(s)/cyborg(s)</td><td style=\"vertical-align:top\">1542309549</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">artificial intelligence</td><td style=\"vertical-align:top\">1542309599</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">philosophical issues</td><td style=\"vertical-align:top\">1522676687</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">Horror|Existential</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">91</td><td style=\"vertical-align:top\">thought-provoking</td><td style=\"vertical-align:top\">1415131203</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">4</td><td style=\"vertical-align:top\">tense</td><td style=\"vertical-align:top\">1573943042</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">19</td><td style=\"vertical-align:top\">post-apocalyptic</td><td style=\"vertical-align:top\">1445286136</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">Sci-fi|Futuristic</td><td style=\"vertical-align:top\">2014</td><td style=\"vertical-align:top\">87</td><td style=\"vertical-align:top\">sci-fi</td><td style=\"vertical-align:top\">1542308464</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617727\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"genres\",\"year\",\"userId\",\"tag\",\"timestamp\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String?\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int?\"}],\"nrow\":41,\"ncol\":7},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"genres\":\"Fantasy|Suspenseful|Comedy\",\"year\":1997,\"userId\":19,\"tag\":\"Oscar (Best Supporting Actress)\",\"timestamp\":1446909853},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"genres\":\"Comedy|Jazz|Family|Animation\",\"year\":2007,\"userId\":20,\"tag\":\"bah\",\"timestamp\":1155082282},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001,\"userId\":19,\"tag\":\"fantasy\",\"timestamp\":1445286144},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"genres\":\"Fantasy|Growing up|Magic\",\"year\":2001,\"userId\":91,\"tag\":\"based on book\",\"timestamp\":1414248543},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"genres\":\"Fantasy|Magic|Suspenseful\",\"year\":2001,\"userId\":19,\"tag\":\"adventure\",\"timestamp\":1445286141},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977,\"userId\":3,\"tag\":\"sci-fi\",\"timestamp\":1439472256},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977,\"userId\":87,\"tag\":\"sci-fi\",\"timestamp\":1522676660},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977,\"userId\":87,\"tag\":\"science fiction\",\"timestamp\":1522676703},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"genres\":\"Fantasy\",\"year\":1977,\"userId\":87,\"tag\":\"space\",\"timestamp\":1522676664},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"genres\":\"Fantasy|Superhero|Family\",\"year\":2008,\"userId\":87,\"tag\":\"bad science\",\"timestamp\":1522676752},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":4,\"tag\":\"great dialogue\",\"timestamp\":1573943604},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":4,\"tag\":\"artificial intelligence\",\"timestamp\":1573942979},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":4,\"tag\":\"philosophical\",\"timestamp\":1573943033},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":87,\"tag\":\"android(s)/cyborg(s)\",\"timestamp\":1542309549},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":87,\"tag\":\"artificial intelligence\",\"timestamp\":1542309599},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":87,\"tag\":\"philosophical issues\",\"timestamp\":1522676687},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"genres\":\"Horror|Existential\",\"year\":2014,\"userId\":91,\"tag\":\"thought-provoking\",\"timestamp\":1415131203},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014,\"userId\":4,\"tag\":\"tense\",\"timestamp\":1573943042},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014,\"userId\":19,\"tag\":\"post-apocalyptic\",\"timestamp\":1445286136},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"genres\":\"Sci-fi|Futuristic\",\"year\":2014,\"userId\":87,\"tag\":\"sci-fi\",\"timestamp\":1542308464}]}"
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 18
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "19add254",
|
||
"metadata": {},
|
||
"source": [
|
||
"Quite simple, right? Just like usual SQL syntax, with auto-completion in the lambda returning the JOIN predicate.\n",
|
||
"\n",
|
||
"Now let's group and aggregate it"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "12733c1c",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:02.324280Z",
|
||
"start_time": "2025-05-27T14:21:02.046207Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"moviesWithTags\n",
|
||
" .groupBy { movieId }\n",
|
||
" .aggregate {\n",
|
||
" title.first() into \"title\"\n",
|
||
" tag.dropNulls().toSet() into \"tags\"\n",
|
||
" }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_14()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_14\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617726"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 20, columnsCount = 3</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524","2bb29b3a245e434fa80542e711fd2cee"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>","This is No Movie"] }, \n",
|
||
"{ name: "<span title=\"tags: Set<String>\">tags</span>", children: [], rightAlign: false, values: ["[Oscar (Best Supporting Actress)]","[bah]","[fantasy, based on book]","[adventure]","[sci-fi, science fiction, space]","[bad science]","<span class=\"formatted\" title=\"[great dialogue, artificial intelligence, philosophical, android(s)/cyborg(s), philosophical issues, thought-provoking]\">[great dialogue, artificial intellige<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"[tense, post-apocalyptic, sci-fi, apocalypse, space travel, visually appealing]\">[tense, post-apocalyptic, sci-fi, apo<span class=\"structural\">...</span></span>","[classic]","[quirky]","[so bad it&#39;s good]","[cliche, romantic]","[]","[]","[franchise, sci-fi, science fiction]","[]","[tense]","[horror]","<span class=\"formatted\" title=\"[dark comedy, so bad it&#39;s good, documentary]\">[dark comedy, so bad it&#39;s good, docum<span class=\"structural\">...</span></span>","[musical, unpredictable]"] }, \n",
|
||
"], id: -1459617726, rootId: -1459617726, totalRows: 20 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617726) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_14() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_14\");\n",
|
||
" resize_iframe_out_14(elem);\n",
|
||
" setInterval(resize_iframe_out_14, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_14(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617725\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">tags</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">[Oscar (Best Supporting Actress)]</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">[bah]</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[fantasy, based on book]</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[adventure]</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">[sci-fi, science fiction, space]</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">[bad science]</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">[great dialogue, artificial intellige<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">[tense, post-apocalyptic, sci-fi, apo<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">[classic]</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">[quirky]</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">[so bad it's good]</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">[cliche, romantic]</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">[franchise, sci-fi, science fiction]</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">[]</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">[tense]</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">[horror]</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[dark comedy, so bad it's good, docum<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">This is No Movie</td><td style=\"vertical-align:top\">[musical, unpredictable]</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617725\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"tags\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.Set<kotlin.String>\"}],\"nrow\":20,\"ncol\":3},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"tags\":\"[Oscar (Best Supporting Actress)]\"},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"tags\":\"[bah]\"},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"tags\":\"[fantasy, based on book]\"},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"tags\":\"[adventure]\"},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"tags\":\"[sci-fi, science fiction, space]\"},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"tags\":\"[bad science]\"},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"tags\":\"[great dialogue, artificial intelligence, philosophical, android(s)/cyborg(s), philosophical issues, thought-provoking]\"},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"tags\":\"[tense, post-apocalyptic, sci-fi, apocalypse, space travel, visually appealing]\"},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"tags\":\"[classic]\"},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"tags\":\"[quirky]\"},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"tags\":\"[so bad it's good]\"},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"tags\":\"[cliche, romantic]\"},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"tags\":\"[]\"},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"tags\":\"[]\"},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"tags\":\"[franchise, sci-fi, science fiction]\"},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"tags\":\"[]\"},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"tags\":\"[tense]\"},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"tags\":\"[horror]\"},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"tags\":\"[dark comedy, so bad it's good, documentary]\"},{\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"title\":\"This is No Movie\",\"tags\":\"[musical, unpredictable]\"}]}"
|
||
},
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 19
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5492b30c",
|
||
"metadata": {},
|
||
"source": [
|
||
"Nothing new in grouping, but here we find the new syntax of aggregation. \n",
|
||
"\n",
|
||
"First, we **know** that when we group by `movieId`, every `movieId` will match exactly one title. This means that in every group we can select any `title`;\n",
|
||
"`first()` is one of the ways to achieve this goal. Potentially the fastest one.\n",
|
||
"\n",
|
||
"Second, we gather all tags into one set. Notice how we work with `tag` column as if it was just a collection. Miraculous, isn't it?\n",
|
||
"Of course, in reality it's not a collection, but it's an object of type `DataColumn` which allows exporting data into some collections.\n",
|
||
"And on this \"collection\" we already can do any transformations we want."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "4af6896a",
|
||
"metadata": {},
|
||
"source": [
|
||
"Some `groupBy` aggregations can be simplified with shortcut functions. We can include `title` in key columns for grouping, so that our aggregation will reduce to a collection of all unique non-null `tag` values per every group. For such simple aggregation we can replace general `aggregate` operation with `values`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "33006264",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:02.644146Z",
|
||
"start_time": "2025-05-27T14:21:02.327177Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"moviesWithTags\n",
|
||
" .groupBy { movieId and title }.values(dropNA = true, distinct = true) {\n",
|
||
" tag into \"tags\"\n",
|
||
" }"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_15()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_15\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617724"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 20, columnsCount = 3</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","f44ceb4771504342bb856d76c112d5a6","43d02fb064514ff3bd30d1e3a7398357","6aa0d26a483148998c250b9c80ddf550","eace16e59ce24eff90bf8924eb6a926c","ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","8cf4d0c1bd7b41fab6af9d92c892141f","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","ee28d7e69103485c83e10b8055ef15fb","c32bdeed466f4ec09de828bb4b6fc649","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","f24327f2b05147b197ca34bf13ae3524","2bb29b3a245e434fa80542e711fd2cee"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","Sun Conflicts: Part IV: A Novel Espair","The Outstanding Bulk","In Automata","Interplanetary","Woods Run","Anthropod-Dude","The Chamber","That Thing About an Iceberg","Vehicles","Playthings Tale","Metal Man 2","Surgeon Odd in the Omniverse of Crazy","Bad Dream on Pine Street","The Shimmering","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>","This is No Movie"] }, \n",
|
||
"{ name: "<span title=\"tags: List<String>\">tags</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"Oscar (Best Supporting Actress)\"><span class=\"structural\">[</span>Oscar (Best Supporting Actress)<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"bah\"><span class=\"structural\">[</span>bah<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"fantasy\nbased on book\"><span class=\"structural\">[</span>fantasy<span class=\"structural\">, </span>based on book<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"adventure\"><span class=\"structural\">[</span>adventure<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"sci-fi\nscience fiction\nspace\"><span class=\"structural\">[</span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">, </span>space<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"bad science\"><span class=\"structural\">[</span>bad science<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"great dialogue\nartificial intelligence\nphilosophical\nandroid(s)/cyborg(s)\nphilosophical issues\nthought-provoking\"><span class=\"structural\">[</span>great dialogue<span class=\"structural\">, </span>artificial int<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"tense\npost-apocalyptic\nsci-fi\napocalypse\nspace travel\nvisually appealing\"><span class=\"structural\">[</span>tense<span class=\"structural\">, </span>post-apocalyptic<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"classic\"><span class=\"structural\">[</span>classic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"quirky\"><span class=\"structural\">[</span>quirky<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"so bad it&#39;s good\"><span class=\"structural\">[</span>so bad it&#39;s good<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"cliche\nromantic\"><span class=\"structural\">[</span>cliche<span class=\"structural\">, </span>romantic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>","<span class=\"formatted\" title=\"franchise\nsci-fi\nscience fiction\"><span class=\"structural\">[</span>franchise<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>","<span class=\"formatted\" title=\"tense\"><span class=\"structural\">[</span>tense<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"horror\"><span class=\"structural\">[</span>horror<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dark comedy\nso bad it&#39;s good\ndocumentary\"><span class=\"structural\">[</span>dark comedy<span class=\"structural\">, </span>so bad it&#39;s good<span class=\"structural\">, </span>docu<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"musical\nunpredictable\"><span class=\"structural\">[</span>musical<span class=\"structural\">, </span>unpredictable<span class=\"structural\">]</span></span>"] }, \n",
|
||
"], id: -1459617724, rootId: -1459617724, totalRows: 20 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617724) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_15() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_15\");\n",
|
||
" resize_iframe_out_15(elem);\n",
|
||
" setInterval(resize_iframe_out_15, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_15(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617723\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">tags</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">[Oscar (Best Supporting Actress)]</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">[bah]</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[fantasy, based on book]</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[adventure]</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">[sci-fi, science fiction, space]</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">[bad science]</td></tr><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">[great dialogue, artificial intellige<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">[tense, post-apocalyptic, sci-fi, apo<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">[classic]</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">[quirky]</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">[so bad it's good]</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">[cliche, romantic]</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">[ ]</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">[ ]</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">[franchise, sci-fi, science fiction]</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">[ ]</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">[tense]</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">[horror]</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[dark comedy, so bad it's good, docum<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">This is No Movie</td><td style=\"vertical-align:top\">[musical, unpredictable]</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617723\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"tags\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"}],\"nrow\":20,\"ncol\":3},\"kotlin_dataframe\":[{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"tags\":[\"Oscar (Best Supporting Actress)\"]},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"tags\":[\"bah\"]},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"tags\":[\"fantasy\",\"based on book\"]},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"tags\":[\"adventure\"]},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"tags\":[\"sci-fi\",\"science fiction\",\"space\"]},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"tags\":[\"bad science\"]},{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"tags\":[\"great dialogue\",\"artificial intelligence\",\"philosophical\",\"android(s)/cyborg(s)\",\"philosophical issues\",\"thought-provoking\"]},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"tags\":[\"tense\",\"post-apocalyptic\",\"sci-fi\",\"apocalypse\",\"space travel\",\"visually appealing\"]},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"tags\":[\"classic\"]},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"tags\":[\"quirky\"]},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"tags\":[\"so bad it's good\"]},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"tags\":[\"cliche\",\"romantic\"]},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"tags\":[]},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"tags\":[]},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"tags\":[\"franchise\",\"sci-fi\",\"science fiction\"]},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"tags\":[]},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"tags\":[\"tense\"]},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"tags\":[\"horror\"]},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"tags\":[\"dark comedy\",\"so bad it's good\",\"documentary\"]},{\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"title\":\"This is No Movie\",\"tags\":[\"musical\",\"unpredictable\"]}]}"
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 20
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "17c342b7",
|
||
"metadata": {},
|
||
"source": "Now we should find most tagged movies. For that we should sort by the number of tags in descending order."
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "83b17906",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:03.069616Z",
|
||
"start_time": "2025-05-27T14:21:02.648280Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"moviesWithTags\n",
|
||
" .groupBy { movieId and title }.values(dropNA = true, distinct = true) { tag into \"tags\" }\n",
|
||
" .sortByDesc { expr { \"tags\"<List<*>>().count() } }\n",
|
||
" .take(10)\n"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_16()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_16\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617722"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 10, columnsCount = 3</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","6aa0d26a483148998c250b9c80ddf550","ee28d7e69103485c83e10b8055ef15fb","f24327f2b05147b197ca34bf13ae3524","f44ceb4771504342bb856d76c112d5a6","8cf4d0c1bd7b41fab6af9d92c892141f","2bb29b3a245e434fa80542e711fd2cee","9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["In Automata","Interplanetary","Sun Conflicts: Part IV: A Novel Espair","Metal Man 2","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","That Thing About an Iceberg","This is No Movie","Women in Black","Bumblebee Movie"] }, \n",
|
||
"{ name: "<span title=\"tags: List<String>\">tags</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"great dialogue\nartificial intelligence\nphilosophical\nandroid(s)/cyborg(s)\nphilosophical issues\nthought-provoking\"><span class=\"structural\">[</span>great dialogue<span class=\"structural\">, </span>artificial int<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"tense\npost-apocalyptic\nsci-fi\napocalypse\nspace travel\nvisually appealing\"><span class=\"structural\">[</span>tense<span class=\"structural\">, </span>post-apocalyptic<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"sci-fi\nscience fiction\nspace\"><span class=\"structural\">[</span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">, </span>space<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"franchise\nsci-fi\nscience fiction\"><span class=\"structural\">[</span>franchise<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dark comedy\nso bad it&#39;s good\ndocumentary\"><span class=\"structural\">[</span>dark comedy<span class=\"structural\">, </span>so bad it&#39;s good<span class=\"structural\">, </span>docu<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"fantasy\nbased on book\"><span class=\"structural\">[</span>fantasy<span class=\"structural\">, </span>based on book<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"cliche\nromantic\"><span class=\"structural\">[</span>cliche<span class=\"structural\">, </span>romantic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"musical\nunpredictable\"><span class=\"structural\">[</span>musical<span class=\"structural\">, </span>unpredictable<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Oscar (Best Supporting Actress)\"><span class=\"structural\">[</span>Oscar (Best Supporting Actress)<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"bah\"><span class=\"structural\">[</span>bah<span class=\"structural\">]</span></span>"] }, \n",
|
||
"], id: -1459617722, rootId: -1459617722, totalRows: 10 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617722) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_16() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_16\");\n",
|
||
" resize_iframe_out_16(elem);\n",
|
||
" setInterval(resize_iframe_out_16, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_16(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617721\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">tags</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">[great dialogue, artificial intellige<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">[tense, post-apocalyptic, sci-fi, apo<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">[sci-fi, science fiction, space]</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">[franchise, sci-fi, science fiction]</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[dark comedy, so bad it's good, docum<span class=\"structural\">...</span></td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[fantasy, based on book]</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">[cliche, romantic]</td></tr><tr><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">This is No Movie</td><td style=\"vertical-align:top\">[musical, unpredictable]</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">[Oscar (Best Supporting Actress)]</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">[bah]</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617721\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"tags\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"}],\"nrow\":10,\"ncol\":3},\"kotlin_dataframe\":[{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"tags\":[\"great dialogue\",\"artificial intelligence\",\"philosophical\",\"android(s)/cyborg(s)\",\"philosophical issues\",\"thought-provoking\"]},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"tags\":[\"tense\",\"post-apocalyptic\",\"sci-fi\",\"apocalypse\",\"space travel\",\"visually appealing\"]},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"tags\":[\"sci-fi\",\"science fiction\",\"space\"]},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"tags\":[\"franchise\",\"sci-fi\",\"science fiction\"]},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"tags\":[\"dark comedy\",\"so bad it's good\",\"documentary\"]},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"tags\":[\"fantasy\",\"based on book\"]},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"tags\":[\"cliche\",\"romantic\"]},{\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"title\":\"This is No Movie\",\"tags\":[\"musical\",\"unpredictable\"]},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"tags\":[\"Oscar (Best Supporting Actress)\"]},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"tags\":[\"bah\"]}]}"
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 21
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2bae07b4",
|
||
"metadata": {},
|
||
"source": "OK, indeed, there are lots of tags :) Let's output the number of tags into a separate column"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "27c8ea28",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:03.842907Z",
|
||
"start_time": "2025-05-27T14:21:03.073754Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"val tagsPerMovie = moviesWithTags\n",
|
||
" .groupBy { movieId and title }.values(dropNA = true, distinct = true) { tag into \"tags\" }\n",
|
||
" .add(\"tagsCount\") {\n",
|
||
" \"tags\"<List<*>>().count()\n",
|
||
" }\n",
|
||
" .sortByDesc(\"tagsCount\")\n",
|
||
"tagsPerMovie"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
" <iframe onload=\"o_resize_iframe_out_17()\" style=\"width:100%;\" class=\"result_container\" id=\"iframe_out_17\" frameBorder=\"0\" srcdoc=\" <html theme='dark'>\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",
|
||
" white-space: nowrap;\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",
|
||
":root {\n",
|
||
" --scroll-bg: #f5f5f5;\n",
|
||
" --scroll-fg: #b3b3b3;\n",
|
||
"}\n",
|
||
":root[theme="dark"], :root [data-jp-theme-light="false"]{\n",
|
||
" --scroll-bg: #3c3c3c;\n",
|
||
" --scroll-fg: #97e1fb;\n",
|
||
"}\n",
|
||
"body {\n",
|
||
" scrollbar-color: var(--scroll-fg) var(--scroll-bg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar {\n",
|
||
" width: 10px; /* Mostly for vertical scrollbars */\n",
|
||
" height: 10px; /* Mostly for horizontal scrollbars */\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-thumb {\n",
|
||
" background-color: var(--scroll-fg);\n",
|
||
"}\n",
|
||
"body::-webkit-scrollbar-track {\n",
|
||
" background-color: var(--scroll-bg);\n",
|
||
"}\n",
|
||
" </style>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class="dataframe" id="df_-1459617720"></table>\n",
|
||
"\n",
|
||
"<p class="dataframe_description">DataFrame: rowsCount = 20, columnsCount = 4</p>\n",
|
||
"\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" (function () {\n",
|
||
" window.DataFrame = window.DataFrame || new (function () {\n",
|
||
" this.addTable = function (df) {\n",
|
||
" let cols = df.cols;\n",
|
||
" for (let i = 0; i < cols.length; i++) {\n",
|
||
" for (let c of cols[i].children) {\n",
|
||
" cols[c].parent = i;\n",
|
||
" }\n",
|
||
" }\n",
|
||
" df.nrow = 0\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" if (df.cols[i].values.length > df.nrow) df.nrow = df.cols[i].values.length\n",
|
||
" }\n",
|
||
" if (df.id === df.rootId) {\n",
|
||
" df.expandedFrames = new Set()\n",
|
||
" df.childFrames = {}\n",
|
||
" const table = this.getTableElement(df.id)\n",
|
||
" table.df = df\n",
|
||
" for (let i = 0; i < df.cols.length; i++) {\n",
|
||
" let col = df.cols[i]\n",
|
||
" if (col.parent === undefined && col.children.length > 0) col.expanded = true\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" const rootDf = this.getTableData(df.rootId)\n",
|
||
" rootDf.childFrames[df.id] = df\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderData = function (df) {\n",
|
||
" let result = []\n",
|
||
" let pos = 0\n",
|
||
" for (let col = 0; col < df.cols.length; col++) {\n",
|
||
" if (df.cols[col].parent === undefined)\n",
|
||
" pos += this.computeRenderDataRec(df.cols, col, pos, 0, result, false, false)\n",
|
||
" }\n",
|
||
" for (let i = 0; i < result.length; i++) {\n",
|
||
" let row = result[i]\n",
|
||
" for (let j = 0; j < row.length; j++) {\n",
|
||
" let cell = row[j]\n",
|
||
" if (j === 0)\n",
|
||
" cell.leftBd = false\n",
|
||
" if (j < row.length - 1) {\n",
|
||
" let nextData = row[j + 1]\n",
|
||
" if (nextData.leftBd) cell.rightBd = true\n",
|
||
" else if (cell.rightBd) nextData.leftBd = true\n",
|
||
" } else cell.rightBd = false\n",
|
||
" }\n",
|
||
" }\n",
|
||
" return result\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.computeRenderDataRec = function (cols, colId, pos, depth, result, leftBorder, rightBorder) {\n",
|
||
" if (result.length === depth) {\n",
|
||
" const array = [];\n",
|
||
" if (pos > 0) {\n",
|
||
" let j = 0\n",
|
||
" for (let i = 0; j < pos; i++) {\n",
|
||
" let c = result[depth - 1][i]\n",
|
||
" j += c.span\n",
|
||
" let copy = Object.assign({empty: true}, c)\n",
|
||
" array.push(copy)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" result.push(array)\n",
|
||
" }\n",
|
||
" const col = cols[colId];\n",
|
||
" let size = 0;\n",
|
||
" if (col.expanded) {\n",
|
||
" let childPos = pos\n",
|
||
" for (let i = 0; i < col.children.length; i++) {\n",
|
||
" let child = col.children[i]\n",
|
||
" let childLeft = i === 0 && (col.children.length > 1 || leftBorder)\n",
|
||
" let childRight = i === col.children.length - 1 && (col.children.length > 1 || rightBorder)\n",
|
||
" let childSize = this.computeRenderDataRec(cols, child, childPos, depth + 1, result, childLeft, childRight)\n",
|
||
" childPos += childSize\n",
|
||
" size += childSize\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" for (let i = depth + 1; i < result.length; i++)\n",
|
||
" result[i].push({id: colId, span: 1, leftBd: leftBorder, rightBd: rightBorder, empty: true})\n",
|
||
" size = 1\n",
|
||
" }\n",
|
||
" let left = leftBorder\n",
|
||
" let right = rightBorder\n",
|
||
" if (size > 1) {\n",
|
||
" left = true\n",
|
||
" right = true\n",
|
||
" }\n",
|
||
" result[depth].push({id: colId, span: size, leftBd: left, rightBd: right})\n",
|
||
" return size\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableElement = function (id) {\n",
|
||
" return document.getElementById("df_" + id)\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.getTableData = function (id) {\n",
|
||
" return this.getTableElement(id).df\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.createExpander = function (isExpanded) {\n",
|
||
" const svgNs = "http://www.w3.org/2000/svg"\n",
|
||
" let svg = document.createElementNS(svgNs, "svg")\n",
|
||
" svg.classList.add("expanderSvg")\n",
|
||
" let path = document.createElementNS(svgNs, "path")\n",
|
||
" if (isExpanded) {\n",
|
||
" svg.setAttribute("viewBox", "0 -2 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 4 4 4 -4 -1 -1 -3 3Z")\n",
|
||
" } else {\n",
|
||
" svg.setAttribute("viewBox", "-2 0 8 8")\n",
|
||
" path.setAttribute("d", "M1 0 l-1 1 3 3 -3 3 1 1 4 -4Z")\n",
|
||
" }\n",
|
||
" path.setAttribute("fill", "currentColor")\n",
|
||
" svg.appendChild(path)\n",
|
||
" return svg\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.renderTable = function (id) {\n",
|
||
"\n",
|
||
" let table = this.getTableElement(id)\n",
|
||
"\n",
|
||
" if (table === null) return\n",
|
||
"\n",
|
||
" table.innerHTML = ""\n",
|
||
"\n",
|
||
" let df = table.df\n",
|
||
" let rootDf = df.rootId === df.id ? df : this.getTableData(df.rootId)\n",
|
||
"\n",
|
||
" // header\n",
|
||
" let header = document.createElement("thead")\n",
|
||
" table.appendChild(header)\n",
|
||
"\n",
|
||
" let renderData = this.computeRenderData(df)\n",
|
||
" for (let j = 0; j < renderData.length; j++) {\n",
|
||
" let rowData = renderData[j]\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" let isLastRow = j === renderData.length - 1\n",
|
||
" header.appendChild(tr);\n",
|
||
" for (let i = 0; i < rowData.length; i++) {\n",
|
||
" let cell = rowData[i]\n",
|
||
" let th = document.createElement("th");\n",
|
||
" th.setAttribute("colspan", cell.span)\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId];\n",
|
||
" if (!cell.empty) {\n",
|
||
" if (col.children.length === 0) {\n",
|
||
" th.innerHTML = col.name\n",
|
||
" } else {\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" col.expanded = !col.expanded\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(col.expanded))\n",
|
||
" link.innerHTML += col.name\n",
|
||
" th.appendChild(link)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (isLastRow)\n",
|
||
" classes += " bottomBorder"\n",
|
||
" if (classes.length > 0)\n",
|
||
" th.setAttribute("class", classes)\n",
|
||
" tr.appendChild(th)\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" // body\n",
|
||
" let body = document.createElement("tbody")\n",
|
||
" table.appendChild(body)\n",
|
||
"\n",
|
||
" let columns = renderData.pop()\n",
|
||
" for (let row = 0; row < df.nrow; row++) {\n",
|
||
" let tr = document.createElement("tr");\n",
|
||
" body.appendChild(tr)\n",
|
||
" for (let i = 0; i < columns.length; i++) {\n",
|
||
" let cell = columns[i]\n",
|
||
" let td = document.createElement("td");\n",
|
||
" let colId = cell.id\n",
|
||
" let col = df.cols[colId]\n",
|
||
" let classes = (cell.leftBd ? " leftBorder" : "") + (cell.rightBd ? " rightBorder" : "")\n",
|
||
" if (col.rightAlign)\n",
|
||
" classes += " rightAlign"\n",
|
||
" if (classes.length > 0)\n",
|
||
" td.setAttribute("class", classes)\n",
|
||
" tr.appendChild(td)\n",
|
||
" let value = col.values[row]\n",
|
||
" if (value.frameId !== undefined) {\n",
|
||
" let frameId = value.frameId\n",
|
||
" let expanded = rootDf.expandedFrames.has(frameId)\n",
|
||
" let link = document.createElement("a")\n",
|
||
" link.className = "expander"\n",
|
||
" let that = this\n",
|
||
" link.onclick = function () {\n",
|
||
" if (rootDf.expandedFrames.has(frameId))\n",
|
||
" rootDf.expandedFrames.delete(frameId)\n",
|
||
" else rootDf.expandedFrames.add(frameId)\n",
|
||
" that.renderTable(id)\n",
|
||
" }\n",
|
||
" link.appendChild(this.createExpander(expanded))\n",
|
||
" link.innerHTML += value.value\n",
|
||
" if (expanded) {\n",
|
||
" td.appendChild(link)\n",
|
||
" td.appendChild(document.createElement("p"))\n",
|
||
" const childTable = document.createElement("table")\n",
|
||
" childTable.className = "dataframe"\n",
|
||
" childTable.id = "df_" + frameId\n",
|
||
" let childDf = rootDf.childFrames[frameId]\n",
|
||
" childTable.df = childDf\n",
|
||
" td.appendChild(childTable)\n",
|
||
" this.renderTable(frameId)\n",
|
||
" if (childDf.nrow !== childDf.totalRows) {\n",
|
||
" const footer = document.createElement("p")\n",
|
||
" footer.innerText = `... showing only top ${childDf.nrow} of ${childDf.totalRows} rows`\n",
|
||
" td.appendChild(footer)\n",
|
||
" }\n",
|
||
" } else {\n",
|
||
" td.appendChild(link)\n",
|
||
" }\n",
|
||
" } else if (value.style !== undefined) {\n",
|
||
" td.innerHTML = value.value\n",
|
||
" td.setAttribute("style", value.style)\n",
|
||
" } else td.innerHTML = value\n",
|
||
" this.nodeScriptReplace(td)\n",
|
||
" }\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptReplace = function (node) {\n",
|
||
" if (this.nodeScriptIs(node) === true) {\n",
|
||
" node.parentNode.replaceChild(this.nodeScriptClone(node), node);\n",
|
||
" } else {\n",
|
||
" let i = -1, children = node.childNodes;\n",
|
||
" while (++i < children.length) {\n",
|
||
" this.nodeScriptReplace(children[i]);\n",
|
||
" }\n",
|
||
" }\n",
|
||
"\n",
|
||
" return node;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptClone = function (node) {\n",
|
||
" let script = document.createElement("script");\n",
|
||
" script.text = node.innerHTML;\n",
|
||
"\n",
|
||
" let i = -1, attrs = node.attributes, attr;\n",
|
||
" while (++i < attrs.length) {\n",
|
||
" script.setAttribute((attr = attrs[i]).name, attr.value);\n",
|
||
" }\n",
|
||
" return script;\n",
|
||
" }\n",
|
||
"\n",
|
||
" this.nodeScriptIs = function (node) {\n",
|
||
" return node.tagName === 'SCRIPT';\n",
|
||
" }\n",
|
||
" })()\n",
|
||
"\n",
|
||
" window.call_DataFrame = function (f) {\n",
|
||
" return f();\n",
|
||
" };\n",
|
||
"\n",
|
||
" let funQueue = window["kotlinQueues"] && window["kotlinQueues"]["DataFrame"];\n",
|
||
" if (funQueue) {\n",
|
||
" funQueue.forEach(function (f) {\n",
|
||
" f();\n",
|
||
" });\n",
|
||
" funQueue = [];\n",
|
||
" }\n",
|
||
"})()\n",
|
||
"\n",
|
||
"/*<!--*/\n",
|
||
"call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"movieId: String\">movieId</span>", children: [], rightAlign: false, values: ["ae916bc4844a4bb7b42b70d9573d05cd","c1f0a868aeb44c5ea8d154ec3ca295ac","6aa0d26a483148998c250b9c80ddf550","ee28d7e69103485c83e10b8055ef15fb","f24327f2b05147b197ca34bf13ae3524","f44ceb4771504342bb856d76c112d5a6","8cf4d0c1bd7b41fab6af9d92c892141f","2bb29b3a245e434fa80542e711fd2cee","9b30aff7943f44579e92c261f3adc193","2a1ba1fc5caf492a80188e032995843e","43d02fb064514ff3bd30d1e3a7398357","eace16e59ce24eff90bf8924eb6a926c","9595b771f87f42a3b8dd07d91e7cb328","aa9fc400e068443488b259ea0802a975","22d20c2ba11d44cab83aceea39dc00bd","d4a325ab648a42c4a2d6f35dfabb387f","60ebe74947234ddcab49dea1a958faed","c2f3e7588da84684a7d78d6bd8d8e1f4","ce06175106af4105945f245161eac3c7","c32bdeed466f4ec09de828bb4b6fc649"] }, \n",
|
||
"{ name: "<span title=\"title: String\">title</span>", children: [], rightAlign: false, values: ["In Automata","Interplanetary","Sun Conflicts: Part IV: A Novel Espair","Metal Man 2","<span class=\"formatted\" title=\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></span>","<span class=\"formatted\" title=\"Magical School Boy and the Rock of Wise Men\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></span>","That Thing About an Iceberg","This is No Movie","Women in Black","Bumblebee Movie","<span class=\"formatted\" title=\"Master of the Jewlery: The Company of the Jewel\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></span>","The Outstanding Bulk","Woods Run","Anthropod-Dude","The Chamber","Bad Dream on Pine Street","The Shimmering","Vehicles","Playthings Tale","Surgeon Odd in the Omniverse of Crazy"] }, \n",
|
||
"{ name: "<span title=\"tags: List<String>\">tags</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"great dialogue\nartificial intelligence\nphilosophical\nandroid(s)/cyborg(s)\nphilosophical issues\nthought-provoking\"><span class=\"structural\">[</span>great dialogue<span class=\"structural\">, </span>artificial int<span class=\"structural\">...</span><span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"tense\npost-apocalyptic\nsci-fi\napocalypse\nspace travel\nvisually appealing\"><span class=\"structural\">[</span>tense<span class=\"structural\">, </span>post-apocalyptic<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span><span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"sci-fi\nscience fiction\nspace\"><span class=\"structural\">[</span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">, </span>space<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"franchise\nsci-fi\nscience fiction\"><span class=\"structural\">[</span>franchise<span class=\"structural\">, </span>sci-fi<span class=\"structural\">, </span>science fiction<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"dark comedy\nso bad it&#39;s good\ndocumentary\"><span class=\"structural\">[</span>dark comedy<span class=\"structural\">, </span>so bad it&#39;s good<span class=\"structural\">, </span>docu<span class=\"structural\">...</span><span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"fantasy\nbased on book\"><span class=\"structural\">[</span>fantasy<span class=\"structural\">, </span>based on book<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"cliche\nromantic\"><span class=\"structural\">[</span>cliche<span class=\"structural\">, </span>romantic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"musical\nunpredictable\"><span class=\"structural\">[</span>musical<span class=\"structural\">, </span>unpredictable<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"Oscar (Best Supporting Actress)\"><span class=\"structural\">[</span>Oscar (Best Supporting Actress)<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"bah\"><span class=\"structural\">[</span>bah<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"adventure\"><span class=\"structural\">[</span>adventure<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"bad science\"><span class=\"structural\">[</span>bad science<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"classic\"><span class=\"structural\">[</span>classic<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"quirky\"><span class=\"structural\">[</span>quirky<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"so bad it&#39;s good\"><span class=\"structural\">[</span>so bad it&#39;s good<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"tense\"><span class=\"structural\">[</span>tense<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"horror\"><span class=\"structural\">[</span>horror<span class=\"structural\">]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">[ ]</span></span>"] }, \n",
|
||
"{ name: "<span title=\"tagsCount: Int\">tagsCount</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">6</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">6</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\">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\">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\">1</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\">1</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\">1</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",
|
||
"], id: -1459617720, rootId: -1459617720, totalRows: 20 } ) });\n",
|
||
"/*-->*/\n",
|
||
"\n",
|
||
"call_DataFrame(function() { DataFrame.renderTable(-1459617720) });\n",
|
||
"\n",
|
||
"\n",
|
||
" </script>\n",
|
||
" </html>\"></iframe>\n",
|
||
" <script>\n",
|
||
" function o_resize_iframe_out_17() {\n",
|
||
" let elem = document.getElementById(\"iframe_out_17\");\n",
|
||
" resize_iframe_out_17(elem);\n",
|
||
" setInterval(resize_iframe_out_17, 5000, elem);\n",
|
||
" }\n",
|
||
" function resize_iframe_out_17(el) {\n",
|
||
" let h = el.contentWindow.document.body.scrollHeight;\n",
|
||
" el.height = h === 0 ? 0 : h + 41;\n",
|
||
" }\n",
|
||
" </script> <html theme='dark'>\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",
|
||
" white-space: nowrap;\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>\n",
|
||
" </head>\n",
|
||
" <body>\n",
|
||
" <table class=\"dataframe\" id=\"static_df_-1459617719\"><thead><tr><th class=\"bottomBorder\" style=\"text-align:left\">movieId</th><th class=\"bottomBorder\" style=\"text-align:left\">title</th><th class=\"bottomBorder\" style=\"text-align:left\">tags</th><th class=\"bottomBorder\" style=\"text-align:left\">tagsCount</th></tr></thead><tbody><tr><td style=\"vertical-align:top\">ae916bc4844a4bb7b42b70d9573d05cd</td><td style=\"vertical-align:top\">In Automata</td><td style=\"vertical-align:top\">[great dialogue, artificial intellige<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6</td></tr><tr><td style=\"vertical-align:top\">c1f0a868aeb44c5ea8d154ec3ca295ac</td><td style=\"vertical-align:top\">Interplanetary</td><td style=\"vertical-align:top\">[tense, post-apocalyptic, sci-fi, apo<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">6</td></tr><tr><td style=\"vertical-align:top\">6aa0d26a483148998c250b9c80ddf550</td><td style=\"vertical-align:top\">Sun Conflicts: Part IV: A Novel Espair</td><td style=\"vertical-align:top\">[sci-fi, science fiction, space]</td><td style=\"vertical-align:top\">3</td></tr><tr><td style=\"vertical-align:top\">ee28d7e69103485c83e10b8055ef15fb</td><td style=\"vertical-align:top\">Metal Man 2</td><td style=\"vertical-align:top\">[franchise, sci-fi, science fiction]</td><td style=\"vertical-align:top\">3</td></tr><tr><td style=\"vertical-align:top\">f24327f2b05147b197ca34bf13ae3524</td><td style=\"vertical-align:top\">Krubit: Societal Teachings for Do Man<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[dark comedy, so bad it's good, docum<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">3</td></tr><tr><td style=\"vertical-align:top\">f44ceb4771504342bb856d76c112d5a6</td><td style=\"vertical-align:top\">Magical School Boy and the Rock of Wi<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[fantasy, based on book]</td><td style=\"vertical-align:top\">2</td></tr><tr><td style=\"vertical-align:top\">8cf4d0c1bd7b41fab6af9d92c892141f</td><td style=\"vertical-align:top\">That Thing About an Iceberg</td><td style=\"vertical-align:top\">[cliche, romantic]</td><td style=\"vertical-align:top\">2</td></tr><tr><td style=\"vertical-align:top\">2bb29b3a245e434fa80542e711fd2cee</td><td style=\"vertical-align:top\">This is No Movie</td><td style=\"vertical-align:top\">[musical, unpredictable]</td><td style=\"vertical-align:top\">2</td></tr><tr><td style=\"vertical-align:top\">9b30aff7943f44579e92c261f3adc193</td><td style=\"vertical-align:top\">Women in Black</td><td style=\"vertical-align:top\">[Oscar (Best Supporting Actress)]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">2a1ba1fc5caf492a80188e032995843e</td><td style=\"vertical-align:top\">Bumblebee Movie</td><td style=\"vertical-align:top\">[bah]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">43d02fb064514ff3bd30d1e3a7398357</td><td style=\"vertical-align:top\">Master of the Jewlery: The Company of<span class=\"structural\">...</span></td><td style=\"vertical-align:top\">[adventure]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">eace16e59ce24eff90bf8924eb6a926c</td><td style=\"vertical-align:top\">The Outstanding Bulk</td><td style=\"vertical-align:top\">[bad science]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">9595b771f87f42a3b8dd07d91e7cb328</td><td style=\"vertical-align:top\">Woods Run</td><td style=\"vertical-align:top\">[classic]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">aa9fc400e068443488b259ea0802a975</td><td style=\"vertical-align:top\">Anthropod-Dude</td><td style=\"vertical-align:top\">[quirky]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">22d20c2ba11d44cab83aceea39dc00bd</td><td style=\"vertical-align:top\">The Chamber</td><td style=\"vertical-align:top\">[so bad it's good]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">d4a325ab648a42c4a2d6f35dfabb387f</td><td style=\"vertical-align:top\">Bad Dream on Pine Street</td><td style=\"vertical-align:top\">[tense]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">60ebe74947234ddcab49dea1a958faed</td><td style=\"vertical-align:top\">The Shimmering</td><td style=\"vertical-align:top\">[horror]</td><td style=\"vertical-align:top\">1</td></tr><tr><td style=\"vertical-align:top\">c2f3e7588da84684a7d78d6bd8d8e1f4</td><td style=\"vertical-align:top\">Vehicles</td><td style=\"vertical-align:top\">[ ]</td><td style=\"vertical-align:top\">0</td></tr><tr><td style=\"vertical-align:top\">ce06175106af4105945f245161eac3c7</td><td style=\"vertical-align:top\">Playthings Tale</td><td style=\"vertical-align:top\">[ ]</td><td style=\"vertical-align:top\">0</td></tr><tr><td style=\"vertical-align:top\">c32bdeed466f4ec09de828bb4b6fc649</td><td style=\"vertical-align:top\">Surgeon Odd in the Omniverse of Crazy</td><td style=\"vertical-align:top\">[ ]</td><td style=\"vertical-align:top\">0</td></tr></tbody></table>\n",
|
||
" </body>\n",
|
||
" <script>\n",
|
||
" document.getElementById(\"static_df_-1459617719\").style.display = \"none\";\n",
|
||
" </script>\n",
|
||
" </html>"
|
||
],
|
||
"application/kotlindataframe+json": "{\"$version\":\"2.1.1\",\"metadata\":{\"columns\":[\"movieId\",\"title\",\"tags\",\"tagsCount\"],\"types\":[{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.String\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.collections.List<kotlin.String>\"},{\"kind\":\"ValueColumn\",\"type\":\"kotlin.Int\"}],\"nrow\":20,\"ncol\":4},\"kotlin_dataframe\":[{\"movieId\":\"ae916bc4844a4bb7b42b70d9573d05cd\",\"title\":\"In Automata\",\"tags\":[\"great dialogue\",\"artificial intelligence\",\"philosophical\",\"android(s)/cyborg(s)\",\"philosophical issues\",\"thought-provoking\"],\"tagsCount\":6},{\"movieId\":\"c1f0a868aeb44c5ea8d154ec3ca295ac\",\"title\":\"Interplanetary\",\"tags\":[\"tense\",\"post-apocalyptic\",\"sci-fi\",\"apocalypse\",\"space travel\",\"visually appealing\"],\"tagsCount\":6},{\"movieId\":\"6aa0d26a483148998c250b9c80ddf550\",\"title\":\"Sun Conflicts: Part IV: A Novel Espair\",\"tags\":[\"sci-fi\",\"science fiction\",\"space\"],\"tagsCount\":3},{\"movieId\":\"ee28d7e69103485c83e10b8055ef15fb\",\"title\":\"Metal Man 2\",\"tags\":[\"franchise\",\"sci-fi\",\"science fiction\"],\"tagsCount\":3},{\"movieId\":\"f24327f2b05147b197ca34bf13ae3524\",\"title\":\"Krubit: Societal Teachings for Do Many Good Amazing Country of Uzbekistan\",\"tags\":[\"dark comedy\",\"so bad it's good\",\"documentary\"],\"tagsCount\":3},{\"movieId\":\"f44ceb4771504342bb856d76c112d5a6\",\"title\":\"Magical School Boy and the Rock of Wise Men\",\"tags\":[\"fantasy\",\"based on book\"],\"tagsCount\":2},{\"movieId\":\"8cf4d0c1bd7b41fab6af9d92c892141f\",\"title\":\"That Thing About an Iceberg\",\"tags\":[\"cliche\",\"romantic\"],\"tagsCount\":2},{\"movieId\":\"2bb29b3a245e434fa80542e711fd2cee\",\"title\":\"This is No Movie\",\"tags\":[\"musical\",\"unpredictable\"],\"tagsCount\":2},{\"movieId\":\"9b30aff7943f44579e92c261f3adc193\",\"title\":\"Women in Black\",\"tags\":[\"Oscar (Best Supporting Actress)\"],\"tagsCount\":1},{\"movieId\":\"2a1ba1fc5caf492a80188e032995843e\",\"title\":\"Bumblebee Movie\",\"tags\":[\"bah\"],\"tagsCount\":1},{\"movieId\":\"43d02fb064514ff3bd30d1e3a7398357\",\"title\":\"Master of the Jewlery: The Company of the Jewel\",\"tags\":[\"adventure\"],\"tagsCount\":1},{\"movieId\":\"eace16e59ce24eff90bf8924eb6a926c\",\"title\":\"The Outstanding Bulk\",\"tags\":[\"bad science\"],\"tagsCount\":1},{\"movieId\":\"9595b771f87f42a3b8dd07d91e7cb328\",\"title\":\"Woods Run\",\"tags\":[\"classic\"],\"tagsCount\":1},{\"movieId\":\"aa9fc400e068443488b259ea0802a975\",\"title\":\"Anthropod-Dude\",\"tags\":[\"quirky\"],\"tagsCount\":1},{\"movieId\":\"22d20c2ba11d44cab83aceea39dc00bd\",\"title\":\"The Chamber\",\"tags\":[\"so bad it's good\"],\"tagsCount\":1},{\"movieId\":\"d4a325ab648a42c4a2d6f35dfabb387f\",\"title\":\"Bad Dream on Pine Street\",\"tags\":[\"tense\"],\"tagsCount\":1},{\"movieId\":\"60ebe74947234ddcab49dea1a958faed\",\"title\":\"The Shimmering\",\"tags\":[\"horror\"],\"tagsCount\":1},{\"movieId\":\"c2f3e7588da84684a7d78d6bd8d8e1f4\",\"title\":\"Vehicles\",\"tags\":[],\"tagsCount\":0},{\"movieId\":\"ce06175106af4105945f245161eac3c7\",\"title\":\"Playthings Tale\",\"tags\":[],\"tagsCount\":0},{\"movieId\":\"c32bdeed466f4ec09de828bb4b6fc649\",\"title\":\"Surgeon Odd in the Omniverse of Crazy\",\"tags\":[],\"tagsCount\":0}]}"
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 22
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "01cbbed1",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:04.042081Z",
|
||
"start_time": "2025-05-27T14:21:03.850806Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"tagsPerMovie.tagsCount.sum()"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"36"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 23
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"id": "accea0d3",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-05-27T14:21:04.150335Z",
|
||
"start_time": "2025-05-27T14:21:04.046709Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"tagsPerMovie[0].tags"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[great dialogue, artificial intelligence, philosophical, android(s)/cyborg(s), philosophical issues, thought-provoking]"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 24
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "c309c91b",
|
||
"metadata": {},
|
||
"source": [
|
||
"And yes, I should admit, some of these tags are crazy.\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Kotlin",
|
||
"language": "kotlin",
|
||
"name": "kotlin"
|
||
},
|
||
"ktnbPluginMetadata": {
|
||
"projectLibraries": []
|
||
},
|
||
"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": 5
|
||
}
|