{ "cells": [ { "metadata": { "collapsed": true }, "cell_type": "markdown", "source": [ "# Combinando Notebooks y Scripts para Pandas\n", "\n", "## 1. ¿Por qué combinar notebooks y scripts?\n", "\n", "Los notebooks son excelentes para:\n", "\n", "* Exploración interactiva.\n", "* Visualización inmediata.\n", "* Explicaciones paso a paso.\n", "\n", "Los scripts son mejores para:\n", "\n", "* Reutilizar código en múltiples proyectos.\n", "* Automatizar tareas.\n", "* Mantener versiones limpias sin celdas de prueba.\n", "\n", "**Combinarlos** nos permite obtener lo mejor de ambos mundos.\n", "\n", "## 2. Importar código de scripts en un notebook\n", "\n", "Dentro del notebook puedes importar el contenido de tus scripts:\n", "\n", "```python\n", "from procesamiento import limpiar_datos\n", "from visualizacion import graficar\n", "```\n", "\n", "## 3. Mover código del notebook a un script\n", "\n", "Si tu notebook comienza a llenarse de funciones, pásalas a un script:\n", "\n", "1. Copia las funciones a un archivo `.py`.\n", "2. Déjalas limpias, sin variables globales no necesarias.\n", "3. Importa esas funciones en el notebook.\n", "\n", "Esto mejora la organización y te permite ejecutar el código fuera del entorno interactivo.\n", "\n", "## 4. Buenas prácticas\n", "\n", "* Mantén los notebooks para comunicar y los scripts para programar.\n", "* Usa nombres claros para módulos y funciones.\n", "* Añade documentación mínima en tus scripts.\n", "* Versiona los notebooks exportándolos a `.py` o limpiando las celdas.\n", "\n", "---\n", "\n", "## 5. Ejercicios Propuestos\n", "\n", "1) Crea un fichero `limpieza.py` con la función `reemplazar_por_media(df, columna)`. Usa la función en el dataframe propuesto y cambia el `AvgBill` de cada muestra por el valor medio de la columna.\n" ], "id": "21aea93ef948ce5" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": [ "import pandas as pd\n", "\n", "df = pd.DataFrame([('Foreign Cinema', 'Restaurant', 289.0),\n", " ('Liho Liho', 'Restaurant', 224.0),\n", " ('500 Club', 'bar', 80.5),\n", " ('The Square', 'bar', 25.30)],\n", " columns=('name', 'type', 'AvgBill')\n", " )\n", "\n", "#TODO" ], "id": "3af70cde1e26ce9f" }, { "metadata": {}, "cell_type": "markdown", "source": [ "2) En `transformaciones.py`, implementa funciones como:\n", "- `crear_columna_ratio(df, num, den)`\n", "- `filtrar_por_rango(df, columna, minimo, maximo)`\n", "\n", "Una vez implementadas añade un columna en el `DataFrame` del ejemplo anterior (con los valores originales) llamada `comensal` que contenga la información del número de personas por mesa, sus valores serán: `[2,3,5,4]`. Aplica las dos funciones anteriores con estas columnas." ], "id": "846ae8a0b7515483" }, { "metadata": {}, "cell_type": "code", "outputs": [], "execution_count": null, "source": "#TODO", "id": "91df4c389918a67f" }, { "metadata": {}, "cell_type": "markdown", "source": [ "[![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/)
\n", "Isaac Lera and Miquel Miró Nicolau
\n", "Universitat de les Illes Balears
\n", "isaac.lera@uib.edu, miquel.miro@uib.edu" ], "id": "4fcde0b3da87717c" } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }