From 2dd672111795aa66f8a2e54da3b289adf17b50cf Mon Sep 17 00:00:00 2001 From: kiko Date: Sat, 17 Nov 2018 11:22:13 +0100 Subject: [PATCH 1/6] =?UTF-8?q?Nuevo=20art=C3=ADculo=20Loter=C3=ADa=20de?= =?UTF-8?q?=20Navidad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../notebooks/TOLoNteria_de_Navidad.ipynb | 1286 +++++++++++++++++ content/images/2018/11/Combinaciones.png | Bin 0 -> 21509 bytes 2 files changed, 1286 insertions(+) create mode 100644 content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb create mode 100644 content/images/2018/11/Combinaciones.png diff --git a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb new file mode 100644 index 00000000..bf242685 --- /dev/null +++ b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb @@ -0,0 +1,1286 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voy a empezar con un chiste:\n", + "\n", + "> Un vecino del pueblo pregunta: -*Oye, ¿a tí por qué te llaman 'el Campanas'?*-\n", + "\n", + "> 'El Campanas' responde: -*Tolón, tolón,..., tolonterías del pueblo...*-" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De ahí, de *tolontería*, voy a derivar y relacionar *tontería* y *lotería* (qué bien hilado..., lo sé)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sí, lo habéis adivinado, vamos a calcular las estadísticas de la lotería de navidad para ver si es tontería o es una buena oportunidad de ganar un buen dinero." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ¿Qué es la lotería de navidad (española)?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para los que no sean españoles o sean españoles que viven en una cueva y nunca se han comunicado con otro español que no viva en una cueva, la lotería de navidad es un [sorteo de lotería que se realiza cada 22 de diciembre desde el año 1811](https://es.wikipedia.org/wiki/Sorteo_Extraordinario_de_Navidad).\n", + "\n", + "En el sorteo de 2018 se van a usar 100.000 números y de cada número se van a sacar 170 series, es decir, que cada número se repetirá 170 veces. Cada número de cada serie es un billete y el billete se divide en 10 décimos. O sea, tenemos:\n", + "\n", + "$$ 100.000 \\quad números \\quad x \\quad 170 \\quad series \\quad = \\quad 17.000.000 \\quad billetes $$\n", + "$$ 17.000.000 \\quad x \\quad 10 \\quad décimos \\quad = \\quad 170.000.000 \\quad décimos $$ \n", + "\n", + "Cada décimo cuesta 20 € por lo que si se vendiera todo se recaudarían 3.400.000.000 €.\n", + "\n", + "Según leo en varios sitios, en los últimos años se vende alrededor del 70% de décimos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Los premios de la lotería de Navidad (visto en 2018)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hay muchas posibilidades (ahora lo veremos en detalle) de que te toque algo... pero hay más de que no ganes nada." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\t\n", + "\t\t\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
premios por serieTotal premiosImporte en eurosCantidad ganada(Por euro jugado)
El Gordo (primer premio)14.000.00020.000€
Segundo premio11.250.0006.250€
Tercer premio1500.0002.500€
Cuartos premios2200.0001.000€
Quintos premios860.000300€
Pedreas de 5 cifras1.7941.0005€
Aproximación primer premio220.000100€
Aproximación segundo premio212.50062,5€
Aproximación tercer premio29.60048€
Centenas del primer premio991.0005€
Centenas del segundo premio991.0005€
Centenas del tercer premio991.0005€
Centenas de dos cuartos premio1981.0005€
Dos últimas del primer premio9991.0006€
Dos últimas del segundo premio9991.0005€
Dos últimas del tercer premio9991.0005€
Reintegros (última cifra Gordo)9.9992001€
TOTALES POR SERIE15.304 70% en premios
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Vamos a empezar a calcular estadísticas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**[AVISO: En algunas partes verás código de programación. Este código servirá para hacer los cálculos pero espero que no sea relevante saber programar en Python para que puedas seguir el hilo]**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En la tabla anterior los premios son por billete (que son 10 décimos). Lo normal es que la gente compre un décimo y no un billete completo (10 décimos, 200 €).\n", + "\n", + "Viendo la tabla anterior vemos que si compras un décimo tienes 1 entre 100.000 posibilidades de que te toquen 400.000 €, de los cuales [la Agencia Tributaria](https://es.wikipedia.org/wiki/Agencia_Estatal_de_Administraci%C3%B3n_Tributaria) se llevará el 20% de todo lo que sobrepase los 10.000 € (\\*).\n", + "\n", + "_(\\*) Todos los premios que sobrepasen los 10.000 € (en 2018) pagan el 20% del valor por encima de esos 10.000 € en impuestos. Aunque [esto irá cambiando en el futuro](http://www.expansion.com/economia/declaracion-renta/2018/05/16/5afc2b26468aebf9238b46e3.html)._\n", + "\n", + "Por tanto, si te tocan 400.000€ en 2018 pagarás:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "78000.0 € a Hacienda\n" + ] + } + ], + "source": [ + "print(f\"{(400_000 - 10_000) * 0.2} € a Hacienda\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por tanto, si pagas 78.000 € a hacienda te quedarán:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "322000 € para ti\n" + ] + } + ], + "source": [ + "print(f\"{400_000 - 78_000} € para ti\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Como hemos comentado más arriba, tienes una posibilidad entre 100.000 de que salga tu número en el sorteo. Por tanto, tienes las siguientes probabilidades de que te toque un premio tan cuantioso, por encima de 300.000 €:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.001% de que te toque\n" + ] + } + ], + "source": [ + "print(f\"{100 * 1 / 100_000}% de que te toque\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y las siguientes de que NO te toque." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "99.999% de que NO te toque\n" + ] + } + ], + "source": [ + "print(f\"{100 * 99_999 / 100_000}% de que NO te toque\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por otro lado, vemos que hay premios en hasta 15.304 combinaciones, que no números, diferentes de los 100.000 en juego. Por simplificar un poco en este punto vamos a considerar que son 15.304 números los que pueden resultar premiados (serán menos, luego lo veremos), por tanto, bajo este supuesto la probabilidad de que al menos recuperemos la inversión inicial (los 20 € del décimo) sería:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15.304% de que al menos recuperes lo invertido\n" + ] + } + ], + "source": [ + "print(f\"{100 * 15_304 / 100_000}% de que al menos recuperes lo invertido\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por otro lado, la probabilidad de perder tus 20 € sería:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "84.696% de perderlo todo\n" + ] + } + ], + "source": [ + "print(f\"{100 - 100 * 15_304 / 100_000}% de perderlo todo\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Vamos a seguir calculando estadísticas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Cual sería la probabilidad de ganar algo? Si cobras el reintegro, simplificando nuevamente, no estás ganando nada, solo te quedas como estabas, con tus 20 € en el bolsillo, por lo que es lo mismo que no jugar." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Repito, simplificando un poco, vemos que de los 15.304 posibles premios, 9.999 son reintegros por lo que no ganas nada. Por tanto, nos quedan 15.304 - 9.999 posibilidades, es decir:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5305 números con premio real\n" + ] + } + ], + "source": [ + "print(f\"{15_304 - 9_999} números con premio real\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La probabilidad de que realmente ganemos algo, después de tener esto en cuenta, sería:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5.305% de que salgas ganando algo\n" + ] + } + ], + "source": [ + "print(f\"{100 * 5_305 / 100_000}% de que salgas ganando algo\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Y la probabilidad de que nos quedemos como estábamos o peor sería:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "94.695% de que estemos igual o peor\n" + ] + } + ], + "source": [ + "print(f\"{100 - 100 * 5_305 / 100_000}% de que estemos igual o peor\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por tanto, vemos que, más o menos, tenemos 1 posibilidad entre 20 de salir ganando algo. Para los que lo ven con el vaso medio vacío, tenemos, aproximadamente, 19 posibilidades de 20 de quedarnos igual o peor que estábamos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si comprásemos 20 décimos (400 €) con números diferentes se podría esperar que te tocase algo. Pero vemos que la inmensa mayoría de los premios son de 100 € al décimo (1.000 € al billete)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\t\n", + "\t\t\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
premios por serieTotal premiosImporte en eurosCantidad ganada(Por euro jugado)
Pedreas de 5 cifras1.7941.0005€
Centenas del primer premio991.0005€
Centenas del segundo premio991.0005€
Centenas del tercer premio991.0005€
Centenas de dos cuartos premio1981.0005€
Dos últimas del primer premio9991.0006€
Dos últimas del segundo premio9991.0005€
Dos últimas del tercer premio9991.0005€
TOTALES POR SERIE5.286  
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por tanto, la probabilidad de que, habiéndote tocado un premio, el premio sea de 100 € sería:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "99.64184731385485% de que tu premio sea de 100 €\n" + ] + } + ], + "source": [ + "print(f\"{100 * 5_286 / 5_305}% de que tu premio sea de 100 €\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por tanto, en el caso de que te tocase un premio, comprando 20 décimos, la probabilidad de que este premio fuera menor (100 € al décimo) sería muy alta. Por tanto, es probable que el premio fuese de 100 € y, en esta hipotética situación, estaríamos perdiendo 300 €. O sea que, aunque ganemos, perdemos..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Los premios en detalle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hasta ahora he comentado que estaba simplificando un poco el tema. En realidad, los premios son un poco más complejos puesto que hay combinaciones entre ellos ya que no todos los premios salen del bombo y el número de números premiados es menor debido a estas combinaciones.\n", + "\n", + "* Por ejemplo, el primer premio (el Gordo) sale el 55.555. Vemos que el reintegro (cualquier número que acabe en 5) serían 9.999. Pero también hay premio para los números con las dos últimas cifras iguales al primer premio. Por tanto, si yo tengo el 65.355 tendría premio por el reintegro y por las dos últimas cifras. Siendo el mismo número tendría dos premios distintos.\n", + "* Otro ejemplo, el primer premio (el Gordo) sale el 15.000. El número anterior y posterior, 14.999 y 15.001, respectivamente, tendrían premio, pero se podría dar el caso que el segundo premio saliera el 15.001. Si yo poseo el 15.001 tendría el segundo premio y el premio del número posterior al primer premio.\n", + "\n", + "Por tanto, algunas de las estadísticas anteriores, basadas en el número total de números premiados serían incluso más desfavorables para vosotros.\n", + "\n", + "¿Cómo funciona cuando estamos en una situación como las anteriores? No lo sé muy bien puesto que no he encontrado el reglamento detallado en ningún sitio. Leyendo el último párrafo [aquí](http://www.rtve.es/sorteos/loteria-navidad/premios/) parece que los premios se acumulan. [Aquí](http://www.selae.es/es/web%2Dcorporativa/normativa/normativa%2Dde%2Dlos%2Djuegos/loteria%2Dnacional) no he sido capaz de encontrar nada.\n", + "\n", + "En el gráfico inferior podéis ver lo que sale del bombo y es totalmente aleatorio (cajas verdes) y lo que sale condicionado, números que no salen directamente del bombo (cajas negras)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Combinaciones para premios](https://www.pybonacci.org/images/2018/11/Combinaciones.png?style=centerme)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Simulaciones aleatorias para ver distintas situaciones" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Como la casuística es muy grande vamos a lanzar una serie de simulaciones aleatorias para hacernos idea de nuestras posibilidades en distintas situaciones:\n", + "\n", + "* Comprando un único décimo\n", + "* comprando varios décimos del mismo número\n", + "* Comprando varios décimos de números distintos\n", + "* ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Algunas condiciones que vamos a imponer:\n", + "\n", + "* Suponemos que la venta total de décimos varia entre el 60% y el 75% para saber lo total recaudado por el estado (la lotería nacional depende del estado español).\n", + "* Para simplificar suponemos que compramos décimos enteros. En España es muy habitual comprar partes de décimos que repartes, por ejemplo, entre compañeros de trabajo, familia, amigos,..., de tal forma que una persona juega por una parte del décimo.\n", + "* Consideramos que 2/3 partes de las veces compramos décimos con números distintos y 1/3 parte de las veces compramos décimos del mismo número.\n", + "* Vamos a comprar desde 1 hasta 10 décimos para no hacerlo mucho más complicado (ni costoso para tu bolsillo).\n", + "* Como es un sorteo totalmente aleatorio consideramos que cualquier número tiene la misma probabilidad de salir premiado.\n", + "* Como puede haber muchas combinaciones en las que no tengo ni idea de lo que pasa voy a considerar siempre la situación más favorable para el jugador, el jugador se lleva el premio acumulado de todas las combinaciones posibles (ver sección anterior)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un poco de código para hacer los cálculos y enseñar los resultados:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "plt.style.use(\"ggplot\")\n", + "import pandas as pd\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Usamos una semilla para que los números sean reproducibles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.random.seed(1234)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Un poco de funcionalidad para obtener los números de un sorteo de forma aleatoria." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def hundreds(n):\n", + " top = 100 * np.ceil((n + 1) / 100)\n", + " bottom = top - 100\n", + " hundred = set(np.arange(bottom, top))\n", + " hundred.remove(n)\n", + " hundred = np.array(list(hundred))\n", + " return hundred\n", + "\n", + "def latest2(n):\n", + " last2 = n % 100\n", + " numbers = set(np.arange(0, 100_000, 100) + last2)\n", + " numbers.remove(n)\n", + " numbers = np.array(list(numbers))\n", + " return numbers\n", + "\n", + "def refund(n):\n", + " last = n % 10\n", + " numbers = set(np.arange(0, 100_000, 10) + last)\n", + " numbers.remove(n)\n", + " numbers = np.array(list(numbers))\n", + " return numbers\n", + "\n", + "def get_lucky_numbers():\n", + " numbers = {}\n", + " _numbers = set(np.random.choice(np.arange(100_000, dtype=np.int), \n", + " size=1807, #1st + 2nd + 3rd + 4th + 5th + pedrea \n", + " replace=False))\n", + " # from first to fifth prizes\n", + " numbers[\"first\"] = np.array([_numbers.pop()])\n", + " numbers[\"second\"] = np.array([_numbers.pop()])\n", + " numbers[\"third\"] = np.array([_numbers.pop()])\n", + " numbers[\"fourth\"] = np.array([_numbers.pop() for i in range(2)])\n", + " numbers[\"fifth\"] = np.array([_numbers.pop() for i in range(8)])\n", + " # pedrea\n", + " numbers[\"pedrea\"] = np.array(list(_numbers))\n", + " # Numbers close to the first prize\n", + " numbers[\"aprox1st\"] = np.array([numbers[\"first\"] - 1,\n", + " numbers[\"first\"] + 1])\n", + " # Numbers close to the second prize\n", + " numbers[\"aprox2nd\"] = np.array([numbers[\"second\"] - 1,\n", + " numbers[\"second\"] + 1])\n", + " # Numbers close to the third prize\n", + " numbers[\"aprox3rd\"] = np.array([numbers[\"third\"] - 1,\n", + " numbers[\"third\"] + 1])\n", + " # Hundred close to the first prize\n", + " numbers[\"hundred1st\"] = hundreds(numbers[\"first\"][0])\n", + " # Hundred close to the second prize\n", + " numbers[\"hundred2nd\"] = hundreds(numbers[\"second\"][0])\n", + " # Hundred close to the third prize\n", + " numbers[\"hundred3rd\"] = hundreds(numbers[\"third\"][0])\n", + " # Hundred close to the fourth prize\n", + " h100 = np.append(\n", + " hundreds(numbers[\"fourth\"][0]),\n", + " hundreds(numbers[\"fourth\"][1])\n", + " )\n", + " numbers[\"hundred4th\"] = h100\n", + " # latest two digits of the first prize\n", + " numbers[\"two1st\"] = latest2(numbers[\"first\"][0])\n", + " # latest two digits of the second prize\n", + " numbers[\"two2nd\"] = latest2(numbers[\"second\"][0])\n", + " # latest two digits of the third prize\n", + " numbers[\"two3rd\"] = latest2(numbers[\"third\"][0])\n", + " # Refund (reintegro)\n", + " numbers[\"refund\"] = refund(numbers[\"first\"][0])\n", + " \n", + " return numbers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Diccionario con los premios a asignar a cada categoría." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "prizes = { # after taxes\n", + " \"first\": 322_000,\n", + " \"second\": 115_000,\n", + " \"third\": 42_000,\n", + " \"fourth\": 18_000, \n", + " \"fifth\": 6_000,\n", + " \"pedrea\": 100,\n", + " \"aprox1st\": 2_000,\n", + " \"aprox2nd\": 1_250,\n", + " \"aprox3rd\": 960,\n", + " \"hundred1st\": 100,\n", + " \"hundred2nd\": 100,\n", + " \"hundred3rd\": 100,\n", + " \"hundred4th\": 100,\n", + " \"two1st\": 100,\n", + " \"two2nd\": 100,\n", + " \"two3rd\": 100,\n", + " \"refund\": 20\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La siguiente clase nos valdrá para un sorteo" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "class Raffle:\n", + " def __init__(self):\n", + " self.raffle_numbers = get_lucky_numbers()\n", + " self.raffle_prizes = prizes\n", + " self.number_of_tickets = np.random.choice(range(1, 11))\n", + " self.repeated = np.random.choice((True, False, False))\n", + " if self.repeated:\n", + " self.my_numbers = np.repeat(np.random.choice(range(100_000)), \n", + " self.number_of_tickets)\n", + " else:\n", + " self.my_numbers = np.random.choice(range(100_000), \n", + " size=self.number_of_tickets)\n", + " self.my_expenses = 20 * self.number_of_tickets\n", + " self.my_earnings = self._get_earnings()\n", + " \n", + " def _get_earnings(self):\n", + " earnings = 0\n", + " for n in self.my_numbers:\n", + " for key in self.raffle_numbers.keys():\n", + " if n in self.raffle_numbers[key]:\n", + " earnings += self.raffle_prizes[key]\n", + " return earnings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vamos a suponer que somos seres que vivimos muuuuuuchos años. En este ejemplo voy a considerar que asistimos a 10.000 sorteos (10.000 años jugando a la lotería de navidad sin fallar ningún año comprando entre uno y 10 décimos)." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# No es muy eficiente pero espero que se entienda lo que hacemos:\n", + "# Tarda un poco...\n", + "sorteos = 10_000\n", + "results = pd.DataFrame(index=range(sorteos),\n", + " columns=[\"#tickets\", \"Repeated\", \"Expense\", \"Earning\"])\n", + "for i in range(sorteos):\n", + " r = Raffle()\n", + " results.iloc[i] = (r.number_of_tickets, \n", + " r.repeated, \n", + " r.my_expenses, \n", + " r.my_earnings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hemos guardado los resultados en un *DataFrame*. Vamos a hacernos una serie de preguntas y vamos a ver las respuestas:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Después de 10.000 años jugando, en global, ¿he salido ganando?" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "results.loc[:, [\"Expense\", \"Earning\"]].sum().plot.barh()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pues parece que no, he perdido bastante más de lo que he ganado." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* ¿He ganado el gordo alguna vez?" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(results.loc[:, \"Earning\"] > 300_000).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Me sale un cero patatero :-(" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Cuánto es lo máximo que he ganado en un único sorteo?" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "115100" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results.loc[:, \"Earning\"].max()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Cuántos años no he ganado nada o he acabado perdiendo dinero?" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9137" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((results.loc[:, \"Earning\"] - results.loc[:, \"Expense\"]) <= 0).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El 91.37% de las veces no gano nada o pierdo dinero." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Cuál es la distribución de mis premios en 10.000 años?" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.arange(0, 120_000, 1000)\n", + "ax = results.loc[:, \"Earning\"].plot.hist(bins=bins, figsize=(15, 5))\n", + "ax.semilogy();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Cómo están mis premios ordenados de mayor a menor?" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "premios = results.loc[:, \"Earning\"] - results.loc[:, \"Expense\"]\n", + "fig, ax = plt.subplots(figsize=(15, 5))\n", + "ax.bar(range(0, 900),\n", + " premios.sort_values(ascending=False)[0:900].values)\n", + "ax.semilogy();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Vemos que las ganancias por debajo de 100€ son la mayoría." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mis diez mejores ganancias han sido:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2524 115040\n", + "7604 5880\n", + "1585 5860\n", + "8826 5860\n", + "3918 2000\n", + "5783 1960\n", + "3905 1620\n", + "5609 1370\n", + "8704 1000\n", + "9194 1000\n", + "dtype: object" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " results.loc[:, \"Earning\"] - \n", + " results.loc[:, \"Expense\"]\n", + ").sort_values(ascending=False)[0:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En 10.000 años solo he conseguido 8 premios por encima de los 1.000 €." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "En promedio, ¿gano más si repito el mismo número, es decir, si compro varios décimos del mismo número, o si compro números diferentes?" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-69.03603326147213" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " results.loc[results.Repeated == True, \"Earning\"] -\n", + " results.loc[results.Repeated == True, \"Expense\"]\n", + ").mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-47.69583888642085" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " results.loc[results.Repeated == False, \"Earning\"] -\n", + " results.loc[results.Repeated == False, \"Expense\"]\n", + ").mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pues parece que la estrategia de no repetir el número es mejor ya que, en promedio, pierdo menos dinero." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "¿Los mejores premios los consigo cuando repito números o cuando compro números diferentes?" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "155" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((\n", + " results.loc[results.Repeated == True, \"Earning\"] -\n", + " results.loc[results.Repeated == True, \"Expense\"]\n", + ") > 100).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "76" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "((\n", + " results.loc[results.Repeated == False, \"Earning\"] -\n", + " results.loc[results.Repeated == False, \"Expense\"]\n", + ") > 100).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si repito números tiendo a obtener premios más altos, como es de esperar. Si compro 10 décimos del mismo número y me toca el gordo ganaré más de 3.000.000 € pero, claro, mis probabilidades de pillar el gordo se reducen si lo comparo a comprar 10 décimos con números diferentes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Os podéis seguir haciendo preguntas ya que podéis descargar el notebook de [aquí](https://github.com/Pybonacci/pybonacci.github.io/raw/sources/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb) e introducir vuestros propios cálculos." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Notas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Si juegas y no ganas en realidad estás ganando ya que parte del dinero se va a destinar a generar empleo, al Tesoro del Estado,... El que no se consuela es porque no quiere.\n", + "\n", + "Muchas buenas causas (o no tan buenas) se financian usando participaciones de la lotería por lo que, además de jugar, puedes aportar a la causa/proyecto/... que consideres. Para el que no lo sepa, una participación es que compras un boleto donde parte se destina al sorteo y parte se destina a lo que considere el que organiza esa participación (comedores sociales, pagar parte de viajes de estudios de estudiantes,...).\n", + "\n", + "Ya, pensando un poco más egoistamente, en general parece poco probable que te lleves un gran premio (excepto si te apellidas Fabra). Es algo más probable, aunque no mucho más, que te lleves un premio menor y es altamente probable que no ganes nada o pierdas dinero. Si quieres ganar algo es mejor que compres números diferentes, como sería de esperar.\n", + "\n", + "De las loterías a las que puedes jugar en España esta es la que más probabilidades ofrece de ganar algo. Si juegas a cualquier otra lotería pública (El Niño, lotería primitiva, BonoLoto, la Quiniela,...) mejor lo enfocas como que estás haciendo una labor social de pagar impuestos voluntariamente, que estás generando empleo, la propia ilusión que te puede generar el participar en el sorteo,..., pero no pienses que vas a dejar de trabajar porque estarías cometiendo un error. Tus probabilidades disminuyen drásticamente. Además, el dinero no da la felicidad.\n", + "\n", + "Si gastas una media de 50 € cada año durante 50 años te estarás dejando 2.500 €.\n", + "\n", + "Personalmente, hace años que dejé de comprar lotería de navidad y hace años que la gente me mira raro, me llaman el 'Grinch', me dicen que soy un cenizo,...\n", + "\n", + "Independientemente de todo lo que has leído hasta aquí, si vas a jugar, ¡te deseo toda la suerte del mundo y me alegraré enormemente si te toca!\n", + "\n", + ";-)" + ] + } + ], + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/content/images/2018/11/Combinaciones.png b/content/images/2018/11/Combinaciones.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3eaf6f606d68f6ede4b8c1d585e0b7c80ff8c2 GIT binary patch literal 21509 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 literal 0 HcmV?d00001 From 594a71789d15f99879828a8abee1fabe569435dc Mon Sep 17 00:00:00 2001 From: kiko Date: Wed, 28 Nov 2018 16:37:47 +0100 Subject: [PATCH 2/6] fix latex --- content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb index bf242685..bc0db91a 100644 --- a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb +++ b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb @@ -40,8 +40,9 @@ "\n", "En el sorteo de 2018 se van a usar 100.000 números y de cada número se van a sacar 170 series, es decir, que cada número se repetirá 170 veces. Cada número de cada serie es un billete y el billete se divide en 10 décimos. O sea, tenemos:\n", "\n", - "$$ 100.000 \\quad números \\quad x \\quad 170 \\quad series \\quad = \\quad 17.000.000 \\quad billetes $$\n", - "$$ 17.000.000 \\quad x \\quad 10 \\quad décimos \\quad = \\quad 170.000.000 \\quad décimos $$ \n", + "$$ 100.000 \\quad numeros \\quad x \\quad 170 \\quad series \\quad = \\quad 17.000.000 \\quad billetes $$\n", + "\n", + "$$ 17.000.000 \\quad x \\quad 10 \\quad decimos \\quad = \\quad 170.000.000 \\quad decimos $$ \n", "\n", "Cada décimo cuesta 20 € por lo que si se vendiera todo se recaudarían 3.400.000.000 €.\n", "\n", @@ -1278,7 +1279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.6" + "version": "3.6.4" } }, "nbformat": 4, From 3f82d0ba0906974fa2b4624ede6e9ec8a2dbe7a1 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Mon, 3 Dec 2018 19:36:50 +0100 Subject: [PATCH 3/6] fix latex --- content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb index bc0db91a..615a99b5 100644 --- a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb +++ b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb @@ -40,9 +40,9 @@ "\n", "En el sorteo de 2018 se van a usar 100.000 números y de cada número se van a sacar 170 series, es decir, que cada número se repetirá 170 veces. Cada número de cada serie es un billete y el billete se divide en 10 décimos. O sea, tenemos:\n", "\n", - "$$ 100.000 \\quad numeros \\quad x \\quad 170 \\quad series \\quad = \\quad 17.000.000 \\quad billetes $$\n", - "\n", - "$$ 17.000.000 \\quad x \\quad 10 \\quad decimos \\quad = \\quad 170.000.000 \\quad decimos $$ \n", + "$$ \\begin{align} 100.000 \\quad \\text{números} \\quad \\times \\quad 170 \\quad \\text{series} \\quad & = \\quad 17.000.000 \\quad \\text{billetes} \\end{align} $$\n", + "$$ \\begin{align} 17.000.000 \\quad \\times \\quad 10 \\quad \\text{décimos} \\quad & = \\quad 170.000.000 \\quad \\text{décimos} \n", + "\\end{align} $$ \n", "\n", "Cada décimo cuesta 20 € por lo que si se vendiera todo se recaudarían 3.400.000.000 €.\n", "\n", @@ -1279,7 +1279,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.4" + "version": "3.7.0" } }, "nbformat": 4, From e1eb5449ed01a6fe6ace4788c6c1700af3e75f85 Mon Sep 17 00:00:00 2001 From: kiko Date: Thu, 6 Dec 2018 09:15:49 +0100 Subject: [PATCH 4/6] =?UTF-8?q?[ART=C3=8DCULO]=20Como=20instalar=20anacond?= =?UTF-8?q?a/miniconda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...un-entorno-de-trabajo-de-forma-sencilla.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md diff --git a/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md b/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md new file mode 100644 index 00000000..5fcc246c --- /dev/null +++ b/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md @@ -0,0 +1,36 @@ +--- +title: Instalamos un entorno de trabajo de Python científico de forma sencilla +date: 2018-12-06T11:19:00+00:00 +author: Kiko Correoso +slug: instalamos-un-entorno-de-trabajo +tags: conda,anaconda,miniconda,windows,linux,macos,instalacion + +Muchas veces nos vemos en la situación de tener que instalar un entorno de trabajo nuevo. Muchos de nosotros no tendremos problemas y ya sabemos lo que tenemos que hacer. Pero hay casos, por ejemplo, cuando hacemos de instructores en cursos y talleres, en que tenemos que ayudar a otra gente con menos experiencia a instalar el material necesario para poder seguir el taller, curso o tutorial. + +Es por ello que hemos preparado una serie de vídeos a los que poder redirigir a la gente de forma previa al curso, taller, tutorial,..., e intentar tener esa parte lista antes de empezar a hacer cosas más interesantes. + +Esperamos que resulten útiles a toda esa gente que se decide a ayudar a otros dando cursos. + +Sin más dilación... + +**[NOTA: A día de hoy, al final de la instalación, os preguntarán si queréis instalar VSCode. Mi recomendación es que no instaléis la versión oficial de Microsoft ya que lleva una serie de cosas indeseables. Si queréis usar VSCode y estáis en Linux o Mac podéis optar por instalar [VSCodium](https://github.com/VSCodium/vscodium), que es una versión que excluye las cosas indeseables. De momento no hay binarios para Windows, en ese caso (y en Linux y Mac también) siempre podéis usar otros IDEs como JupyterLab, Spyder u otros.]** + +# Instalación de miniconda3 en Windows + +{% aYhlDfGhwuU %} + +# Instalación de anaconda3 en Windows + +{% MSnNTODnSBg %} + +# Instalación de miniconda3 en Linux (y Mac) + +{% liqnwft_cbs %} + +# Instalación de anaconda3 en Linux (y Mac) + +{% b9LV1J7vPuw %} + +Y eso es todo, esperamos que os resulte útil cuando vayáis a empezar con Python o cuando vayas a dar esa formación a otros con menos experiencia. + +Saludos. From 2209a97c15969ca5f297e4e03d1be15f03cd1f8c Mon Sep 17 00:00:00 2001 From: kiko Date: Thu, 6 Dec 2018 09:22:24 +0100 Subject: [PATCH 5/6] remove files from other branch --- .../notebooks/TOLoNteria_de_Navidad.ipynb | 1287 ----------------- content/images/2018/11/Combinaciones.png | Bin 21509 -> 0 bytes 2 files changed, 1287 deletions(-) delete mode 100644 content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb delete mode 100644 content/images/2018/11/Combinaciones.png diff --git a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb b/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb deleted file mode 100644 index 615a99b5..00000000 --- a/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb +++ /dev/null @@ -1,1287 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Voy a empezar con un chiste:\n", - "\n", - "> Un vecino del pueblo pregunta: -*Oye, ¿a tí por qué te llaman 'el Campanas'?*-\n", - "\n", - "> 'El Campanas' responde: -*Tolón, tolón,..., tolonterías del pueblo...*-" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "De ahí, de *tolontería*, voy a derivar y relacionar *tontería* y *lotería* (qué bien hilado..., lo sé)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sí, lo habéis adivinado, vamos a calcular las estadísticas de la lotería de navidad para ver si es tontería o es una buena oportunidad de ganar un buen dinero." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# ¿Qué es la lotería de navidad (española)?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Para los que no sean españoles o sean españoles que viven en una cueva y nunca se han comunicado con otro español que no viva en una cueva, la lotería de navidad es un [sorteo de lotería que se realiza cada 22 de diciembre desde el año 1811](https://es.wikipedia.org/wiki/Sorteo_Extraordinario_de_Navidad).\n", - "\n", - "En el sorteo de 2018 se van a usar 100.000 números y de cada número se van a sacar 170 series, es decir, que cada número se repetirá 170 veces. Cada número de cada serie es un billete y el billete se divide en 10 décimos. O sea, tenemos:\n", - "\n", - "$$ \\begin{align} 100.000 \\quad \\text{números} \\quad \\times \\quad 170 \\quad \\text{series} \\quad & = \\quad 17.000.000 \\quad \\text{billetes} \\end{align} $$\n", - "$$ \\begin{align} 17.000.000 \\quad \\times \\quad 10 \\quad \\text{décimos} \\quad & = \\quad 170.000.000 \\quad \\text{décimos} \n", - "\\end{align} $$ \n", - "\n", - "Cada décimo cuesta 20 € por lo que si se vendiera todo se recaudarían 3.400.000.000 €.\n", - "\n", - "Según leo en varios sitios, en los últimos años se vende alrededor del 70% de décimos." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Los premios de la lotería de Navidad (visto en 2018)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hay muchas posibilidades (ahora lo veremos en detalle) de que te toque algo... pero hay más de que no ganes nada." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\t\n", - "\t\t\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
premios por serieTotal premiosImporte en eurosCantidad ganada(Por euro jugado)
El Gordo (primer premio)14.000.00020.000€
Segundo premio11.250.0006.250€
Tercer premio1500.0002.500€
Cuartos premios2200.0001.000€
Quintos premios860.000300€
Pedreas de 5 cifras1.7941.0005€
Aproximación primer premio220.000100€
Aproximación segundo premio212.50062,5€
Aproximación tercer premio29.60048€
Centenas del primer premio991.0005€
Centenas del segundo premio991.0005€
Centenas del tercer premio991.0005€
Centenas de dos cuartos premio1981.0005€
Dos últimas del primer premio9991.0006€
Dos últimas del segundo premio9991.0005€
Dos últimas del tercer premio9991.0005€
Reintegros (última cifra Gordo)9.9992001€
TOTALES POR SERIE15.304 70% en premios
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Vamos a empezar a calcular estadísticas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**[AVISO: En algunas partes verás código de programación. Este código servirá para hacer los cálculos pero espero que no sea relevante saber programar en Python para que puedas seguir el hilo]**." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "En la tabla anterior los premios son por billete (que son 10 décimos). Lo normal es que la gente compre un décimo y no un billete completo (10 décimos, 200 €).\n", - "\n", - "Viendo la tabla anterior vemos que si compras un décimo tienes 1 entre 100.000 posibilidades de que te toquen 400.000 €, de los cuales [la Agencia Tributaria](https://es.wikipedia.org/wiki/Agencia_Estatal_de_Administraci%C3%B3n_Tributaria) se llevará el 20% de todo lo que sobrepase los 10.000 € (\\*).\n", - "\n", - "_(\\*) Todos los premios que sobrepasen los 10.000 € (en 2018) pagan el 20% del valor por encima de esos 10.000 € en impuestos. Aunque [esto irá cambiando en el futuro](http://www.expansion.com/economia/declaracion-renta/2018/05/16/5afc2b26468aebf9238b46e3.html)._\n", - "\n", - "Por tanto, si te tocan 400.000€ en 2018 pagarás:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "78000.0 € a Hacienda\n" - ] - } - ], - "source": [ - "print(f\"{(400_000 - 10_000) * 0.2} € a Hacienda\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por tanto, si pagas 78.000 € a hacienda te quedarán:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "322000 € para ti\n" - ] - } - ], - "source": [ - "print(f\"{400_000 - 78_000} € para ti\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Como hemos comentado más arriba, tienes una posibilidad entre 100.000 de que salga tu número en el sorteo. Por tanto, tienes las siguientes probabilidades de que te toque un premio tan cuantioso, por encima de 300.000 €:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.001% de que te toque\n" - ] - } - ], - "source": [ - "print(f\"{100 * 1 / 100_000}% de que te toque\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Y las siguientes de que NO te toque." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99.999% de que NO te toque\n" - ] - } - ], - "source": [ - "print(f\"{100 * 99_999 / 100_000}% de que NO te toque\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por otro lado, vemos que hay premios en hasta 15.304 combinaciones, que no números, diferentes de los 100.000 en juego. Por simplificar un poco en este punto vamos a considerar que son 15.304 números los que pueden resultar premiados (serán menos, luego lo veremos), por tanto, bajo este supuesto la probabilidad de que al menos recuperemos la inversión inicial (los 20 € del décimo) sería:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "15.304% de que al menos recuperes lo invertido\n" - ] - } - ], - "source": [ - "print(f\"{100 * 15_304 / 100_000}% de que al menos recuperes lo invertido\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por otro lado, la probabilidad de perder tus 20 € sería:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "84.696% de perderlo todo\n" - ] - } - ], - "source": [ - "print(f\"{100 - 100 * 15_304 / 100_000}% de perderlo todo\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Vamos a seguir calculando estadísticas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Cual sería la probabilidad de ganar algo? Si cobras el reintegro, simplificando nuevamente, no estás ganando nada, solo te quedas como estabas, con tus 20 € en el bolsillo, por lo que es lo mismo que no jugar." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Repito, simplificando un poco, vemos que de los 15.304 posibles premios, 9.999 son reintegros por lo que no ganas nada. Por tanto, nos quedan 15.304 - 9.999 posibilidades, es decir:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5305 números con premio real\n" - ] - } - ], - "source": [ - "print(f\"{15_304 - 9_999} números con premio real\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "La probabilidad de que realmente ganemos algo, después de tener esto en cuenta, sería:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5.305% de que salgas ganando algo\n" - ] - } - ], - "source": [ - "print(f\"{100 * 5_305 / 100_000}% de que salgas ganando algo\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Y la probabilidad de que nos quedemos como estábamos o peor sería:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "94.695% de que estemos igual o peor\n" - ] - } - ], - "source": [ - "print(f\"{100 - 100 * 5_305 / 100_000}% de que estemos igual o peor\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por tanto, vemos que, más o menos, tenemos 1 posibilidad entre 20 de salir ganando algo. Para los que lo ven con el vaso medio vacío, tenemos, aproximadamente, 19 posibilidades de 20 de quedarnos igual o peor que estábamos." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Si comprásemos 20 décimos (400 €) con números diferentes se podría esperar que te tocase algo. Pero vemos que la inmensa mayoría de los premios son de 100 € al décimo (1.000 € al billete)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\t\n", - "\t\t\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
premios por serieTotal premiosImporte en eurosCantidad ganada(Por euro jugado)
Pedreas de 5 cifras1.7941.0005€
Centenas del primer premio991.0005€
Centenas del segundo premio991.0005€
Centenas del tercer premio991.0005€
Centenas de dos cuartos premio1981.0005€
Dos últimas del primer premio9991.0006€
Dos últimas del segundo premio9991.0005€
Dos últimas del tercer premio9991.0005€
TOTALES POR SERIE5.286  
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por tanto, la probabilidad de que, habiéndote tocado un premio, el premio sea de 100 € sería:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99.64184731385485% de que tu premio sea de 100 €\n" - ] - } - ], - "source": [ - "print(f\"{100 * 5_286 / 5_305}% de que tu premio sea de 100 €\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Por tanto, en el caso de que te tocase un premio, comprando 20 décimos, la probabilidad de que este premio fuera menor (100 € al décimo) sería muy alta. Por tanto, es probable que el premio fuese de 100 € y, en esta hipotética situación, estaríamos perdiendo 300 €. O sea que, aunque ganemos, perdemos..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Los premios en detalle" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hasta ahora he comentado que estaba simplificando un poco el tema. En realidad, los premios son un poco más complejos puesto que hay combinaciones entre ellos ya que no todos los premios salen del bombo y el número de números premiados es menor debido a estas combinaciones.\n", - "\n", - "* Por ejemplo, el primer premio (el Gordo) sale el 55.555. Vemos que el reintegro (cualquier número que acabe en 5) serían 9.999. Pero también hay premio para los números con las dos últimas cifras iguales al primer premio. Por tanto, si yo tengo el 65.355 tendría premio por el reintegro y por las dos últimas cifras. Siendo el mismo número tendría dos premios distintos.\n", - "* Otro ejemplo, el primer premio (el Gordo) sale el 15.000. El número anterior y posterior, 14.999 y 15.001, respectivamente, tendrían premio, pero se podría dar el caso que el segundo premio saliera el 15.001. Si yo poseo el 15.001 tendría el segundo premio y el premio del número posterior al primer premio.\n", - "\n", - "Por tanto, algunas de las estadísticas anteriores, basadas en el número total de números premiados serían incluso más desfavorables para vosotros.\n", - "\n", - "¿Cómo funciona cuando estamos en una situación como las anteriores? No lo sé muy bien puesto que no he encontrado el reglamento detallado en ningún sitio. Leyendo el último párrafo [aquí](http://www.rtve.es/sorteos/loteria-navidad/premios/) parece que los premios se acumulan. [Aquí](http://www.selae.es/es/web%2Dcorporativa/normativa/normativa%2Dde%2Dlos%2Djuegos/loteria%2Dnacional) no he sido capaz de encontrar nada.\n", - "\n", - "En el gráfico inferior podéis ver lo que sale del bombo y es totalmente aleatorio (cajas verdes) y lo que sale condicionado, números que no salen directamente del bombo (cajas negras)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![Combinaciones para premios](https://www.pybonacci.org/images/2018/11/Combinaciones.png?style=centerme)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Simulaciones aleatorias para ver distintas situaciones" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Como la casuística es muy grande vamos a lanzar una serie de simulaciones aleatorias para hacernos idea de nuestras posibilidades en distintas situaciones:\n", - "\n", - "* Comprando un único décimo\n", - "* comprando varios décimos del mismo número\n", - "* Comprando varios décimos de números distintos\n", - "* ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Algunas condiciones que vamos a imponer:\n", - "\n", - "* Suponemos que la venta total de décimos varia entre el 60% y el 75% para saber lo total recaudado por el estado (la lotería nacional depende del estado español).\n", - "* Para simplificar suponemos que compramos décimos enteros. En España es muy habitual comprar partes de décimos que repartes, por ejemplo, entre compañeros de trabajo, familia, amigos,..., de tal forma que una persona juega por una parte del décimo.\n", - "* Consideramos que 2/3 partes de las veces compramos décimos con números distintos y 1/3 parte de las veces compramos décimos del mismo número.\n", - "* Vamos a comprar desde 1 hasta 10 décimos para no hacerlo mucho más complicado (ni costoso para tu bolsillo).\n", - "* Como es un sorteo totalmente aleatorio consideramos que cualquier número tiene la misma probabilidad de salir premiado.\n", - "* Como puede haber muchas combinaciones en las que no tengo ni idea de lo que pasa voy a considerar siempre la situación más favorable para el jugador, el jugador se lleva el premio acumulado de todas las combinaciones posibles (ver sección anterior)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Un poco de código para hacer los cálculos y enseñar los resultados:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "plt.style.use(\"ggplot\")\n", - "import pandas as pd\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Usamos una semilla para que los números sean reproducibles." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "np.random.seed(1234)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Un poco de funcionalidad para obtener los números de un sorteo de forma aleatoria." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def hundreds(n):\n", - " top = 100 * np.ceil((n + 1) / 100)\n", - " bottom = top - 100\n", - " hundred = set(np.arange(bottom, top))\n", - " hundred.remove(n)\n", - " hundred = np.array(list(hundred))\n", - " return hundred\n", - "\n", - "def latest2(n):\n", - " last2 = n % 100\n", - " numbers = set(np.arange(0, 100_000, 100) + last2)\n", - " numbers.remove(n)\n", - " numbers = np.array(list(numbers))\n", - " return numbers\n", - "\n", - "def refund(n):\n", - " last = n % 10\n", - " numbers = set(np.arange(0, 100_000, 10) + last)\n", - " numbers.remove(n)\n", - " numbers = np.array(list(numbers))\n", - " return numbers\n", - "\n", - "def get_lucky_numbers():\n", - " numbers = {}\n", - " _numbers = set(np.random.choice(np.arange(100_000, dtype=np.int), \n", - " size=1807, #1st + 2nd + 3rd + 4th + 5th + pedrea \n", - " replace=False))\n", - " # from first to fifth prizes\n", - " numbers[\"first\"] = np.array([_numbers.pop()])\n", - " numbers[\"second\"] = np.array([_numbers.pop()])\n", - " numbers[\"third\"] = np.array([_numbers.pop()])\n", - " numbers[\"fourth\"] = np.array([_numbers.pop() for i in range(2)])\n", - " numbers[\"fifth\"] = np.array([_numbers.pop() for i in range(8)])\n", - " # pedrea\n", - " numbers[\"pedrea\"] = np.array(list(_numbers))\n", - " # Numbers close to the first prize\n", - " numbers[\"aprox1st\"] = np.array([numbers[\"first\"] - 1,\n", - " numbers[\"first\"] + 1])\n", - " # Numbers close to the second prize\n", - " numbers[\"aprox2nd\"] = np.array([numbers[\"second\"] - 1,\n", - " numbers[\"second\"] + 1])\n", - " # Numbers close to the third prize\n", - " numbers[\"aprox3rd\"] = np.array([numbers[\"third\"] - 1,\n", - " numbers[\"third\"] + 1])\n", - " # Hundred close to the first prize\n", - " numbers[\"hundred1st\"] = hundreds(numbers[\"first\"][0])\n", - " # Hundred close to the second prize\n", - " numbers[\"hundred2nd\"] = hundreds(numbers[\"second\"][0])\n", - " # Hundred close to the third prize\n", - " numbers[\"hundred3rd\"] = hundreds(numbers[\"third\"][0])\n", - " # Hundred close to the fourth prize\n", - " h100 = np.append(\n", - " hundreds(numbers[\"fourth\"][0]),\n", - " hundreds(numbers[\"fourth\"][1])\n", - " )\n", - " numbers[\"hundred4th\"] = h100\n", - " # latest two digits of the first prize\n", - " numbers[\"two1st\"] = latest2(numbers[\"first\"][0])\n", - " # latest two digits of the second prize\n", - " numbers[\"two2nd\"] = latest2(numbers[\"second\"][0])\n", - " # latest two digits of the third prize\n", - " numbers[\"two3rd\"] = latest2(numbers[\"third\"][0])\n", - " # Refund (reintegro)\n", - " numbers[\"refund\"] = refund(numbers[\"first\"][0])\n", - " \n", - " return numbers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Diccionario con los premios a asignar a cada categoría." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "prizes = { # after taxes\n", - " \"first\": 322_000,\n", - " \"second\": 115_000,\n", - " \"third\": 42_000,\n", - " \"fourth\": 18_000, \n", - " \"fifth\": 6_000,\n", - " \"pedrea\": 100,\n", - " \"aprox1st\": 2_000,\n", - " \"aprox2nd\": 1_250,\n", - " \"aprox3rd\": 960,\n", - " \"hundred1st\": 100,\n", - " \"hundred2nd\": 100,\n", - " \"hundred3rd\": 100,\n", - " \"hundred4th\": 100,\n", - " \"two1st\": 100,\n", - " \"two2nd\": 100,\n", - " \"two3rd\": 100,\n", - " \"refund\": 20\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "La siguiente clase nos valdrá para un sorteo" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "class Raffle:\n", - " def __init__(self):\n", - " self.raffle_numbers = get_lucky_numbers()\n", - " self.raffle_prizes = prizes\n", - " self.number_of_tickets = np.random.choice(range(1, 11))\n", - " self.repeated = np.random.choice((True, False, False))\n", - " if self.repeated:\n", - " self.my_numbers = np.repeat(np.random.choice(range(100_000)), \n", - " self.number_of_tickets)\n", - " else:\n", - " self.my_numbers = np.random.choice(range(100_000), \n", - " size=self.number_of_tickets)\n", - " self.my_expenses = 20 * self.number_of_tickets\n", - " self.my_earnings = self._get_earnings()\n", - " \n", - " def _get_earnings(self):\n", - " earnings = 0\n", - " for n in self.my_numbers:\n", - " for key in self.raffle_numbers.keys():\n", - " if n in self.raffle_numbers[key]:\n", - " earnings += self.raffle_prizes[key]\n", - " return earnings" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Vamos a suponer que somos seres que vivimos muuuuuuchos años. En este ejemplo voy a considerar que asistimos a 10.000 sorteos (10.000 años jugando a la lotería de navidad sin fallar ningún año comprando entre uno y 10 décimos)." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# No es muy eficiente pero espero que se entienda lo que hacemos:\n", - "# Tarda un poco...\n", - "sorteos = 10_000\n", - "results = pd.DataFrame(index=range(sorteos),\n", - " columns=[\"#tickets\", \"Repeated\", \"Expense\", \"Earning\"])\n", - "for i in range(sorteos):\n", - " r = Raffle()\n", - " results.iloc[i] = (r.number_of_tickets, \n", - " r.repeated, \n", - " r.my_expenses, \n", - " r.my_earnings)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hemos guardado los resultados en un *DataFrame*. Vamos a hacernos una serie de preguntas y vamos a ver las respuestas:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* Después de 10.000 años jugando, en global, ¿he salido ganando?" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "results.loc[:, [\"Expense\", \"Earning\"]].sum().plot.barh()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pues parece que no, he perdido bastante más de lo que he ganado." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* ¿He ganado el gordo alguna vez?" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(results.loc[:, \"Earning\"] > 300_000).sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Me sale un cero patatero :-(" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Cuánto es lo máximo que he ganado en un único sorteo?" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "115100" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "results.loc[:, \"Earning\"].max()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Cuántos años no he ganado nada o he acabado perdiendo dinero?" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "9137" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "((results.loc[:, \"Earning\"] - results.loc[:, \"Expense\"]) <= 0).sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "El 91.37% de las veces no gano nada o pierdo dinero." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Cuál es la distribución de mis premios en 10.000 años?" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4EAAAEyCAYAAABEa9U+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAGj5JREFUeJzt3X+wpXddH/D3siuKWAW5Fd1sNKGm0TSjtToBsfUHPyRINhGH+ZigghiTsRrF6oyWisXWilEZNWpEl5AGHAQ/g0qzGo0MltKOgcZflQlRm0Ykm2DiAkar1pBw+8c5gcuymz1n955z7rnf12vmzN7ne5577ufu5z5n73uf7/N99mxubgYAAIAxPGrVBQAAALA8QiAAAMBAhEAAAICBCIEAAAADEQIBAAAGIgQCAAAMRAgEAAAYiBAIAAAwECEQAABgIPtWXcA22lx1AQAAACu252Q77KYQmHvuuWfVJXyMjY2NHD16dNVlsCL6Pzb9H5v+j03/x6b/41p17/fv3z/TfqaDAgAADEQIBAAAGIgQCAAAMBAhEAAAYCBCIAAAwECEQAAAgIEIgQAAAAPZsfcJrKrHJnlbkpd196+tuh4AAIDdYGkhsKquT3JRkvu6+/wt4xcmuSbJ3iTXdffV06e+N0kvqz4AAIARLPNM4A1JfibJax8eqKq9Sa5N8swkR5LcWlU3Jtmf5F1JPmGJ9QEAAOx6ezY3N5f2xarqrCS/9vCZwKr64iQ/0N3Pmm6/ZLrrJyV5bJLzkvx9kud294eO83pXJrkySbr7Cx944IGFfw/zuve5Tz3u+BN/9XeWXAmrsG/fvjz44IOrLoMV0f+x6f/Y9H9s+j+uVff+0Y9+dJLsOdl+q74m8Iwkd23ZPpLkyd19VZJU1TcmOXq8AJgk3X0oyaHp5ubRo0cXWOr2WqdaOXUbGxt6PTD9H5v+j03/x6b/41p17/fv3z/TfqsOgcdLqR8+NdndNyyvFAAAgN1v1SHwSJIzt2wfSHLPPC9QVQeTHOy2hgwAAMDJrDoE3prknKo6O8ndSS5N8vx5XqC7Dyc5nOSK7S8PAABgd1nazeKr6vVJbklyblUdqarLu/vBJFcluTnJ7Um6u29bVk0AAACjWdqZwO6+7ATjNyW56VRf13RQAACA2a16OuhpMx0UAABgdkubDgoAAMDqCYEAAAADWfvpoK4JBAAAmN3ah0DXBAIAAMzOdFAAAICBCIEAAAADWfvpoK4JBAAAmN3ah0DXBAIAAMzOdFAAAICBCIEAAAADEQIBAAAGsvbXBFoYBgAAYHZrHwItDAMAADA700EBAAAGIgQCAAAMRAgEAAAYiBAIAAAwkLVfGMbqoAAAALNb+xBodVAAAIDZmQ4KAAAwECEQAABgIEIgAADAQIRAAACAgQiBAAAAAxECAQAABrL2t4hwn0AAAIDZrX0IdJ9AAACA2ZkOCgAAMBAhEAAAYCBCIAAAwECEQAAAgIEIgQAAAAMRAgEAAAYiBAIAAAxECAQAABjI2t8svqoOJjnY3asuBQAAYMdb+xDY3YeTHE5yxaprAQAA2OlMBwUAABiIEAgAADAQIRAAAGAgQiAAAMBAhEAAAICBCIEAAAADEQIBAAAGIgQCAAAMRAgEAAAYiBAIAAAwECEQAABgIEIgAADAQIRAAACAgQiBAAAAA9m36gKOp6o+N8mLk2wkeUt3v3LFJQEAAOwKSwuBVXV9kouS3Nfd528ZvzDJNUn2Jrmuu6/u7tuTfEtVPSrJq5ZVIwAAwG63zOmgNyS5cOtAVe1Ncm2SZyc5L8llVXXe9LmLk/yPJG9ZYo0AAAC72tLOBHb326rqrGOGL0hyR3ffmSRV9YYklyR5V3ffmOTGqvr1JL94vNesqiuTXDl9/WxsbCyq/FN27wnGd2KtbL99+/bp9cD0f2z6Pzb9H5v+j2tder/qawLPSHLXlu0jSZ5cVV+e5GuSfHySm070yd19KMmh6ebm0aNHF1Tm9lunWjl1Gxsbej0w/R+b/o9N/8em/+Nade/3798/036rDoF7jjO22d1vTfLW5ZYCAACw+606BB5JcuaW7QNJ7pnnBarqYJKD3b2ddQEAAOxKqw6BtyY5p6rOTnJ3kkuTPH+eF+juw0kOJ7li+8sDAADYXZa2OmhVvT7JLUnOraojVXV5dz+Y5KokNye5PUl3923LqgkAAGA0y1wd9LITjN+UR1j85WRMBwUAAJjdqqeDnjbTQQEAAGa3zJvFAwAAsGJCIAAAwEDWfjqoawIBAABmt/Yh0DWBAAAAszMdFAAAYCBCIAAAwEDWfjqoawIBAABmt/Yh0DWBAAAAszMdFAAAYCBCIAAAwECEQAAAgIGs/TWBFoYBAACY3dqHQAvDAAAAzM50UAAAgIEIgQAAAAMRAgEAAAYiBAIAAAxk7ReGsTooAADA7NY+BFodFAAAYHamgwIAAAxECAQAABiIEAgAADAQIRAAAGAgQiAAAMBA1n51ULeIAAAAmN3ah0C3iAAAAJjdzNNBq+o7qmpjkcUAAACwWPOcCXxGkpdX1VuT/EKSN3X3PyykKgAAABZi5jOB3X1xks9K8htJvjPJX1TVdVX1pYsqDgAAgO011zWB3f2+JNcmubaqPi+TM4Ivqqq7krwqyTXd/X+3v0wAAAC2w9wLw1TV05N8fZJLkvxukh9N8p4kL87kLOG/2s4CAQAA2D4zh8CqekWSS5Pcn+S1SV7a3Xdvef7tST6w7RUCAACwbeY5E/gJSZ7b3bce78nu/mBVfdH2lAUAAMAizBMCfzjJ320dqKrHJ3lMd9+TJN39x9tYGwAAANts5tVBk7wpyYFjxg4k+dXtKwcAAIBFmicEntvd79w6MN3+nO0taT5VdbCqDq2yBgAAgHUxTwi8r6o+e+vAdPt921vSfLr7cHdfucoaAAAA1sU81wRen+SXq+r7ktyZ5J8k+cEk1y2iMAAAALbfPCHw6iQfTPKKJGcmuSuTAPjjC6gLAACABZg5BHb3h5L82PQBAADAGprnTGCq6twkn5/kk7aOd/f121kUAAAAizFzCKyqf5fk3yf5X/no+wVuZnK9IAAAADvcPGcCvzPJBd39R4sqBgAAgMWa5xYRf5/kjxdVCAAAAIs3z5nA70/y01X1A0nu3frEdNEYAAAAdrh5QuAN0z+/ecvYnkyuCdy7XQUBAACwOPOEwLMXVgUAAABLMc99Av88SarqUUme2N3vXVhVAAAALMQ8t4h4XJKfTfK8JB9M8tiqujiTFUNfuqD6AAAA2EbzrA76c0nuT/JZSR6Yjt2S5Gu3uygAAAAWY55rAp+eZH93f7CqNpOku/+yqj5tEYVV1VcneU6ST0tybXf/1iK+DgAAwEjmCYH3J9lI8uFrAavqM7dun0xVXZ/koiT3dff5W8YvTHJNJquMXtfdV3f3m5K8qaoen+QVSYRAAACA0zTPdNDrkvxyVX1FkkdV1RcneU0m00RndUOSC7cOVNXeJNcmeXaS85JcVlXnbdnlpdPnAQAAOE3znAn8kST/L5NA9nFJrk/y85mcwZtJd7+tqs46ZviCJHd0951JUlVvSHJJVd2e5Ookv9Hdvz9HnQAAAJzAPLeI2Ezyk9PHdjojyV1bto8keXKSb0/yjCSfUlWf3d0fc8axqq5McuW0vmxsbGxzaafv3hOM78Ra2X779u3T64Hp/9j0f2z6Pzb9H9e69H6eW0Q87UTPdfdvn0YNe44zttndP5Xkpx7pE7v7UJJDD3/O0aNHT6OM5VqnWjl1Gxsbej0w/R+b/o9N/8em/+Nade/3798/037zTAd99THb/zjJozM5c/ekOV7nWEeSnLll+0CSe07j9QAAADiBeaaDnr11e7qgy0uT/M1p1nBrknOq6uwkdye5NMnzZ/3kqjqY5GB3n2YZAAAAu988q4N+lO5+KMkPJfmeWT+nql6fyQ3mz62qI1V1eXc/mOSqJDcnuX3y0n3bHHUc7u4r56seAABgTPNMBz2eZyb50Kw7d/dlJxi/KclNp1kLAAAAJzHPwjB3JdncMvSJST4hybdud1HzMB0UAABgdvOcCfz6Y7b/Nsmfdvdfb2M9c+vuw0kOJ7lilXUAAACsg3kWhvlviywEAACAxZtnOugv5KOngx5Xd7/gtCqak+mgAAAAs5tnOuhfJXlhJlMv/zzJZyY5mOQ1Sd63/aXNxnRQAACA2c0TAv9pkud0939/eKCq/mWS7+/uZ217ZQAAAGy7ee4T+JQkbz9m7B1Jvnj7ygEAAGCR5gmBf5Dk5VX1mCSZ/vlDSf5wEYUBAACw/eaZDvqNSX4xyf1V9YEkj0/yu0m+bgF1zczCMAAAALOb5xYR707y1Ko6M8n+JO/t7vcsqrBZWRgGAABgdvNMB01VPSHJlyf5su5+T1Xtr6oDC6kMAACAbTdzCKyqL0vyJ5lM//z+6fA5SV65gLoAAABYgHnOBP5kkq/t7guTPDgde0eSC7a9qjlU1cGqOrTKGgAAANbFPAvDnNXdb5l+vDn984E5X2PbuSYQAABgdvOcCXxXVR17U/hnJHnnNtYDAADAAs1zFu+7k/xaVf16ksdU1c8nOZjkkoVUBgAAwLab+Uxgd789yecluS3J9Un+LMkF3X3rgmoDAABgm810JrCq9iZ5S5JndfePLrYkAAAAFmWmM4Hd/VCSs2fdf5msDgoAADC7ea4J/A9JXllVL0tyJB9ZITTd/aHtLmxWVgcFAACY3Twh8Lrpny/IRwLgnunHe7ezKAAAABbjpNM7q+rTpx+eveXxpOnj4Y8BAABYA7OcCfzTJJ/c3X+eJFX1K939NYstCwAAgEWYZaGXPcdsf/kC6gAAAGAJZgmBmyffBQAAgHUwy3TQfVX1FfnIGcFjt9Pdv72I4gAAANhes4TA+5Jcv2X7fcdsb2aFi8NU1cEkB7t7VSUAAACsjZOGwO4+awl1nDL3CQQAAJjdLNcEAgAAsEsIgQAAAAOZ5ZpAFuChKy4+4XN7X3XjEisBAABG4kwgAADAQIRAAACAgQiBAAAAAxECAQAABiIEAgAADEQIBAAAGMja3yKiqg4mOdjdqy4FAABgx1v7ENjdh5McTnLFqmsBAADY6UwHBQAAGIgQCAAAMBAhEAAAYCBCIAAAwECEQAAAgIEIgQAAAAMRAgEAAAYiBAIAAAxECAQAABiIEAgAADAQIRAAAGAgQiAAAMBAhEAAAICB7Ft1AcdTVU9K8n1JPqW7n7fqegAAAHaLpYXAqro+yUVJ7uvu87eMX5jkmiR7k1zX3Vd3951JLq+qNy6rPgAAgBEsczroDUku3DpQVXuTXJvk2UnOS3JZVZ23xJoAAACGsrQQ2N1vS/L+Y4YvSHJHd9/Z3Q8keUOSS5ZVEwAAwGhWfU3gGUnu2rJ9JMmTq+oJSX4oyRdU1Uu6+4eP98lVdWWSK5Oku7OxsbHoeud27yl8zk78Pjg1+/bt08+B6f/Y9H9s+j82/R/XuvR+1SFwz3HGNrv7fUm+5WSf3N2Hkhx6+POOHj26nbWtzG75PpgEev0cl/6PTf/Hpv9j0/9xrbr3+/fvn2m/VYfAI0nO3LJ9IMk987xAVR1McrC7t7MuAACAXWnVIfDWJOdU1dlJ7k5yaZLnz/MC3X04yeEkV2x/eQAAALvL0haGqarXJ7klyblVdaSqLu/uB5NcleTmJLcn6e6+bVk1AQAAjGZpZwK7+7ITjN+U5KZl1QEAADCyVU8HPW2uCQQAAJjd2odA1wQCAADMbmnXBAIAALB6a38m0HRQAACA2a19CDQdFAAAYHamgwIAAAxECAQAABjI2k8HdU0gAADA7NY+BLomEAAAYHamgwIAAAxECAQAABiIEAgAADCQtb8m0MIwAAAAs1v7EGhhGAAAgNmZDgoAADAQIRAAAGAgQiAAAMBAhEAAAICBrP3CMFYHBQAAmN3ah0CrgwIAAMzOdFAAAICBCIEAAAADEQIBAAAGIgQCAAAMRAgEAAAYiBAIAAAwkLW/RYT7BJ6ah664+ITP7X3VjUusBAAAWKa1D4HuEwgAADA700EBAAAGIgQCAAAMRAgEAAAYiBAIAAAwECEQAABgIEIgAADAQIRAAACAgQiBAAAAAxECAQAABrJv1QWcrqo6mORgd6+6lG3z0BUXH3d876tuXHIlAADAbrP2IbC7Dyc5nOSKVdcCAACw05kOCgAAMBAhEAAAYCBCIAAAwECEQAAAgIEIgQAAAAMRAgEAAAYiBAIAAAxECAQAABiIEAgAADAQIRAAAGAgQiAAAMBAhEAAAICBCIEAAAAD2bfqAo6nqh6b5GeTPJDkrd39uhWXBAAAsCssLQRW1fVJLkpyX3efv2X8wiTXJNmb5LruvjrJ1yR5Y3cfrqpfSiIEAgAAbINlTge9IcmFWweqam+Sa5M8O8l5SS6rqvOSHEhy13S3h5ZYIwAAwK62tDOB3f22qjrrmOELktzR3XcmSVW9IcklSY5kEgT/MI8QVKvqyiRXTl8/GxsbC6j89Ny7ja+1nd/fI9W1E/8e19W+ffv8fQ5M/8em/2PT/7Hp/+rc+9ynnvC5J/7q7yz8669L71d9TeAZ+cgZv2QS/p6c5KeS/ExVPSfJ4RN9cncfSnJourl59OjRRdW5Iyzr+9vtf4/LtLGx4e9zYPo/Nv0fm/6PTf93pmX0ZNW9379//0z7rToE7jnO2GZ3/22SFy27GAAAgN1u1SHwSJIzt2wfSHLPPC9QVQeTHOzu7awLAABgV1p1CLw1yTlVdXaSu5NcmuT587xAdx/OZMroFdtfHgAAwO6ytNVBq+r1SW5Jcm5VHamqy7v7wSRXJbk5ye1JurtvW1ZNAAAAo1nm6qCXnWD8piQ3nerrmg4KAAAwu1VPBz1tpoMCAADMbpk3iwcAAGDFhEAAAICBrP10UNcEAgAAzG7tQ6BrAgEAAGZnOigAAMBA9mxubq66hu2ya74RAACAU7TnZDvspjOBe3bio6p+b9U1eOi/h/576L+H/nvov8cwvT+p3RQCAQAAOAkhEAAAYCBC4OIdWnUBrJT+j03/x6b/Y9P/sen/uNai97tpYRgAAABOwplAAACAgQiBAAAAA9m36gJ2s6q6MMk1SfYmua67r15xSZyCqjozyWuTfHqSDyU51N3XVNWnJvmlJGcleXeS6u4PVNWeTPr+VUn+Lsk3dvfvT1/rhUleOn3p/9Tdr5mOf2GSG5I8JslNSV7c3eZq7yBVtTfJ7ya5u7svqqqzk7whyacm+f0k39DdD1TVx2fy8/KFSd6X5Gu7+93T13hJksuTPJTkO7r75um494odrKoel+S6JOdnck/ab0ryJ3H8D6Gq/k2Sb86k9+9M8qIknxHH/65UVdcnuSjJfd19/nRs4f/en+hrLPjb5Rgn6P+PJTmY5IEk/yfJi7r7r6bPzXVcn8rvDoviTOCCTH9hvDbJs5Ocl+SyqjpvtVVxih5M8t3d/blJnpLk26a9/LdJ3tLd5yR5y3Q7mfT8nOnjyiSvTD78j8jLkjw5yQVJXlZVj59+ziun+z78eRcu4ftiPi9OcvuW7R9J8hPT/n8gk38EMv3zA9392Ul+Yrpfpj8zlyb5Z5n092eraq/3irVwTZLf7O7PSfL5mfwcOP4HUFVnJPmOJF80/YVwbybHseN/97ohH3sMLuN4P9HXYLluyMf2/81Jzu/uz0vyp0lekpzycT3Xe8ciCYGLc0GSO7r7zu5+IJPUf8mKa+IUdPd7H/6fve7+m0x+ATwjk36+Zrrba5J89fTjS5K8trs3u/vtSR5XVZ+R5FlJ3tzd75/+796bk1w4fe6Tu/uW6f/+v3bLa7EDVNWBJM/J5GxQpv/7+7Qkb5zucmz/H/65eGOSp0/3vyTJG7r7H7r7z5Lckcn7hPeKHayqPjnJlyZ5dZJ09wPT/wF2/I9jX5LHVNW+JJ+Y5L1x/O9a3f22JO8/ZngZx/uJvgZLdLz+d/dvdfeD0823Jzkw/Xiu4/oUf3dYGCFwcc5IcteW7SPTMdZYVZ2V5AuSvCPJE7v7vckkKCb5tOluJ+r9I40fOc44O8dPJvmeTKYDJ8kTkvzVln8Utvbsw32ePn//dP95fy7YGZ6U5C+T/Oeq+oOquq6qHhvH/xC6++4kr0jynkzC3/1Jfi+O/9Es43g/0ddgZ/mmJL8x/Xje/p/K7w4LIwQuzvHSu2s81lhVfVKSX07ynd3914+w64l6P+84O0BVPXxtwO9tGX6knun/7rIvyb9I8sru/oIkf5tHnqal/7vIdArfJUnOTrI/yWMzmeJ1LMf/mPR7IFX1fZlcIvS66dB29n/pPxtC4OIcSXLmlu0DSe5ZUS2cpqr6uEwC4Ou6+1emw/dOp3Zk+ud90/ET9f6Rxg8cZ5yd4UuSXFxV785kSsfTMjkz+Ljp9LDko3v24T5Pn/+UTKaWzPtzwc5wJMmR7n7HdPuNmYRCx/8YnpHkz7r7L7v7g0l+JclT4/gfzTKO9xN9DXaA6UI/FyX5ui0Ld83b/6OZ/71jYYTAxbk1yTlVdXZVPTqTC0dvXHFNnILpnOxXJ7m9u398y1M3Jnnh9OMXJvkvW8ZfUFV7quopSe6fTu24OclXVtXjp/+7/JVJbp4+9zdV9ZTp13rBltdixbr7Jd19oLvPyuQ4/u3u/rok/zXJ86a7Hdv/h38unjfdf3M6fmlVffx0dbBzkvzPeK/Y0br7L5LcVVXnToeenuRdcfyP4j1JnlJVnzjtz8P9d/yPZRnH+4m+Bis2Xenze5Nc3N1/t+WpuY7r6XvBvO8dCyMELsh0Pu9VmbwR3D4Z6ttWWxWn6EuSfEOSp1XVH04fX5Xk6iTPrKr/neSZ0+1ksuTznZlcIPyqJN+aJN39/iQ/mMmbw61J/uN0LEn+dSaLjtyRyfLDD883Z+f63iTfVVV3ZDJv/9XT8VcnecJ0/LsynTo4Pf47k18gfzPJt3X3Q94r1sK3J3ldVf1Rkn+e5OVx/A9hegb4jZks5f7OTH5vOhTH/65VVa9PckuSc6vqSFVdnuUc7yf6GizRCfr/M0n+UZI3T38H/LnklI/rud47FmnP5qapyAAAAKNwJhAAAGAgQiAAAMBAhEAAAICBCIEAAAADEQIBAAAGIgQCAAAMRAgEAAAYyP8HQAPKznyezUsAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "bins = np.arange(0, 120_000, 1000)\n", - "ax = results.loc[:, \"Earning\"].plot.hist(bins=bins, figsize=(15, 5))\n", - "ax.semilogy();" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Cómo están mis premios ordenados de mayor a menor?" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "premios = results.loc[:, \"Earning\"] - results.loc[:, \"Expense\"]\n", - "fig, ax = plt.subplots(figsize=(15, 5))\n", - "ax.bar(range(0, 900),\n", - " premios.sort_values(ascending=False)[0:900].values)\n", - "ax.semilogy();" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Vemos que las ganancias por debajo de 100€ son la mayoría." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mis diez mejores ganancias han sido:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2524 115040\n", - "7604 5880\n", - "1585 5860\n", - "8826 5860\n", - "3918 2000\n", - "5783 1960\n", - "3905 1620\n", - "5609 1370\n", - "8704 1000\n", - "9194 1000\n", - "dtype: object" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(\n", - " results.loc[:, \"Earning\"] - \n", - " results.loc[:, \"Expense\"]\n", - ").sort_values(ascending=False)[0:10]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "En 10.000 años solo he conseguido 8 premios por encima de los 1.000 €." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "En promedio, ¿gano más si repito el mismo número, es decir, si compro varios décimos del mismo número, o si compro números diferentes?" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-69.03603326147213" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(\n", - " results.loc[results.Repeated == True, \"Earning\"] -\n", - " results.loc[results.Repeated == True, \"Expense\"]\n", - ").mean()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "-47.69583888642085" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(\n", - " results.loc[results.Repeated == False, \"Earning\"] -\n", - " results.loc[results.Repeated == False, \"Expense\"]\n", - ").mean()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Pues parece que la estrategia de no repetir el número es mejor ya que, en promedio, pierdo menos dinero." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "¿Los mejores premios los consigo cuando repito números o cuando compro números diferentes?" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "155" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "((\n", - " results.loc[results.Repeated == True, \"Earning\"] -\n", - " results.loc[results.Repeated == True, \"Expense\"]\n", - ") > 100).sum()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "76" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "((\n", - " results.loc[results.Repeated == False, \"Earning\"] -\n", - " results.loc[results.Repeated == False, \"Expense\"]\n", - ") > 100).sum()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Si repito números tiendo a obtener premios más altos, como es de esperar. Si compro 10 décimos del mismo número y me toca el gordo ganaré más de 3.000.000 € pero, claro, mis probabilidades de pillar el gordo se reducen si lo comparo a comprar 10 décimos con números diferentes." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Os podéis seguir haciendo preguntas ya que podéis descargar el notebook de [aquí](https://github.com/Pybonacci/pybonacci.github.io/raw/sources/content/downloads/notebooks/TOLoNteria_de_Navidad.ipynb) e introducir vuestros propios cálculos." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Notas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Si juegas y no ganas en realidad estás ganando ya que parte del dinero se va a destinar a generar empleo, al Tesoro del Estado,... El que no se consuela es porque no quiere.\n", - "\n", - "Muchas buenas causas (o no tan buenas) se financian usando participaciones de la lotería por lo que, además de jugar, puedes aportar a la causa/proyecto/... que consideres. Para el que no lo sepa, una participación es que compras un boleto donde parte se destina al sorteo y parte se destina a lo que considere el que organiza esa participación (comedores sociales, pagar parte de viajes de estudios de estudiantes,...).\n", - "\n", - "Ya, pensando un poco más egoistamente, en general parece poco probable que te lleves un gran premio (excepto si te apellidas Fabra). Es algo más probable, aunque no mucho más, que te lleves un premio menor y es altamente probable que no ganes nada o pierdas dinero. Si quieres ganar algo es mejor que compres números diferentes, como sería de esperar.\n", - "\n", - "De las loterías a las que puedes jugar en España esta es la que más probabilidades ofrece de ganar algo. Si juegas a cualquier otra lotería pública (El Niño, lotería primitiva, BonoLoto, la Quiniela,...) mejor lo enfocas como que estás haciendo una labor social de pagar impuestos voluntariamente, que estás generando empleo, la propia ilusión que te puede generar el participar en el sorteo,..., pero no pienses que vas a dejar de trabajar porque estarías cometiendo un error. Tus probabilidades disminuyen drásticamente. Además, el dinero no da la felicidad.\n", - "\n", - "Si gastas una media de 50 € cada año durante 50 años te estarás dejando 2.500 €.\n", - "\n", - "Personalmente, hace años que dejé de comprar lotería de navidad y hace años que la gente me mira raro, me llaman el 'Grinch', me dicen que soy un cenizo,...\n", - "\n", - "Independientemente de todo lo que has leído hasta aquí, si vas a jugar, ¡te deseo toda la suerte del mundo y me alegraré enormemente si te toca!\n", - "\n", - ";-)" - ] - } - ], - "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.7.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/content/images/2018/11/Combinaciones.png b/content/images/2018/11/Combinaciones.png deleted file mode 100644 index 0a3eaf6f606d68f6ede4b8c1d585e0b7c80ff8c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21509 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 From ffa27261ba1490cf58b59af5a7f5e9ba1091ccce Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Fri, 7 Dec 2018 08:48:31 +0100 Subject: [PATCH 6/6] =?UTF-8?q?a=C3=B1adir=20liquid-tab=20para=20youtube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mo-instalar-un-entorno-de-trabajo-de-forma-sencilla.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md b/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md index 5fcc246c..d2eb312e 100644 --- a/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md +++ b/content/articles/2018-12-06-como-instalar-un-entorno-de-trabajo-de-forma-sencilla.md @@ -17,19 +17,19 @@ Sin más dilación... # Instalación de miniconda3 en Windows -{% aYhlDfGhwuU %} +{% youtube aYhlDfGhwuU %} # Instalación de anaconda3 en Windows -{% MSnNTODnSBg %} +{% youtube MSnNTODnSBg %} # Instalación de miniconda3 en Linux (y Mac) -{% liqnwft_cbs %} +{% youtube liqnwft_cbs %} # Instalación de anaconda3 en Linux (y Mac) -{% b9LV1J7vPuw %} +{% youtube b9LV1J7vPuw %} Y eso es todo, esperamos que os resulte útil cuando vayáis a empezar con Python o cuando vayas a dar esa formación a otros con menos experiencia.