<jupyter_start><jupyter_text>Introducción a Python _"I don't know about the rest of you..._ _I came for the language, but I stayed for the community."_<NAME>, Python Core Dev  ¿Qué es Python?*  Creado por [<NAME>](https://es.wikipedia.org/wiki/Guido_van_Rossum) en 1991.* Lenguaje de programación libre y gratuito. Características:    * interpretado    * de alto nivel    * de propósito general    * tipado dinámico    * gestión automática de memoria    * múltiples paradigmas de programación (OOP, Funcional...)    * multitud de paquetes para realizar diferentes tareas.  Además...Con una gran comunidad, abierta, diversa, inclusiva...  - Python Software Foundation- Python España - Python Madrid- PyLadies Madrid- Djangogirls  1. Primeros pasos con Python Instalación, entornos virtuales y gestores de paquetes  Diferentes distribuciones:* [PYTHON.ORG](https://www.python.org/)* [ANACONDA](https://anaconda.org/)   Diferentes versiones:* 2.X* 3.X  Entornos virtuales- El propósito principal de los entornos virtuales de Python es crear un entorno aislado para los proyectos de Python. - Esto significa que cada proyecto puede tener sus propias dependencias, independientemente de qué dependencias tenga cada otro proyecto. - **venv** es la herramienta estándar para crear entornos virtuales, y ha sido parte de Python desde Python 3.3. A partir de Python 3.4, se instala de forma predeterminada pip en todos los entornos virtuales creados. - **virtualenv** es una alternativa de terceros (y predecesora) a venv. Permite que los entornos virtuales se utilicen en versiones de Python anteriores a 3.4, que no proporcionan ningún tipo de software o no pueden instalar pip automáticamente en los entornos creados.  Módulo venv - Python 3.x Crear el entorno virtualEn linux:```bash$ python3 -m venv /path/to/myenv```En windows:```bashc:\> c:\Python35\python -m venv c:\path\to\myenv```  Activar el entorno virtualEn linux:```bash$ source venv/bin/activate```En Windows:```bashc:\> venv\Scripts\activate.bat```  Gestión de paquetes con pip- Puede instalar, actualizar y eliminar paquetes utilizando un programa llamado pip. - Python empezó a incluir pip con Python 3.4. Para versiones anteriores, pip debe ser activada como se describe [aquí](https://packaging.python.org/tutorials/installing-packages/requirements-for-installing-packages).- Por defecto, pip instalará los paquetes del Índice de Paquetes de Python, [pypi.org](https://pypi.org) Usando la instalación de Python por defecto```bash$ python -m pip install SomePackage```Usando la versioń por defecto de Python 2```bash$ python2 -m pip install SomePackage```Usando la versión específica de Python 2.7```bash$ python2.7 -m pip install SomePackage```Usando la versión por defecto de Python 3```bash$ python3 -m pip install SomePackage```Usando la versión específica de Python 3.4```bash$ python3.4 -m pip install SomePackage``` Instalar la última versión de “SomeProject”```bash$ pip install "SomeProject"```Instalar una versión específica```bash$ pip install "SomeProject==1.4"```Instalar una versión compatible con otra versión específica```bash$ pip install "SomeProject~=1.4.2"  ``` Actualizar SomeProject a la última versión de PyPi```bash$ pip install --upgrade SomeProject```Instalar una lista de librerías desde un fichero de requirements```bash$ pip install -r requirements.txt```Generar un fichero de requirements a partir del virtual env actual```bash$ pip freeze > requirements.txt```  2. Beautiful python <3- [Ejemplos prácticos](1.5_beautiful_python.ipynb)  3. Librerías para ser un buen Data Scientist     Project Jupyter es una organización sin fines de lucro creada para desarrollar software de código abierto, estándares abiertos y servicios para computación interactiva en docenas de lenguajes de programación. **[Notebooks](https://jupyter.org/try)**Son un entorno de trabajo interactivo que permite desarrollar código en Python (por defecto, aunque veremos más adelante cómo permitir otros lenguajes) de manera dinámica, a la vez que integrar en un mismo documento tanto bloques de código como texto, gráficas o imágenes. Es un SaaS utilizado ampliamente en análisis numérico, estadística y machine learning, entre otros campos de la informática y las matemáticas.  **[Jupyter Lab](https://jupyter.org/try)**JupyterLab es la nueva generación de interfaces para el Proyecto Jupyter.Sin perder la compatibilidad con los Jupyter Notebooks, Jupyter Lab permite usar editores de texto, terminales, visores de ficheros y otros componentes en un workspace de pestañas muy parecido al resto de IDEs actuales. **[RISE](https://damianavila.github.io/RISE/index.html)**Integra los Jupyter Notebooks con la librería [reveal.js](https://revealjs.com//) para convertir los notebooks en slides **interactivas** (!!!) Extensión de Python, que le agrega mayor soporte para vectores y matrices, constituyendo una biblioteca de funciones matemáticas de alto nivel para operar con esos vectores o matrices.   Numpy- [Teoría](1.1_numpy.ipynb)- [Ejercicios](../ejercicios/numpy_ejercicios.ipynb) Extensión de NumPy para manipulación y análisis de datos para el lenguaje de programación Python.En particular, ofrece estructuras de datos y operaciones para manipular tablas numéricas y series temporales.   Pandas- [Teoría](1.2_pandas.ipynb)- [Ejercicios](../ejercicios/pandas_ejercicios.ipynb)<jupyter_code>import numpy as np
arr = np.array(range(10))
mask = arr % 2
arr[mask]<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08461538461538462, 'fraction_numerical': 0.008791208791208791, 'mean_word_length': 5.191609977324263, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 10, 'https://': 9, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '326088', 'license': 'CC0-1.0', 'n_tokens_mistral': 1777, 'n_tokens_neox': 1704, 'n_words': 653, 'path': 'teoria/1.0_intro_python.ipynb', 'repo_name': 'aliciapj/intro_ml_python', 'size': '5476'}