<jupyter_start><jupyter_text>Introducción a Google Colaboratory[![@jvelzmagic](https://img.shields.io/badge/@jvelezmagic-Sitio_personal-blue?&logoColor=white)](https://jvelezmagic.com/) [![Platzi](https://img.shields.io/badge/Platzi-Jupyter_Notebooks_para_Ciencia_de_Datos-green&logoColor=white)](https://platzi.com/datos/)  Primeros pasos**Colaboratory**, o mejor conocido como **Colab**, provee de un entorno interactivo a nivel de **archivo**. Dentro de él podrás **escribir** y **ejecutar código** python de una forma **sencilla** y **colaborativa** en tiempo real **sin** ninguna **configuración** extra.El componente de trabajo **clave** en **Colab** son los **notebooks**, también conocidos como libretas interactivas o bloc de notas. Un notebook es una herramienta en la que puedes combinar **código ejecutable** y **texto enriquecido** en un sólo lugar. Además, podrás incluir **imágenes**, **HTML**, **LaTeX** y mucho más.Por defecto, **Colab** te provee de múltiples **fragmentos de código** que te permitirán agilizar tu trabajo. Por ejemplo, montando tu espacio de Google Drive para acceder a los datos. 😉Si eres curioso (y yo sé que sí) y deseas aprender más sobre lo básico de **Colab**, te recomiendo seguir su [documentación oficial](https://colab.research.google.com/notebooks/intro.ipynb). 🎯Colaborar en ciencia de datos nunca había sido tan sencillo. Es tu momento de crear, analizar y visualizar datos. ¡Tu camino como científico de datos está comenzando y el éxito clama por ti! 🙌  Instrucciones1. En tu navegador, da clic en el botón `Conectar` situado en la parte superior derecha de este notebook.2. Ingresa con tu cuenta de **Google**.3. Lee con atención el contenido del notebook.4. Explora la interfaz. Nada mejor como conocer tu espacio de trabajo.5. Ejecuta las celdas de código y juega a cambiar las cosas para ver qué pasa. Es la mejor manera de aprender.6. ¡**Disfruta**, estás un paso más cerca de convertirte en un científico de datos! 🎉  Ejecución y edición de celdas Celdas de códigoA continuación, se encuentra una **celda de código** con una pequeña instrucción de **Python** que imprime un texto:<jupyter_code>print("¡Hola, Platzinauta!")<jupyter_output>¡Hola, Platzinauta!<jupyter_text>Interactuar con las **celdas de código** es tan sencillo como dar clic en ella y presionar `Command/Ctrl + Enter`para **ejecutarla** y simplemente `escribir` para **editarla**.**Nota:** Los comandos de teclado suelen abreviarse como `Command/Ctrl + ...`, indicando si debes presionas `Command` en macOS o `Ctrl` en Windows o Ubuntu. 👀> Edita, ejecuta, observa y repite. Ese es el ciclo de trabajo en los **notebooks**. 😋  Celdas de textoLas celdas de texto dentro de los notebooks funcionan con **markdown**, el cual es un lenguaje de marcado ligero cuyo objetivo es **maximizar** la **legibilidad** y **sencillez** de escritura. Es decir, si tú observaras texto plano de markdown y lo compararas con su versión renderizada, el resultado debería lucir muy similar. ✨> De hecho, todo lo que estás leyendo en este momento ha sido escrito con **markdown**. Para observar el contenido crudo y editarlo, puedes dar doble clic sobre la celda o presionar `Enter`. Se ve muy similar, ¿cierto? 👀Para conocer más sobre cómo escribir utilizando **markdown**, te recomiendo revisar la [documentación oficial](https://www.markdownguide.org/). ¡Te aseguro que no te arrepentirás de aprender más sobre este lenguaje de marcado! 🎉Incluso puedes incluir matemáticas utilizando [LaTeX](https://www.latex-project.org/) que será renderizado por [MathJax](https://www.mathjax.org/). Por ejemplo:  `$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$` se convierte en $x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$  Añadir, mover y remover celdasPuedes **añadir** celdas utilizando los botones `+ Código` y `+ Texto` que se muestran cuando te desplazas entre celdas. Estos botones también los puedes encontrar en la barra de herramientas situada en la parte superior izquierda de este notebook. También, si lo prefieres, puedes **agregar** celdas de código arriba o abajo de la celda actual utilizando `Command/Ctrl + M + A` o `Command/Ctrl + M + B`, respectivamente. 🙌Si deseas **mover** una celda posición, puedes dar clic sobre la celda deseada, aparecera una barra de herramientas en la esquina superior deracha de la celda y deberás dar clic en los botones de `Arriba`-`Abajo`, o a través de atajos de teclado, con las combinaciones `Command/Ctrl + M + K` y `Command/Ctrl + M + J`, respectivamente.Para **eliminar** una celda puedes dar clic sobre ella y sobre el la barra de herramientas que aparecera en la esquina superior deracha de la celda da clic en el **ícono** de `basura`. También, puedes utilizar el atajo de teclado `Command/Ctrl + M + D`.  VariablesEntre las características más destacables de las sesiones interactivas dentro de los notebooks es que las **variables** que definas en una celda pueden ser utilizadas después en otras:<jupyter_code>mi_primera_variable = "tiene un contenido muy extenso"
mi_segunda_variable = "es muy interesante"
print(f"¡Este curso {mi_primera_variable} y {mi_segunda_variable}!")<jupyter_output>¡Este curso tiene un contenido muy extenso y es muy interesante!<jupyter_text>Uso de la línea de comandos (shell)En **Colab** y, en general, en cualquier sistema con base en **Jupyter Notebooks** o **Ipython** puedes ejecutar **comandos** de la **línea de comandos** (_shell_) en las celdas de los **notebooks** al poner un signo de exclamación o bang (`!`) al inicio del comando. 🙌Esto puede ser múy útil para muchas cosas, como **crear**, **mover** o **eliminar** archivos. También, podrás utilizarlo para **instalar** dependencias del sistema o librerías para Python. Prácticamente, podrás hacer **todo**. 👀Aquí te dejo el [Curso de Introducción a la Terminal y Línea de Comandos](https://platzi.com/clases/terminal/) de [Enrique Devars](https://twitter.com/codevars/) por si deseas profundizar más en el tema. 😉<jupyter_code>!echo "Cada línea es un comando y tiene su función:"
!ls # Listar archivos
!pwd # Directorio actual
!cd .. && pwd # Moverte un directorio atrás.
!echo "¡Lo estás haciendo increíble!"<jupyter_output>Cada línea es un comando y tiene su función:
/content
/
¡Lo estás haciendo increíble!<jupyter_text>Instalación de libreríasLas **librerías** son un conjunto de implementaciones funcionales en un lenguaje de programación. Instalar **librerías**, es decir, código de terceros, dentro de **Colab** es sencillo. 👇Por ejemplo, para este notebook es necesaria la libería **session_info**. Para instalarla necesitas utilizar el manejador de paquetes de python [pip](https://pypi.org/project/pip/). Ahora, para **instalar** las **dependencias** sólo necesitas **utilizar** el comando `pip install session-info` en la **línea de comandos**.Entonces, para instalar la librería dentro de un notebook necesitas escribir lo siguiente:<jupyter_code>!pip install session-info<jupyter_output>Collecting session-info
  Downloading https://files.pythonhosted.org/packages/94/e4/ea615bb8185a298b21df1ac52a4a5db4e3351823a218f47ef3f883def88c/session_info-1.0.0.tar.gz
Collecting stdlib_list
[?25l  Downloading https://files.pythonhosted.org/packages/7a/b1/52f59dcf31ead2f0ceff8976288449608d912972b911f55dff712cef5719/stdlib_list-0.8.0-py3-none-any.whl (63kB)
[K     |████████████████████████████████| 71kB 7.5MB/s 
[?25hBuilding wheels for collected packages: session-info
  Building wheel for session-info (setup.py) ... [?25l[?25hdone
  Created wheel for session-info: filename=session_info-1.0.0-cp37-none-any.whl size=8047 sha256=9af54395a3965ebb9241ddcd4e80d25df8aff6d90e1f9b60db0d6ade1aeb5110
  Stored in directory: /root/.cache/pip/wheels/72/1d/be/cb44709c38b847e6ef94175f9e65ea8a2501b97fb366ab4f5e
Successfully built session-info
Installing collected packages: stdlib-list, session-info
Successfully installed session-info-1.0.0 stdlib-list-0.8.0<jupyter_text>¡Listo, has instalado tus primeras librerías! 🙌  Subir archivosPuedes cargar **archivos** a **colab** dirigiéndote a `Archivos` en la barra lateral y usando el botón `Subir archivo`. Alternativamente, también puedes simplemente arrastrar y soltar estos archivos en la sección `Archivos` de la barra lateral.Para más información sobre formas de subir archivos a **Colab** te recomiendo su [documentación oficial](https://colab.research.google.com/notebooks/io.ipynb).![](https://media.giphy.com/media/jAIeYwPFSCTeRbkcXA/giphy.gif)  Ciencia de DatosCon **Colab** tendrás acceso a notebooks con todo el poder de Python para analizar y visualizar datos.Muchas de las **librerías** más comúnes para la ciencia de datos vienen **preinstaladas** por defecto. No obstante, podrás instalar más librerías o programas requeridos utilizando la sintaxis de ejecución de comandos en la terminal `!` descrita en en el bloque anterior.> Si bien, podrías trabajar con conseguir trabajar con distintas versiones de Python o inclusive otros lenguajes de programación en **Colab**, su fuerte es Python y el acceso a mayor poder de computo a través de GPUs o TPUs. Ténlo en cuenta al momento de decidir qué herramienta utilizar. 👀 A continuación, puedes ver una gráfico generado con código de python utilizando **vega_datasets** para obtener los datos y **altair** para la visualización. 😋<jupyter_code>from vega_datasets import data
import altair as alt

cars = data.cars()

(
    alt.Chart(cars)
    .mark_line()
    .encode(
        x="Year:T",
        y="count(Year):Q",
        color="Origin:N"
    )
)<jupyter_output><empty_output><jupyter_text>Además, **Colab** incluye una extensión que convierte los datos tabulares de **pandas** en pantallas interactivas que se pueden **filtrar**, **clasificar** y **explorar** de forma dinámica. 🤯En seguida hay un ejemplo de cómo se visualizaría la tabla utilizando **Data Tables**:<jupyter_code>%load_ext google.colab.data_table
cars<jupyter_output><empty_output><jupyter_text>Si quieres desactivar la visualización de tablas con **Data Table** y utilizar la visualización nativa de **pandas**, usa lo siguiente:<jupyter_code>%unload_ext google.colab.data_table
cars<jupyter_output><empty_output><jupyter_text>Atajos de teclado**Colab** tiene múltiples atajos de teclado para agilizar tu desarrollo de código dentro de él. Aprendértelos todos no es obligatorio, ni mucho menos necesario. Siéntete tranquilo. Siempre podrás consultarlos presionando `Command/Ctrl + P` y escribiendo _Mostrar combinaciones de teclas_ o simplemente _teclas_ (`Command/Ctrl + M + H`). 😋Personalmente, los únicos que te recomendaría memorizar son los comandos para **agregar**, **editar** y **ejecutar** bloques. ✨ Comandos| Comando | Función ||---|---|| ⌘/Ctrl+O | Abrir notebook || ⌘/Ctrl+Alt+N | Abrir celda de código temporal || Tab | Activar o desactivar la ayuda de docstring de código || ⌘/Ctrl+M L | Activar o desactivar números de línea || ⌘/Ctrl+M D | Borrar celda o selección || ⌘/Ctrl+M P | Celda anterior || ⌘/Ctrl+M N | Celda siguiente || ⌘/Ctrl+/ | Comentar la línea actual || ⌘/Ctrl+M Y | Convertir a celda de código || ⌘/Ctrl+M M | Convertir a celda de texto || Esc | Desenfocar celda actual || ⌘/Ctrl+M Z o ⌘/Ctrl+Shift+Z | Deshacer la última acción de las celdas || Alt+Enter | Ejecutar la celda e insertar una nueva || ⌘/Ctrl+Enter | Ejecutar la celda enfocada || Shift+Enter | Ejecutar la celda y seleccionar la siguiente || ⌘/Ctrl+S | Guardar notebook || ⌘/Ctrl+M B | Insertar celda de código abajo || ⌘/Ctrl+M A | Insertar celda de código arriba || ⌘/Ctrl+M I | Interrumpir la ejecución || ⌘/Ctrl+M H | Mostrar combinaciones de teclas || ⌘/Ctrl+Shift+P | Mostrar paleta de comandos || ⌘/Ctrl+M J | Mover las celdas seleccionadas hacia abajo || ⌘/Ctrl+M K | Mover las celdas seleccionadas hacia arriba |  Información de sesión👌 Es una buena práctica poner la información de sesión al final de cada notebook que realices. De esta forma, otras personas podrán ver qué versiones de librerías utilizaste para tu análisis. Además, si llegas a tener un problema, puedes compartir esta información con la comunidad para que sea más fácil replicar el error y te puedan ayudar. En el caso de **Colab**, podrías **invitarles** a colaborar para que te ayuden o podrías compartirles una invitación vía **email** o un **link** para que ellos ejecuten el proyecto en su máquina de Google. Tal como te he compartido este notebook. Para **compartir** tu notebook sólo tienes que **presionar** el botón `Compartir` situado en la parte superior derecha de la barra de navegación, ir a la sección `Obtener vínculo` y, finalmente, **escoger** el **modo** en el que deseas compartir tu notebook: **Lector**, **Comenterarista** o **Editor**. 😋<jupyter_code>import session_info

session_info.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09894076108277756, 'fraction_numerical': 0.015613966261278932, 'mean_word_length': 5.300543746910529, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 32, 'https://': 15, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '384918', 'license': 'DOC', 'n_tokens_mistral': 4597, 'n_tokens_neox': 4418, 'n_words': 1586, 'path': 'entorno_ciencia_datos/introduccion_colab-2_.ipynb', 'repo_name': 'davidMartinVergues/Python', 'size': '12745'}