{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas para usuarios de Microsoft Excel --- 19:50 min\n",
"\n",
"* 19:50 min | Última modificación: Octubre 6, 2021"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Preparación"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lectura de un archivo CSV"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 16.99 | \n",
" 1.01 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 1 | \n",
" 10.34 | \n",
" 1.66 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 2 | \n",
" 21.01 | \n",
" 3.50 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 23.68 | \n",
" 3.31 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 4 | \n",
" 24.59 | \n",
" 3.61 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"0 16.99 1.01 Female No Sun Dinner 2\n",
"1 10.34 1.66 Male No Sun Dinner 3\n",
"2 21.01 3.50 Male No Sun Dinner 3\n",
"3 23.68 3.31 Male No Sun Dinner 2\n",
"4 24.59 3.61 Female No Sun Dinner 4"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/io/data/csv/tips.csv'\n",
"tips = pd.read_csv(url)\n",
"tips.head(n=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Autofiltro en Microsoft Excel"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Ordenamiento de una columna"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 214 | \n",
" 28.17 | \n",
" 6.50 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 52 | \n",
" 34.81 | \n",
" 5.20 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 85 | \n",
" 34.83 | \n",
" 5.17 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 4 | \n",
"
\n",
" \n",
" 155 | \n",
" 29.85 | \n",
" 5.14 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 5 | \n",
"
\n",
" \n",
" 11 | \n",
" 35.26 | \n",
" 5.00 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 73 | \n",
" 25.28 | \n",
" 5.00 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 143 | \n",
" 27.05 | \n",
" 5.00 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
" 197 | \n",
" 43.11 | \n",
" 5.00 | \n",
" Female | \n",
" Yes | \n",
" Thur | \n",
" Lunch | \n",
" 4 | \n",
"
\n",
" \n",
" 238 | \n",
" 35.83 | \n",
" 4.67 | \n",
" Female | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 93 | \n",
" 16.32 | \n",
" 4.30 | \n",
" Female | \n",
" Yes | \n",
" Fri | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"214 28.17 6.50 Female Yes Sat Dinner 3\n",
"52 34.81 5.20 Female No Sun Dinner 4\n",
"85 34.83 5.17 Female No Thur Lunch 4\n",
"155 29.85 5.14 Female No Sun Dinner 5\n",
"11 35.26 5.00 Female No Sun Dinner 4\n",
"73 25.28 5.00 Female Yes Sat Dinner 2\n",
"143 27.05 5.00 Female No Thur Lunch 6\n",
"197 43.11 5.00 Female Yes Thur Lunch 4\n",
"238 35.83 4.67 Female No Sat Dinner 3\n",
"93 16.32 4.30 Female Yes Fri Dinner 2"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.sort_values(\n",
" by=[\"sex\", \"tip\"],\n",
" ascending=[True, False],\n",
").head(n=10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Filtrado"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 23 | \n",
" 39.42 | \n",
" 7.58 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 59 | \n",
" 48.27 | \n",
" 6.73 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 141 | \n",
" 34.30 | \n",
" 6.70 | \n",
" Male | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
" 170 | \n",
" 50.81 | \n",
" 10.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 212 | \n",
" 48.33 | \n",
" 9.00 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"59 48.27 6.73 Male No Sat Dinner 4\n",
"141 34.30 6.70 Male No Thur Lunch 6\n",
"170 50.81 10.00 Male Yes Sat Dinner 3\n",
"212 48.33 9.00 Male No Sat Dinner 4"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Filtro \"Mayor que\"\n",
"#\n",
"tips[tips['tip'] > 6.50].head(n=10)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 23 | \n",
" 39.42 | \n",
" 7.58 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 59 | \n",
" 48.27 | \n",
" 6.73 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 141 | \n",
" 34.30 | \n",
" 6.70 | \n",
" Male | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
" 170 | \n",
" 50.81 | \n",
" 10.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 212 | \n",
" 48.33 | \n",
" 9.00 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"59 48.27 6.73 Male No Sat Dinner 4\n",
"141 34.30 6.70 Male No Thur Lunch 6\n",
"170 50.81 10.00 Male Yes Sat Dinner 3\n",
"212 48.33 9.00 Male No Sat Dinner 4"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Comando equivalente con query\n",
"#\n",
"tips.query('tip > 6.50').head(n=10)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 23 | \n",
" 39.42 | \n",
" 7.58 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 59 | \n",
" 48.27 | \n",
" 6.73 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 170 | \n",
" 50.81 | \n",
" 10.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 212 | \n",
" 48.33 | \n",
" 9.00 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"59 48.27 6.73 Male No Sat Dinner 4\n",
"170 50.81 10.00 Male Yes Sat Dinner 3\n",
"212 48.33 9.00 Male No Sat Dinner 4"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Filtro con condicional compuesto\n",
"#\n",
"tips[(tips['tip'] > 6.50) & (tips['time'] == 'Dinner')].head(n=10)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 219 | \n",
" 30.14 | \n",
" 3.09 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 221 | \n",
" 13.42 | \n",
" 3.48 | \n",
" Female | \n",
" Yes | \n",
" Fri | \n",
" Lunch | \n",
" 2 | \n",
"
\n",
" \n",
" 223 | \n",
" 15.98 | \n",
" 3.00 | \n",
" Female | \n",
" No | \n",
" Fri | \n",
" Lunch | \n",
" 3 | \n",
"
\n",
" \n",
" 227 | \n",
" 20.45 | \n",
" 3.00 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 231 | \n",
" 15.69 | \n",
" 3.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 232 | \n",
" 11.61 | \n",
" 3.39 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 234 | \n",
" 15.53 | \n",
" 3.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 238 | \n",
" 35.83 | \n",
" 4.67 | \n",
" Female | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 239 | \n",
" 29.03 | \n",
" 5.92 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 243 | \n",
" 18.78 | \n",
" 3.00 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"219 30.14 3.09 Female Yes Sat Dinner 4\n",
"221 13.42 3.48 Female Yes Fri Lunch 2\n",
"223 15.98 3.00 Female No Fri Lunch 3\n",
"227 20.45 3.00 Male No Sat Dinner 4\n",
"231 15.69 3.00 Male Yes Sat Dinner 3\n",
"232 11.61 3.39 Male No Sat Dinner 2\n",
"234 15.53 3.00 Male Yes Sat Dinner 2\n",
"238 35.83 4.67 Female No Sat Dinner 3\n",
"239 29.03 5.92 Male No Sat Dinner 3\n",
"243 18.78 3.00 Female No Thur Dinner 2"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Filtro \"Por encima del promedio\"\n",
"#\n",
"tips[\n",
" tips['tip'] > tips['tip'].mean()\n",
"].tail(n=10)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.99827868852459"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Cómputo del promedio\n",
"#\n",
"tips['tip'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 170 | \n",
" 50.81 | \n",
" 10.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 212 | \n",
" 48.33 | \n",
" 9.00 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 23 | \n",
" 39.42 | \n",
" 7.58 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 59 | \n",
" 48.27 | \n",
" 6.73 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 141 | \n",
" 34.30 | \n",
" 6.70 | \n",
" Male | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
" 183 | \n",
" 23.17 | \n",
" 6.50 | \n",
" Male | \n",
" Yes | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 214 | \n",
" 28.17 | \n",
" 6.50 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 47 | \n",
" 32.40 | \n",
" 6.00 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" 239 | \n",
" 29.03 | \n",
" 5.92 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 88 | \n",
" 24.71 | \n",
" 5.85 | \n",
" Male | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"170 50.81 10.00 Male Yes Sat Dinner 3\n",
"212 48.33 9.00 Male No Sat Dinner 4\n",
"23 39.42 7.58 Male No Sat Dinner 4\n",
"59 48.27 6.73 Male No Sat Dinner 4\n",
"141 34.30 6.70 Male No Thur Lunch 6\n",
"183 23.17 6.50 Male Yes Sun Dinner 4\n",
"214 28.17 6.50 Female Yes Sat Dinner 3\n",
"47 32.40 6.00 Male No Sun Dinner 4\n",
"239 29.03 5.92 Male No Sat Dinner 3\n",
"88 24.71 5.85 Male No Thur Lunch 2"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Diez mejores\n",
"#\n",
"tips.nlargest(10, 'tip')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 67 | \n",
" 3.07 | \n",
" 1.00 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 1 | \n",
"
\n",
" \n",
" 92 | \n",
" 5.75 | \n",
" 1.00 | \n",
" Female | \n",
" Yes | \n",
" Fri | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 111 | \n",
" 7.25 | \n",
" 1.00 | \n",
" Female | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 1 | \n",
"
\n",
" \n",
" 236 | \n",
" 12.60 | \n",
" 1.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 0 | \n",
" 16.99 | \n",
" 1.01 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 215 | \n",
" 12.90 | \n",
" 1.10 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 237 | \n",
" 32.83 | \n",
" 1.17 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 75 | \n",
" 10.51 | \n",
" 1.25 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 135 | \n",
" 8.51 | \n",
" 1.25 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Lunch | \n",
" 2 | \n",
"
\n",
" \n",
" 235 | \n",
" 10.07 | \n",
" 1.25 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size\n",
"67 3.07 1.00 Female Yes Sat Dinner 1\n",
"92 5.75 1.00 Female Yes Fri Dinner 2\n",
"111 7.25 1.00 Female No Sat Dinner 1\n",
"236 12.60 1.00 Male Yes Sat Dinner 2\n",
"0 16.99 1.01 Female No Sun Dinner 2\n",
"215 12.90 1.10 Female Yes Sat Dinner 2\n",
"237 32.83 1.17 Male Yes Sat Dinner 2\n",
"75 10.51 1.25 Male No Sat Dinner 2\n",
"135 8.51 1.25 Female No Thur Lunch 2\n",
"235 10.07 1.25 Male No Sat Dinner 2"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Diez inferiores\n",
"#\n",
"tips.nsmallest(10, 'tip')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Eliminación de una columna"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 16.99 | \n",
" 1.01 | \n",
" Female | \n",
" No | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 1 | \n",
" 10.34 | \n",
" 1.66 | \n",
" Male | \n",
" No | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 2 | \n",
" 21.01 | \n",
" 3.50 | \n",
" Male | \n",
" No | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 23.68 | \n",
" 3.31 | \n",
" Male | \n",
" No | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 4 | \n",
" 24.59 | \n",
" 3.61 | \n",
" Female | \n",
" No | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 239 | \n",
" 29.03 | \n",
" 5.92 | \n",
" Male | \n",
" No | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 240 | \n",
" 27.18 | \n",
" 2.00 | \n",
" Female | \n",
" Yes | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 241 | \n",
" 22.67 | \n",
" 2.00 | \n",
" Male | \n",
" Yes | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 242 | \n",
" 17.82 | \n",
" 1.75 | \n",
" Male | \n",
" No | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 243 | \n",
" 18.78 | \n",
" 3.00 | \n",
" Female | \n",
" No | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
244 rows × 6 columns
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker time size\n",
"0 16.99 1.01 Female No Dinner 2\n",
"1 10.34 1.66 Male No Dinner 3\n",
"2 21.01 3.50 Male No Dinner 3\n",
"3 23.68 3.31 Male No Dinner 2\n",
"4 24.59 3.61 Female No Dinner 4\n",
".. ... ... ... ... ... ...\n",
"239 29.03 5.92 Male No Dinner 3\n",
"240 27.18 2.00 Female Yes Dinner 2\n",
"241 22.67 2.00 Male Yes Dinner 2\n",
"242 17.82 1.75 Male No Dinner 2\n",
"243 18.78 3.00 Female No Dinner 2\n",
"\n",
"[244 rows x 6 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.drop(\"day\", axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cambio del nombre de una columna"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" is_smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 16.99 | \n",
" 1.01 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 1 | \n",
" 10.34 | \n",
" 1.66 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 2 | \n",
" 21.01 | \n",
" 3.50 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 23.68 | \n",
" 3.31 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 4 | \n",
" 24.59 | \n",
" 3.61 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 239 | \n",
" 29.03 | \n",
" 5.92 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
"
\n",
" \n",
" 240 | \n",
" 27.18 | \n",
" 2.00 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 241 | \n",
" 22.67 | \n",
" 2.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 242 | \n",
" 17.82 | \n",
" 1.75 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
" 243 | \n",
" 18.78 | \n",
" 3.00 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Dinner | \n",
" 2 | \n",
"
\n",
" \n",
"
\n",
"
244 rows × 7 columns
\n",
"
"
],
"text/plain": [
" total_bill tip sex is_smoker day time size\n",
"0 16.99 1.01 Female No Sun Dinner 2\n",
"1 10.34 1.66 Male No Sun Dinner 3\n",
"2 21.01 3.50 Male No Sun Dinner 3\n",
"3 23.68 3.31 Male No Sun Dinner 2\n",
"4 24.59 3.61 Female No Sun Dinner 4\n",
".. ... ... ... ... ... ... ...\n",
"239 29.03 5.92 Male No Sat Dinner 3\n",
"240 27.18 2.00 Female Yes Sat Dinner 2\n",
"241 22.67 2.00 Male Yes Sat Dinner 2\n",
"242 17.82 1.75 Male No Sat Dinner 2\n",
"243 18.78 3.00 Female No Thur Dinner 2\n",
"\n",
"[244 rows x 7 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.rename(\n",
" columns={\"smoker\": \"is_smoker\"},\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Subtotales"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sex\n",
"Female 87\n",
"Male 157\n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Contar -- size()\n",
"#\n",
"tips.groupby('sex').size()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" sex | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Female | \n",
" 87 | \n",
" 87 | \n",
" 87 | \n",
" 87 | \n",
" 87 | \n",
" 87 | \n",
"
\n",
" \n",
" Male | \n",
" 157 | \n",
" 157 | \n",
" 157 | \n",
" 157 | \n",
" 157 | \n",
" 157 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip smoker day time size\n",
"sex \n",
"Female 87 87 87 87 87 87\n",
"Male 157 157 157 157 157 157"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Contar -- size() vs count()\n",
"#\n",
"tips.groupby('sex').count()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
"
\n",
" \n",
" sex | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Female | \n",
" 44.30 | \n",
" 6.5 | \n",
" Yes | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
" Male | \n",
" 50.81 | \n",
" 10.0 | \n",
" Yes | \n",
" Thur | \n",
" Lunch | \n",
" 6 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" total_bill tip smoker day time size\n",
"sex \n",
"Female 44.30 6.5 Yes Thur Lunch 6\n",
"Male 50.81 10.0 Yes Thur Lunch 6"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Contar -- max(), min(), ...\n",
"#\n",
"tips.groupby('sex').max()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tip | \n",
" total_bill | \n",
"
\n",
" \n",
" sex | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Female | \n",
" 6.5 | \n",
" 18.056897 | \n",
"
\n",
" \n",
" Male | \n",
" 10.0 | \n",
" 20.744076 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tip total_bill\n",
"sex \n",
"Female 6.5 18.056897\n",
"Male 10.0 20.744076"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Funciones diferenciales por columna\n",
"#\n",
"tips.groupby(\"sex\").agg(\n",
" {\n",
" \"tip\": np.max,\n",
" \"total_bill\": np.mean,\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tip | \n",
" total_bill | \n",
"
\n",
" \n",
" sex | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Female | \n",
" 6.5 | \n",
" 18.056897 | \n",
"
\n",
" \n",
" Male | \n",
" 10.0 | \n",
" 20.744076 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tip total_bill\n",
"sex \n",
"Female 6.5 18.056897\n",
"Male 10.0 20.744076"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.groupby(\n",
" \"sex\", \n",
" as_index=True,\n",
").agg(\n",
" {\n",
" \"tip\": np.max,\n",
" \"total_bill\": np.mean,\n",
" }\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tip | \n",
" total_bill | \n",
"
\n",
" \n",
" sex | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" Female | \n",
" 6.5 | \n",
" 18.056897 | \n",
"
\n",
" \n",
" Male | \n",
" 10.0 | \n",
" 20.744076 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tip total_bill\n",
"sex \n",
"Female 6.5 18.056897\n",
"Male 10.0 20.744076"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Opción as_index\n",
"#\n",
"tips.groupby(\n",
" \"sex\",\n",
" as_index=True,\n",
").agg({\"tip\": np.max, \"total_bill\": np.mean})"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" sex | \n",
" tip | \n",
" total_bill | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Female | \n",
" 6.5 | \n",
" 18.056897 | \n",
"
\n",
" \n",
" 1 | \n",
" Male | \n",
" 10.0 | \n",
" 20.744076 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sex tip total_bill\n",
"0 Female 6.5 18.056897\n",
"1 Male 10.0 20.744076"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.groupby(\n",
" \"sex\",\n",
" as_index=False,\n",
").agg({\"tip\": np.max, \"total_bill\": np.mean})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computos sobre las columnas de una tabla"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size'], dtype='object')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tips.columns"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" total_bill | \n",
" tip | \n",
" sex | \n",
" smoker | \n",
" day | \n",
" time | \n",
" size | \n",
" tax10 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 16.99 | \n",
" 1.01 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
" 1.699 | \n",
"
\n",
" \n",
" 1 | \n",
" 10.34 | \n",
" 1.66 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
" 1.034 | \n",
"
\n",
" \n",
" 2 | \n",
" 21.01 | \n",
" 3.50 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 3 | \n",
" 2.101 | \n",
"
\n",
" \n",
" 3 | \n",
" 23.68 | \n",
" 3.31 | \n",
" Male | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 2 | \n",
" 2.368 | \n",
"
\n",
" \n",
" 4 | \n",
" 24.59 | \n",
" 3.61 | \n",
" Female | \n",
" No | \n",
" Sun | \n",
" Dinner | \n",
" 4 | \n",
" 2.459 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 239 | \n",
" 29.03 | \n",
" 5.92 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 3 | \n",
" 2.903 | \n",
"
\n",
" \n",
" 240 | \n",
" 27.18 | \n",
" 2.00 | \n",
" Female | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
" 2.718 | \n",
"
\n",
" \n",
" 241 | \n",
" 22.67 | \n",
" 2.00 | \n",
" Male | \n",
" Yes | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
" 2.267 | \n",
"
\n",
" \n",
" 242 | \n",
" 17.82 | \n",
" 1.75 | \n",
" Male | \n",
" No | \n",
" Sat | \n",
" Dinner | \n",
" 2 | \n",
" 1.782 | \n",
"
\n",
" \n",
" 243 | \n",
" 18.78 | \n",
" 3.00 | \n",
" Female | \n",
" No | \n",
" Thur | \n",
" Dinner | \n",
" 2 | \n",
" 1.878 | \n",
"
\n",
" \n",
"
\n",
"
244 rows × 8 columns
\n",
"
"
],
"text/plain": [
" total_bill tip sex smoker day time size tax10\n",
"0 16.99 1.01 Female No Sun Dinner 2 1.699\n",
"1 10.34 1.66 Male No Sun Dinner 3 1.034\n",
"2 21.01 3.50 Male No Sun Dinner 3 2.101\n",
"3 23.68 3.31 Male No Sun Dinner 2 2.368\n",
"4 24.59 3.61 Female No Sun Dinner 4 2.459\n",
".. ... ... ... ... ... ... ... ...\n",
"239 29.03 5.92 Male No Sat Dinner 3 2.903\n",
"240 27.18 2.00 Female Yes Sat Dinner 2 2.718\n",
"241 22.67 2.00 Male Yes Sat Dinner 2 2.267\n",
"242 17.82 1.75 Male No Sat Dinner 2 1.782\n",
"243 18.78 3.00 Female No Thur Dinner 2 1.878\n",
"\n",
"[244 rows x 8 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Una nueva columna\n",
"#\n",
"tips.assign(tax10=0.1 * tips.total_bill)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Valores | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 10 | \n",
"
\n",
" \n",
" 1 | \n",
" 21 | \n",
"
\n",
" \n",
" 2 | \n",
" 32 | \n",
"
\n",
" \n",
" 3 | \n",
" 42 | \n",
"
\n",
" \n",
" 4 | \n",
" 55 | \n",
"
\n",
" \n",
" 5 | \n",
" 61 | \n",
"
\n",
" \n",
" 6 | \n",
" 74 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Valores\n",
"0 10\n",
"1 21\n",
"2 32\n",
"3 42\n",
"4 55\n",
"5 61\n",
"6 74"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Computos con valores respecto a otras filas\n",
"#\n",
"x = pd.DataFrame([10, 21, 32, 42, 55, 61, 74], columns=['Valores'])\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Valores | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 10 | \n",
"
\n",
" \n",
" 3 | \n",
" 21 | \n",
"
\n",
" \n",
" 4 | \n",
" 32 | \n",
"
\n",
" \n",
" 5 | \n",
" 42 | \n",
"
\n",
" \n",
" 6 | \n",
" 55 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Valores\n",
"0 0\n",
"1 0\n",
"2 10\n",
"3 21\n",
"4 32\n",
"5 42\n",
"6 55"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.shift(periods=2, fill_value=0)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Valores | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 32 | \n",
"
\n",
" \n",
" 1 | \n",
" 42 | \n",
"
\n",
" \n",
" 2 | \n",
" 55 | \n",
"
\n",
" \n",
" 3 | \n",
" 61 | \n",
"
\n",
" \n",
" 4 | \n",
" 74 | \n",
"
\n",
" \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" 6 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Valores\n",
"0 32\n",
"1 42\n",
"2 55\n",
"3 61\n",
"4 74\n",
"5 0\n",
"6 0"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.shift(periods=-2, fill_value=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Escenarios"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Alternativa 1\n",
"#\n",
"escenarios = [\n",
" (1, 2, 3),\n",
" (4, 5, 6),\n",
" (7, 8, 9),\n",
" (10, 11, 12),\n",
"]\n",
"a, b, c = escenarios[1]\n",
"a + b + c"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Alterantiva 2\n",
"#\n",
"def f(a, b, c):\n",
" return a + b + c\n",
"\n",
"\n",
"escenarios = [\n",
" {\"a\": 1, \"b\": 2, \"c\": 3},\n",
" {\"a\": 4, \"b\": 5, \"c\": 6},\n",
" {\"a\": 7, \"b\": 8, \"c\": 9},\n",
" {\"a\": 10, \"b\": 11, \"c\": 12},\n",
"]\n",
"f(**escenarios[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tablas dinámicas"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Escenario | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Escenario\n",
"0 0\n",
"1 1\n",
"2 2\n",
"3 3"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#\n",
"# Del ejemplo anterior\n",
"# \n",
"def f(a, b, c):\n",
" return a + b + c\n",
"\n",
"escenarios = [\n",
" {\"a\": 1, \"b\": 2, \"c\": 3},\n",
" {\"a\": 4, \"b\": 5, \"c\": 6},\n",
" {\"a\": 7, \"b\": 8, \"c\": 9},\n",
" {\"a\": 10, \"b\": 11, \"c\": 12},\n",
"]\n",
"\n",
"z = pd.DataFrame(range(len(escenarios)), columns=['Escenario'])\n",
"z"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Escenario | \n",
" f | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 6 | \n",
"
\n",
" \n",
" 1 | \n",
" 1 | \n",
" 15 | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" 24 | \n",
"
\n",
" \n",
" 3 | \n",
" 3 | \n",
" 33 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Escenario f\n",
"0 0 6\n",
"1 1 15\n",
"2 2 24\n",
"3 3 33"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z['f'] = [f(**escenarios[i]) for i in z['Escenario']]\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solver"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"14"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f0(x):\n",
" return sum([i**2 for i in x])\n",
"\n",
"# 1^2 + 2^2 + 3^2 = 14\n",
"f0([1, 2, 3])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-1.17452324e-08, -8.75678727e-09, -3.66353142e-09])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.optimize import minimize\n",
"\n",
"minimize(f0, x0=[1, 2, 3]).x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Styles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Basado en:\n",
"\n",
"https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" A | \n",
" B | \n",
" C | \n",
" D | \n",
" E | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1.0 | \n",
" 1.329212 | \n",
" NaN | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.0 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.0 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.0 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" NaN | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.0 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.0 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.0 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.0 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.0 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.0 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" A B C D E\n",
"0 1.0 1.329212 NaN -0.316280 -0.990810\n",
"1 2.0 -1.070816 -1.438713 0.564417 0.295722\n",
"2 3.0 -1.626404 0.219565 0.678805 1.889273\n",
"3 4.0 0.961538 0.104011 NaN 0.850229\n",
"4 5.0 1.453425 1.057737 0.165562 0.515018\n",
"5 6.0 -1.336936 0.562861 1.392855 -0.063328\n",
"6 7.0 0.121668 1.207603 -0.002040 1.627796\n",
"7 8.0 0.354493 1.037528 -0.385684 0.519818\n",
"8 9.0 1.686583 -1.325963 1.428984 -2.089354\n",
"9 10.0 -0.129820 0.631523 -0.586538 0.290720"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"np.random.seed(24)\n",
"df = pd.DataFrame({'A': np.linspace(1, 10, 10)})\n",
"df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],\n",
" axis=1)\n",
"df.iloc[3, 3] = np.nan\n",
"df.iloc[0, 2] = np.nan\n",
"\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def color_negative_red(val):\n",
" color = 'red' if val < 0 else 'black'\n",
" return 'color: %s' % color\n",
"\n",
"df.style.applymap(color_negative_red)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def highlight_max(s):\n",
" is_max = s == s.max()\n",
" return ['background-color: yellow' if v else '' for v in is_max]\n",
"\n",
"df.style.apply(highlight_max)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.\\\n",
" applymap(color_negative_red).\\\n",
" apply(highlight_max)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.apply(highlight_max, subset=['B', 'C', 'D'])"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.applymap(color_negative_red, subset=pd.IndexSlice[2:5, [\"B\", \"D\"]])"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 100.00% | \n",
" 132.92% | \n",
" nan% | \n",
" -31.63% | \n",
" -99.08% | \n",
"
\n",
" \n",
" 1 | \n",
" 200.00% | \n",
" -107.08% | \n",
" -143.87% | \n",
" 56.44% | \n",
" 29.57% | \n",
"
\n",
" \n",
" 2 | \n",
" 300.00% | \n",
" -162.64% | \n",
" 21.96% | \n",
" 67.88% | \n",
" 188.93% | \n",
"
\n",
" \n",
" 3 | \n",
" 400.00% | \n",
" 96.15% | \n",
" 10.40% | \n",
" nan% | \n",
" 85.02% | \n",
"
\n",
" \n",
" 4 | \n",
" 500.00% | \n",
" 145.34% | \n",
" 105.77% | \n",
" 16.56% | \n",
" 51.50% | \n",
"
\n",
" \n",
" 5 | \n",
" 600.00% | \n",
" -133.69% | \n",
" 56.29% | \n",
" 139.29% | \n",
" -6.33% | \n",
"
\n",
" \n",
" 6 | \n",
" 700.00% | \n",
" 12.17% | \n",
" 120.76% | \n",
" -0.20% | \n",
" 162.78% | \n",
"
\n",
" \n",
" 7 | \n",
" 800.00% | \n",
" 35.45% | \n",
" 103.75% | \n",
" -38.57% | \n",
" 51.98% | \n",
"
\n",
" \n",
" 8 | \n",
" 900.00% | \n",
" 168.66% | \n",
" -132.60% | \n",
" 142.90% | \n",
" -208.94% | \n",
"
\n",
" \n",
" 9 | \n",
" 1000.00% | \n",
" -12.98% | \n",
" 63.15% | \n",
" -58.65% | \n",
" 29.07% | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.format(\"{:.2%}\")"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1000 | \n",
" nan | \n",
" -0.32 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -100 | \n",
" -1.438713 | \n",
" +0.56 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -200 | \n",
" 0.219565 | \n",
" +0.68 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 1000 | \n",
" 0.104011 | \n",
" +nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1000 | \n",
" 1.057737 | \n",
" +0.17 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -100 | \n",
" 0.562861 | \n",
" +1.39 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0000 | \n",
" 1.207603 | \n",
" -0.00 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0000 | \n",
" 1.037528 | \n",
" -0.39 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 2000 | \n",
" -1.325963 | \n",
" +1.43 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -000 | \n",
" 0.631523 | \n",
" -0.59 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.format({'B': \"{:0<4.0f}\", 'D': '{:+.2f}'})"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" ±1.33 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" ±1.07 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" ±1.63 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" ±0.96 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" ±1.45 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" ±1.34 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" ±0.12 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" ±0.35 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" ±1.69 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" ±0.13 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.format({\"B\": lambda x: \"±{:.2f}\".format(abs(x))})"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 100.00% | \n",
" 132.92% | \n",
" - | \n",
" -31.63% | \n",
" -99.08% | \n",
"
\n",
" \n",
" 1 | \n",
" 200.00% | \n",
" -107.08% | \n",
" -143.87% | \n",
" 56.44% | \n",
" 29.57% | \n",
"
\n",
" \n",
" 2 | \n",
" 300.00% | \n",
" -162.64% | \n",
" 21.96% | \n",
" 67.88% | \n",
" 188.93% | \n",
"
\n",
" \n",
" 3 | \n",
" 400.00% | \n",
" 96.15% | \n",
" 10.40% | \n",
" - | \n",
" 85.02% | \n",
"
\n",
" \n",
" 4 | \n",
" 500.00% | \n",
" 145.34% | \n",
" 105.77% | \n",
" 16.56% | \n",
" 51.50% | \n",
"
\n",
" \n",
" 5 | \n",
" 600.00% | \n",
" -133.69% | \n",
" 56.29% | \n",
" 139.29% | \n",
" -6.33% | \n",
"
\n",
" \n",
" 6 | \n",
" 700.00% | \n",
" 12.17% | \n",
" 120.76% | \n",
" -0.20% | \n",
" 162.78% | \n",
"
\n",
" \n",
" 7 | \n",
" 800.00% | \n",
" 35.45% | \n",
" 103.75% | \n",
" -38.57% | \n",
" 51.98% | \n",
"
\n",
" \n",
" 8 | \n",
" 900.00% | \n",
" 168.66% | \n",
" -132.60% | \n",
" 142.90% | \n",
" -208.94% | \n",
"
\n",
" \n",
" 9 | \n",
" 1000.00% | \n",
" -12.98% | \n",
" 63.15% | \n",
" -58.65% | \n",
" 29.07% | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.format(\"{:.2%}\", na_rep=\"-\")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.highlight_null(null_color='red')"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"cm = sns.light_palette(\"green\", as_cmap=True)\n",
"\n",
"df.style.background_gradient(cmap=cm)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[:4].style.background_gradient(cmap='viridis')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.highlight_max(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.bar(subset=['A', 'B'], color='#d65f5f')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | C | D | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.bar(subset=['A', 'B'], align='mid', color=['#d65f5f', '#5fba7d'])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" A | B | C | D | E |
\n",
" \n",
" 1.000000 | \n",
" 1.329212 | \n",
" nan | \n",
" -0.316280 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 2.000000 | \n",
" -1.070816 | \n",
" -1.438713 | \n",
" 0.564417 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 0.219565 | \n",
" 0.678805 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.104011 | \n",
" nan | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 1.057737 | \n",
" 0.165562 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 6.000000 | \n",
" -1.336936 | \n",
" 0.562861 | \n",
" 1.392855 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.207603 | \n",
" -0.002040 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 1.037528 | \n",
" -0.385684 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -1.325963 | \n",
" 1.428984 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.631523 | \n",
" -0.586538 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.hide_index()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" | A | B | E |
\n",
" \n",
" 0 | \n",
" 1.000000 | \n",
" 1.329212 | \n",
" -0.990810 | \n",
"
\n",
" \n",
" 1 | \n",
" 2.000000 | \n",
" -1.070816 | \n",
" 0.295722 | \n",
"
\n",
" \n",
" 2 | \n",
" 3.000000 | \n",
" -1.626404 | \n",
" 1.889273 | \n",
"
\n",
" \n",
" 3 | \n",
" 4.000000 | \n",
" 0.961538 | \n",
" 0.850229 | \n",
"
\n",
" \n",
" 4 | \n",
" 5.000000 | \n",
" 1.453425 | \n",
" 0.515018 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.000000 | \n",
" -1.336936 | \n",
" -0.063328 | \n",
"
\n",
" \n",
" 6 | \n",
" 7.000000 | \n",
" 0.121668 | \n",
" 1.627796 | \n",
"
\n",
" \n",
" 7 | \n",
" 8.000000 | \n",
" 0.354493 | \n",
" 0.519818 | \n",
"
\n",
" \n",
" 8 | \n",
" 9.000000 | \n",
" 1.686583 | \n",
" -2.089354 | \n",
"
\n",
" \n",
" 9 | \n",
" 10.000000 | \n",
" -0.129820 | \n",
" 0.290720 | \n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.style.hide_columns(['C','D'])"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}