Skip to content

Instantly share code, notes, and snippets.

@paw-lu
Created September 8, 2021 05:11
Show Gist options
  • Save paw-lu/a7fcad78d96cd5ba7ca6916e9fa1a403 to your computer and use it in GitHub Desktop.
Save paw-lu/a7fcad78d96cd5ba7ca6916e9fa1a403 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "drawn-dublin",
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "extensive-prior",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"message\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-2-f288786feb9e>:2: UserWarning: Warning\n",
" warnings.warn(\"Warning\")\n"
]
}
],
"source": [
"import warnings\n",
"warnings.warn(\"Warning\")\n",
"print(\"message\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "careful-pastor",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cras adipiscing\n"
]
}
],
"source": [
"%%bash\n",
"echo 'Cras adipiscing'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "allied-contrary",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"bash: line 1: ech: command not found\n"
]
},
{
"ename": "CalledProcessError",
"evalue": "Command 'b'ech\\n'' returned non-zero exit status 127.",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mCalledProcessError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-4-4fb31ecfb364>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_cell_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'bash'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'ech\\n'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32m~/.pyenv/versions/scratch/lib/python3.8/site-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_cell_magic\u001b[1;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[0;32m 2389\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2390\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2391\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2392\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2393\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~/.pyenv/versions/scratch/lib/python3.8/site-packages/IPython/core/magics/script.py\u001b[0m in \u001b[0;36mnamed_script_magic\u001b[1;34m(line, cell)\u001b[0m\n\u001b[0;32m 140\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 141\u001b[0m \u001b[0mline\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mscript\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 142\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshebang\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 143\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[1;31m# write a basic docstring:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m<decorator-gen-103>\u001b[0m in \u001b[0;36mshebang\u001b[1;34m(self, line, cell)\u001b[0m\n",
"\u001b[1;32m~/.pyenv/versions/scratch/lib/python3.8/site-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m<lambda>\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 185\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 186\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 187\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 188\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 189\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~/.pyenv/versions/scratch/lib/python3.8/site-packages/IPython/core/magics/script.py\u001b[0m in \u001b[0;36mshebang\u001b[1;34m(self, line, cell)\u001b[0m\n\u001b[0;32m 243\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstderr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 244\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_error\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreturncode\u001b[0m\u001b[1;33m!=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 245\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mCalledProcessError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreturncode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstderr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0merr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 246\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 247\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_run_script\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mp\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mto_close\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mCalledProcessError\u001b[0m: Command 'b'ech\\n'' returned non-zero exit status 127."
]
}
],
"source": [
"%%bash\n",
"ech"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "coastal-values",
"metadata": {},
"outputs": [
{
"ename": "ZeroDivisionError",
"evalue": "division by zero",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-1-9e1622b385b6>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m1\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mZeroDivisionError\u001b[0m: division by zero"
]
}
],
"source": [
"1/0"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "offensive-making",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>a</th>\n",
" <th>b</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" a b\n",
"0 1 2"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"df_small = pd.DataFrame({\"a\": [1], \"b\": [2]})\n",
"df_small"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "handed-survival",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lorep\n"
]
},
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(\"Lorep\")\n",
"1 + 2"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "adapted-collapse",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df_small.plot.line()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "conservative-mistress",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-12-030cc5bd0ef9>:8: FutureWarning: In v4.0, pm.sample will return an `arviz.InferenceData` object instead of a `MultiTrace` by default. You can pass return_inferencedata=True or return_inferencedata=False to be safe and silence this warning.\n",
" pm.sample(1_000)\n",
"Auto-assigning NUTS sampler...\n",
"Initializing NUTS using jitter+adapt_diag...\n",
"Multiprocess sampling (4 chains in 4 jobs)\n",
"NUTS: [normal, sigma, mu]\n"
]
},
{
"data": {
"text/html": [
"\n",
" <div>\n",
" <style>\n",
" /* Turns off some styling */\n",
" progress {\n",
" /* gets rid of default border in Firefox and Opera. */\n",
" border: none;\n",
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
" background-size: auto;\n",
" }\n",
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
" background: #F44336;\n",
" }\n",
" </style>\n",
" <progress value='8000' class='' max='8000' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" 100.00% [8000/8000 00:03<00:00 Sampling 4 chains, 719 divergences]\n",
" </div>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 16 seconds.\n",
"There were 83 divergences after tuning. Increase `target_accept` or reparameterize.\n",
"There were 274 divergences after tuning. Increase `target_accept` or reparameterize.\n",
"The acceptance probability does not match the target. It is 0.4953052256541308, but should be close to 0.8. Try to increase the number of tuning steps.\n",
"There were 217 divergences after tuning. Increase `target_accept` or reparameterize.\n",
"The acceptance probability does not match the target. It is 0.6077968480002448, but should be close to 0.8. Try to increase the number of tuning steps.\n",
"There were 145 divergences after tuning. Increase `target_accept` or reparameterize.\n",
"The acceptance probability does not match the target. It is 0.6973354802650075, but should be close to 0.8. Try to increase the number of tuning steps.\n",
"The rhat statistic is larger than 1.05 for some parameters. This indicates slight problems during sampling.\n",
"The estimated number of effective samples is smaller than 200 for some parameters.\n"
]
},
{
"data": {
"text/plain": [
"<MultiTrace: 4 chains, 1000 iterations, 4 variables>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pymc3 as pm\n",
"\n",
"with pm.Model() as model:\n",
" mu = pm.Normal(\"mu\", mu=0, sigma=1)\n",
" sigma = pm.HalfNormal(\"sigma\", sigma=1)\n",
" normal = pm.Normal(\"normal\", mu=mu, sigma=sigma)\n",
"\n",
" pm.sample(1_000)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "promising-wallace",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$$\n",
" \\begin{array}{rcl}\n",
" \\text{mu} &\\sim & \\text{Normal}\\\\\\text{sigma_log__} &\\sim & \\text{TransformedDistribution}\\\\\\text{normal} &\\sim & \\text{Normal}\\\\\\text{sigma} &\\sim & \\text{HalfNormal}\n",
" \\end{array}\n",
" $$"
],
"text/plain": [
"<pymc3.model.Model at 0x130325d60>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "lasting-excerpt",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<div id=\"altair-viz-47b57b07954f4a44990ac1a2de0c207c\"></div>\n",
"<script type=\"text/javascript\">\n",
" (function(spec, embedOpt){\n",
" let outputDiv = document.currentScript.previousElementSibling;\n",
" if (outputDiv.id !== \"altair-viz-47b57b07954f4a44990ac1a2de0c207c\") {\n",
" outputDiv = document.getElementById(\"altair-viz-47b57b07954f4a44990ac1a2de0c207c\");\n",
" }\n",
" const paths = {\n",
" \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.8.1?noext\",\n",
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
" };\n",
"\n",
" function loadScript(lib) {\n",
" return new Promise(function(resolve, reject) {\n",
" var s = document.createElement('script');\n",
" s.src = paths[lib];\n",
" s.async = true;\n",
" s.onload = () => resolve(paths[lib]);\n",
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" });\n",
" }\n",
"\n",
" function showError(err) {\n",
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
" throw err;\n",
" }\n",
"\n",
" function displayChart(vegaEmbed) {\n",
" vegaEmbed(outputDiv, spec, embedOpt)\n",
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
" }\n",
"\n",
" if(typeof define === \"function\" && define.amd) {\n",
" requirejs.config({paths});\n",
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
" } else if (typeof vegaEmbed === \"function\") {\n",
" displayChart(vegaEmbed);\n",
" } else {\n",
" loadScript(\"vega\")\n",
" .then(() => loadScript(\"vega-lite\"))\n",
" .then(() => loadScript(\"vega-embed\"))\n",
" .catch(showError)\n",
" .then(() => displayChart(vegaEmbed));\n",
" }\n",
" })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-94b7df8d115da4444f7a88d195cd272e\"}, \"mark\": \"point\", \"encoding\": {\"x\": {\"type\": \"quantitative\", \"field\": \"x\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"y\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\", \"datasets\": {\"data-94b7df8d115da4444f7a88d195cd272e\": [{\"x\": 1, \"y\": 2}]}}, {\"mode\": \"vega-lite\"});\n",
"</script>"
],
"text/plain": [
"alt.Chart(...)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import altair as alt\n",
"\n",
"pd.DataFrame({\"x\": [1], \"y\": [2]}).pipe(alt.Chart).mark_point().encode(x=\"x\", y=\"y\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "connected-scenario",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"lorep\n"
]
},
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.interactiveshell import InteractiveShell\n",
"InteractiveShell.ast_node_interactivity = \"all\"\n",
"\n",
"a = 1\n",
"b = 2\n",
"print(\"lorep\")\n",
"a\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "roman-entry",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe thead tr:last-of-type th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>lorep</th>\n",
" <th colspan=\"2\" halign=\"left\">hey</th>\n",
" <th>bye</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th></th>\n",
" <th>ipsum</th>\n",
" <th>hi</th>\n",
" <th>very_long_word</th>\n",
" <th>hi</th>\n",
" </tr>\n",
" <tr>\n",
" <th>first</th>\n",
" <th>second</th>\n",
" <th>third</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">bar</th>\n",
" <th rowspan=\"2\" valign=\"top\">one</th>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>three</th>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>foo</th>\n",
" <th>one</th>\n",
" <th>1</th>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"lorep hey bye\n",
"ipsum hi very_long_word hi\n",
"first second third \n",
"bar one 1 1 2 4\n",
" 10 3 4 -1\n",
" three 3 3 4 -1\n",
"foo one 1 3 4 -1"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arrays = [\n",
" [\"bar\", \"bar\"],\n",
" [\"one\", \"two\"],\n",
"]\n",
"tuples = list(zip(*arrays))\n",
"index = pd.MultiIndex.from_tuples(\n",
" ((\"bar\", \"one\", 1), (\"bar\", \"one\", 10), (\"bar\", \"three\", 3), (\"foo\", \"one\", 1)),\n",
" names=[\"first\", \"second\", \"third\"],\n",
")\n",
"columns = pd.MultiIndex.from_tuples(\n",
" ((\"hey\", \"hi\"), (\"hey\", \"very_long_word\"), (\"bye\", \"hi\")),\n",
" names=[\"lorep\", \"ipsum\"],\n",
")\n",
"pd.DataFrame([[1, 2, 4], [3, 4, -1], [3, 4, -1], [3, 4, -1]], index=index, columns=columns)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "ee2ab8c8-0743-4205-b3e3-e61b46a32450",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" <head>\n",
" <title>Example</title>\n",
" </head>\n",
" <body>\n",
" <p>This is an example of a simple HTML page with one paragraph.</p>\n",
" </body>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html\n",
" <head>\n",
" <title>Example</title>\n",
" </head>\n",
" <body>\n",
" <p>This is an example of a simple HTML page with one paragraph.</p>\n",
" </body>"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "75513310-7bb6-4897-be2e-7621fb028a8c",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.vega.v5+json": {
"$schema": "https://vega.github.io/schema/vega/v5.0.json",
"axes": [
{
"orient": "bottom",
"scale": "xscale"
},
{
"orient": "left",
"scale": "yscale"
}
],
"data": [
{
"name": "table",
"values": [
{
"amount": 28,
"category": "A"
},
{
"amount": 55,
"category": "B"
},
{
"amount": 43,
"category": "C"
},
{
"amount": 91,
"category": "D"
},
{
"amount": 81,
"category": "E"
},
{
"amount": 53,
"category": "F"
},
{
"amount": 19,
"category": "G"
},
{
"amount": 87,
"category": "H"
}
]
}
],
"height": 200,
"marks": [
{
"encode": {
"enter": {
"width": {
"band": 1,
"scale": "xscale"
},
"x": {
"field": "category",
"scale": "xscale"
},
"y": {
"field": "amount",
"scale": "yscale"
},
"y2": {
"scale": "yscale",
"value": 0
}
},
"hover": {
"fill": {
"value": "red"
}
},
"update": {
"fill": {
"value": "steelblue"
}
}
},
"from": {
"data": "table"
},
"type": "rect"
},
{
"encode": {
"enter": {
"align": {
"value": "center"
},
"baseline": {
"value": "bottom"
},
"fill": {
"value": "#333"
}
},
"update": {
"fillOpacity": [
{
"test": "datum === tooltip",
"value": 0
},
{
"value": 1
}
],
"text": {
"signal": "tooltip.amount"
},
"x": {
"band": 0.5,
"scale": "xscale",
"signal": "tooltip.category"
},
"y": {
"offset": -2,
"scale": "yscale",
"signal": "tooltip.amount"
}
}
},
"type": "text"
}
],
"padding": 5,
"scales": [
{
"domain": {
"data": "table",
"field": "category"
},
"name": "xscale",
"padding": 0.05,
"range": "width",
"round": true,
"type": "band"
},
{
"domain": {
"data": "table",
"field": "amount"
},
"name": "yscale",
"nice": true,
"range": "height"
}
],
"signals": [
{
"name": "tooltip",
"on": [
{
"events": "rect:mouseover",
"update": "datum"
},
{
"events": "rect:mouseout",
"update": "{}"
}
],
"value": {}
}
],
"width": 400
},
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import display\n",
"\n",
"\n",
"def Vega(spec):\n",
" bundle = {}\n",
" bundle[\"application/vnd.vega.v5+json\"] = spec\n",
" display(bundle, raw=True)\n",
"\n",
"\n",
"def VegaLite(spec):\n",
" bundle = {}\n",
" bundle[\"application/vnd.vegalite.v4+json\"] = spec\n",
" display(bundle, raw=True)\n",
"\n",
"\n",
"Vega(\n",
" {\n",
" \"$schema\": \"https://vega.github.io/schema/vega/v5.0.json\",\n",
" \"width\": 400,\n",
" \"height\": 200,\n",
" \"padding\": 5,\n",
" \"data\": [\n",
" {\n",
" \"name\": \"table\",\n",
" \"values\": [\n",
" {\"category\": \"A\", \"amount\": 28},\n",
" {\"category\": \"B\", \"amount\": 55},\n",
" {\"category\": \"C\", \"amount\": 43},\n",
" {\"category\": \"D\", \"amount\": 91},\n",
" {\"category\": \"E\", \"amount\": 81},\n",
" {\"category\": \"F\", \"amount\": 53},\n",
" {\"category\": \"G\", \"amount\": 19},\n",
" {\"category\": \"H\", \"amount\": 87},\n",
" ],\n",
" }\n",
" ],\n",
" \"signals\": [\n",
" {\n",
" \"name\": \"tooltip\",\n",
" \"value\": {},\n",
" \"on\": [\n",
" {\"events\": \"rect:mouseover\", \"update\": \"datum\"},\n",
" {\"events\": \"rect:mouseout\", \"update\": \"{}\"},\n",
" ],\n",
" }\n",
" ],\n",
" \"scales\": [\n",
" {\n",
" \"name\": \"xscale\",\n",
" \"type\": \"band\",\n",
" \"domain\": {\"data\": \"table\", \"field\": \"category\"},\n",
" \"range\": \"width\",\n",
" \"padding\": 0.05,\n",
" \"round\": True,\n",
" },\n",
" {\n",
" \"name\": \"yscale\",\n",
" \"domain\": {\"data\": \"table\", \"field\": \"amount\"},\n",
" \"nice\": True,\n",
" \"range\": \"height\",\n",
" },\n",
" ],\n",
" \"axes\": [\n",
" {\"orient\": \"bottom\", \"scale\": \"xscale\"},\n",
" {\"orient\": \"left\", \"scale\": \"yscale\"},\n",
" ],\n",
" \"marks\": [\n",
" {\n",
" \"type\": \"rect\",\n",
" \"from\": {\"data\": \"table\"},\n",
" \"encode\": {\n",
" \"enter\": {\n",
" \"x\": {\"scale\": \"xscale\", \"field\": \"category\"},\n",
" \"width\": {\"scale\": \"xscale\", \"band\": 1},\n",
" \"y\": {\"scale\": \"yscale\", \"field\": \"amount\"},\n",
" \"y2\": {\"scale\": \"yscale\", \"value\": 0},\n",
" },\n",
" \"update\": {\"fill\": {\"value\": \"steelblue\"}},\n",
" \"hover\": {\"fill\": {\"value\": \"red\"}},\n",
" },\n",
" },\n",
" {\n",
" \"type\": \"text\",\n",
" \"encode\": {\n",
" \"enter\": {\n",
" \"align\": {\"value\": \"center\"},\n",
" \"baseline\": {\"value\": \"bottom\"},\n",
" \"fill\": {\"value\": \"#333\"},\n",
" },\n",
" \"update\": {\n",
" \"x\": {\n",
" \"scale\": \"xscale\",\n",
" \"signal\": \"tooltip.category\",\n",
" \"band\": 0.5,\n",
" },\n",
" \"y\": {\n",
" \"scale\": \"yscale\",\n",
" \"signal\": \"tooltip.amount\",\n",
" \"offset\": -2,\n",
" },\n",
" \"text\": {\"signal\": \"tooltip.amount\"},\n",
" \"fillOpacity\": [\n",
" {\"test\": \"datum === tooltip\", \"value\": 0},\n",
" {\"value\": 1},\n",
" ],\n",
" },\n",
" },\n",
" },\n",
" ],\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "91cd5871-d6b0-423a-9373-61710823e394",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.vegalite.v4+json": {
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {
"values": [
{
"a": "A",
"b": 28
},
{
"a": "B",
"b": 55
},
{
"a": "C",
"b": 43
},
{
"a": "D",
"b": 91
},
{
"a": "E",
"b": 81
},
{
"a": "F",
"b": 53
},
{
"a": "G",
"b": 19
},
{
"a": "H",
"b": 87
},
{
"a": "I",
"b": 52
}
]
},
"description": "A simple bar chart with embedded data.",
"encoding": {
"x": {
"field": "a",
"type": "ordinal"
},
"y": {
"field": "b",
"type": "quantitative"
}
},
"mark": "bar"
},
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"VegaLite(\n",
" {\n",
" \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\",\n",
" \"description\": \"A simple bar chart with embedded data.\",\n",
" \"data\": {\n",
" \"values\": [\n",
" {\"a\": \"A\", \"b\": 28},\n",
" {\"a\": \"B\", \"b\": 55},\n",
" {\"a\": \"C\", \"b\": 43},\n",
" {\"a\": \"D\", \"b\": 91},\n",
" {\"a\": \"E\", \"b\": 81},\n",
" {\"a\": \"F\", \"b\": 53},\n",
" {\"a\": \"G\", \"b\": 19},\n",
" {\"a\": \"H\", \"b\": 87},\n",
" {\"a\": \"I\", \"b\": 52},\n",
" ]\n",
" },\n",
" \"mark\": \"bar\",\n",
" \"encoding\": {\n",
" \"x\": {\"field\": \"a\", \"type\": \"ordinal\"},\n",
" \"y\": {\"field\": \"b\", \"type\": \"quantitative\"},\n",
" },\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b8196d0b-5c19-47ae-9452-927f19a18f63",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"text_representation": {
"extension": ".py",
"format_name": "percent",
"format_version": "1.3",
"jupytext_version": "1.11.2"
}
},
"kernelspec": {
"display_name": "scratch",
"language": "python",
"name": "scratch"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment