Cómo configurar Jupyter Notebook con Python 3 en Ubuntu 18.04


Los Jupyter Notebooks (o simplemente Notebooks) son documentos producidos por la aplicación Jupyter Notebook que contienen código de ordenador y elementos de texto enriquecido (párrafo, ecuaciones, figuras, enlaces, etc.) que ayudan a presentar y compartir investigaciones reproducibles. Precisamente la aplicación web de código abierto, Jupyter Notebook le permite crear y compartir código interactivo, visualizaciones y más. Además, esta herramienta se puede utilizar con varios lenguajes de programación, incluidos Python, Julia, R, Haskell y Ruby. Ciertamente tal repercusión ha tenido esta herramienta que a menudo se usa para trabajar con datos, modelado estadístico y aprendizaje automático.

Este post le guiará a través de la configuración de Jupyter Notebook para que se ejecute desde un servidor Ubuntu 18.04, y también se mostrará cómo conectarse y usar el notebook. Al final de este post, podrá ejecutar el código de Python 3 con Jupyter Notebook ejecutándose en un servidor remoto. Para completar este post, debe tener una instancia de servidor Ubuntu 18.04 nueva con un firewall básico y un usuario no root con privilegios de sudo configurados. 

Configurar Python

Para comenzar el proceso, instalaremos las dependencias que necesitamos para nuestro entorno de programación Python desde los repositorios de Ubuntu. Ubuntu 18.04 viene preinstalado con Python 3.6. Usaremos el pip del administrador de paquetes de Python para instalar componentes adicionales un poco más tarde.

Primero necesitamos actualizar el índice apt del paquete local y luego descargar e instalar los paquetes:

sudo apt update 

A continuación, instale pip y los archivos de encabezado de Python, que utilizan algunas de las dependencias de Jupyter:

sudo apt install python3-pip python3-dev 

Ahora podemos pasar a configurar un entorno virtual de Python en el que instalaremos Jupyter.

Crear un entorno virtual de Python para Jupyter

Ahora que tenemos Python 3, sus archivos de encabezado y pip listos para usar, podemos crear un entorno virtual de Python para administrar nuestros proyectos. Instalaremos Jupyter en este entorno virtual.

Para hacer esto, primero necesitamos acceder al comando virtualenv que podemos instalar con pip.

Actualice pip e instale el paquete escribiendo:

sudo -H pip3 install --upgrade pip sudo -H pip3 install virtualenv 

El indicador-H garantiza que la política de seguridad establezca la variable home de entorno en el directorio de inicio del usuario de destino.

Con virtualenvinstalado, podemos empezar a formar nuestro entorno. Cree y muévase a un directorio donde podamos guardar nuestros archivos de proyecto. Lo llamaremos my_project_dir, pero debe usar un nombre que sea significativo para usted y para lo que está trabajando.

mkdir ~/my_project_dir cd ~/my_project_dir 

Dentro del directorio del proyecto, crearemos un entorno virtual de Python. Al final de este post, lo llamaremos, my_project_envpero debe llamarlo de alguna manera que sea relevante para su proyecto.

virtualenv my_project_env 

Esto creará un directorio llamado my_project_env dentro de su directorio my_project_dir. En el interior, instalará una versión local de Python y una versión local de pip. Podemos usar esto para instalar y configurar un entorno Python aislado para Jupyter.

Antes de instalar Jupyter, debemos activar el entorno virtual. Puede hacerlo escribiendo:

source my_project_env/bin/activate 

Su mensaje debería cambiar para indicar que ahora está operando dentro de un entorno virtual de Python. Se verá algo como esto: .(my_project_env)user@host:~/my_project_dir$

Ahora está listo para instalar Jupyter en este entorno virtual.

Instalar Jupyter

Con su entorno virtual activo, instale Jupyter con la instancia local de pip.

Nota: Cuando el entorno virtual está activado (cuando su solicitud precede amy_project_env), use pip en lugar de pip3, incluso si está usando Python 3. La copia de la herramienta del entorno virtual siempre se denomina pip, independientemente de la versión de Python.

pip install jupyter 

En este punto, ha instalado con éxito todo el software necesario para ejecutar Jupyter. Ahora podemos iniciar el servidor de Notebook.

Ejecutar Jupyter Notebook

¡Ahora tiene todo lo que necesita para ejecutar Jupyter Notebook! Para ejecutarlo, ejecute el siguiente comando:

jupyter notebook 

Se imprimirá un registro de las actividades de Jupyter Notebook en el terminal. Cuando ejecute Jupyter Notebook, se ejecuta en un número de puerto específico. El primer cuaderno que ejecute normalmente utilizará el puerto 8888. Para comprobar el número de puerto específico en el que se ejecuta Jupyter Notebook, consulte el resultado del comando utilizado para iniciarlo:


         
          Output
         [I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

Si está ejecutando Jupyter Notebook en un ordenador (no en un servidor), puede navegar a la URL que se muestra para conectarse a Jupyter Notebook. Si está ejecutando Jupyter Notebook en un servidor, deberá conectarse al servidor mediante túneles SSH como se describe mas adelante.

En este punto, puede mantener abierta la conexión SSH y seguir ejecutando Jupyter Notebook o puede salir de la aplicación y volver a ejecutarla una vez que haya configurado el túnel SSH. Elijamos detener el proceso de Jupyter Notebook pues lo ejecutaremos nuevamente una vez que hayamos configurado el túnel SSH. 

Para detener el proceso de Jupyter Notebook, presione CTRL+C, escriba Y y luego ENTER para confirmar. Se mostrará la siguiente salida:


         
          Output
         [C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

Ahora configuraremos un túnel SSH para que podamos acceder al Notebook.

Conexión al servidor mediante túneles SSH

Ahora vamos a ver cómo conectarnos a la interfaz web de Jupyter Notebook mediante túneles SSH pues dado que Jupyter Notebook se ejecutará en un puerto específico del servidor (como , por ejemplo :8888:8889etc.), el túnel SSH le permite conectarse al puerto del servidor de forma segura. A continuación vamos a ver cómo crear un túnel SSH desde Mac o Linux y Windows.

Tunelización SSH con Mac o Linux

Si usa Mac o Linux, los pasos para crear un túnel SSH son similares a usar SSH para iniciar sesión en su servidor remoto, excepto que hay parámetros adicionales en el comando ssh.  Ahora vamos a ver los parámetros adicionales necesarios en el comando ssh para tunelizar con éxito.

La tunelización SSH se puede realizar ejecutando el siguiente comando SSH en una nueva ventana de terminal local:

ssh -L 8888:localhost:8888 [email protected]_server_ip 

El comando ssh abre una conexión SSH, pero -L especifica que el puerto dado en el host local (cliente) se reenviará al host y puerto dados en el lado remoto (servidor). Esto significa que cualquier cosa que se esté ejecutando en el segundo número de puerto (por ejemplo 8888 ), en el servidor aparecerá en el primer número de puerto (por ejemplo 8888 ) en su ordenador local.

Opcionalmente, cambie el puerto 8888a uno de su elección para evitar usar un puerto que ya está en uso por otro proceso.

server_username es su nombre de usuario (por ejemplo sammy) en el servidor que creó y your_server_ip es la dirección IP de su servidor.

Por ejemplo, para el nombre de usuario sammy y la dirección del servidor 203.0.113.0, el comando sería:

ssh -L 8888:localhost:8888 [email protected] 

Si no aparece ningún error después de ejecutar el comando ssh -L, puede pasar a su entorno de programación y ejecutar Jupyter Notebook:

jupyter notebook 

Recibirá resultados con una URL, de modo que vaya desde un navegador web en su máquina local y abra la interfaz web de Jupyter Notebook con la URL que comienza con http://localhost:8888. Asegúrese de incluir el número de token o ingrese la cadena del número de token cuando se le solicite en http://localhost:8888.

Tunelización SSH con Windows y Putty

Si está usando Windows, puede crear un túnel SSH usando Putty . Primero, ingrese la URL del servidor o la dirección IP como el nombre de host como se muestra:

Establecer nombre de host para túnel SSH

A continuación, haga clic en SSH en la parte inferior del panel izquierdo para expandir el menú y luego haga clic en Túneles . Ingrese el número de puerto local que desea usar para acceder a Jupyter en su máquina local. Elija 8000 o mayor para evitar los puertos utilizados por otros servicios y establezca el destino como donde está el número del puerto en el que se ejecuta Jupyter Notebook.localhost:8888:8888

Ahora haga clic en el botón Agregar y los puertos deberían aparecer en la lista de puertos reenviados :

Lista de puertos reenviados

Finalmente, haga clic en el botón Abrir para conectarse al servidor a través de SSH y canalizar los puertos deseados. Navegue a (o al puerto que elija) en un navegador web para conectarse a Jupyter Notebook que se ejecuta en el servidor. Asegúrese de incluir el número de token o ingrese la cadena del número de token cuando se le solicite en .http://localhost:8000

Uso de Jupyter Notebook

 Si actualmente no tiene Jupyter Notebook ejecutándose, inícielo con el  comando jupyter notebook. Ahora debería estar conectado a él usando un navegador web. Jupyter Notebook es una herramienta muy poderosa con muchas características. Veamos algunas de las funciones básicas para que pueda comenzar a utilizar esta fantástica herramienta.

 Jupyter Notebook mostrará todos los archivos y carpetas en el directorio desde el que se ejecuta, por lo que cuando esté trabajando en un proyecto, asegúrese de iniciarlo desde el directorio del proyecto.

Para crear un nuevo archivo de Notebook, seleccione Nuevo > Python 3 en el menú desplegable superior derecho:

Crear un nuevo cuaderno de Python 3

Como vemos, esto abrirá un cuaderno. Ahora podemos ejecutar el código de Python en la celda o cambiar la celda a Markdown. Por ejemplo, cambie la primera celda para aceptar Markdown haciendo clic en Celda > Tipo de celda > Markdown en la barra de navegación superior. Ahora podemos escribir notas usando Markdown e incluso incluir ecuaciones escritas en LaTeX colocándolas entre los $$símbolos. Por ejemplo, escriba lo siguiente en la celda después de cambiarla a Markdown:

# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

Para convertir la reducción en texto enriquecido, presione CTRL+ENTER y los siguientes deberían ser los resultados:

resultados de rebajas

Puede usar las celdas de descuento para tomar notas y documentar su código. Implementemos esa ecuación e imprimamos el resultado. Haga clic en la celda superior, luego presione ALT+ENTER para agregar una celda debajo e ingrese el siguiente código en la nueva celda.

x = 2
y = x**2
print(y)

Para ejecutar el código, presione  el botono de RUN o simplemente CTRL+ENTER y eecibirá los siguientes resultados:

resultados de la primera ecuacion

Resumen

Como hemos visto Jupyter Notebook se basa en el lenguaje de programación Python, aunque también es compatible con otros lenguajes de programación como R, Julia y Scala permitiendo ejecutar código en tiempo real y ver los resultados de inmediato, lo que lo hace muy útil para la enseñanza, la investigación y el análisis de datos.

Algunas de las características principales de Jupyter Notebook esbozadas en este post son:

  • Permite integrar código, texto, imágenes y visualizaciones en un solo documento.
  • Permite trabajar con datos en vivo, lo que significa que los usuarios pueden explorar y analizar conjuntos de datos en tiempo real.
  • Permite crear gráficos y visualizaciones interactivas.
  • Permite compartir y colaborar con otros usuarios, lo que lo hace muy útil para trabajos en equipo o para la enseñanza.

En resumen, Jupyter Notebook es una herramienta muy útil para explorar y analizar datos, crear informes interactivos y colaborar con otros usuarios. ¡Ahora tiene la capacidad de importar módulos y usar Notebook como lo haría con cualquier otro entorno de desarrollo de Python!

Anuncio publicitario

Instalar Pandas en Ubuntu


pandas y Ubuntu 20.04

Pandas es un marco de código abierto rápido, eficiente, modular y fácil de usar para el análisis y la manipulación de datos. Está diseñado sobre el lenguaje de programación Python y, por lo tanto, Pandas es pitónico.

Ubuntu 20.04 , cuyo nombre en código es Focal Fossa, es la versión más reciente de Ubuntu LTS. Saldrá en abril de 2020 y tendrá soporte durante 5 años hasta abril de 2025 (soporte estándar).

Ubuntu 20.04 también incluye Python 3 de forma predeterminada, por lo que no es necesario instalarlo también. Este es un movimiento de mandato porque la Fundación Python ya anunció  el EOL de Python 2 , que es el 1 de enero de 2020. En las versiones anteriores de Ubuntu, Python 2 es el predeterminado y escribir  python en la terminal lo llevará a Python 2, lo que significa tenemos que escribir  python3 para usar Python 3. Ahora puede instalar  python-is-python3, que se establecerá  python en  python3.

Método 1: instalar el python3-pandaspaquete del sistema

El primer método es instalar el paquete del sistema python3-pandas en Ubuntu 20.04. La versión puede estar desactualizada, pero generalmente viene con menos errores que pueden introducirse en versiones posteriores. Aquí está la información sobre python3-pandas:

Paquete: python3-pandas
Versión: 0.25.3 + dfsg-7
Prioridad: opcional
Sección: universe / python
Fuente: pandas
Origen: Ubuntu
Mantenedor: Desarrolladores de Ubuntu [email protected] Mantenedor 
original: Debian Science Team [email protected]
Errores: https://bugs.launchpad.net/ubuntu/+filebug
Tamaño instalado: 14.3 MB
Depende: python3 (<< 3.9), python3 (> = 3.8 ~), python3-dateutil, python3-numpy (> = 1: 1.15 ~), python3-tz, python3: any, python3-pandas-lib (> = 0.25 .3 + dfsg-7), python3-pkg-resources, python3-six
Recomienda: python3-scipy, python3-matplotlib, python3-numexpr, python3-tables, python3-xlrd, python3-openpyxl, python3-xlwt, python3-bs4, python3-html5lib, python3-lxml
Sugiere: python-pandas-doc, python3-statsmodels
Descansos: cnvkit (<< 0.9.6-1.1), python3-feather-format (<< 0.3.1 + dfsg1-2.1), python3-skbio (<< 0.5.5-2.1), python3-statsmodels (<< 0.10 .0 ~), tipos q2 (<< 2019.7.0-1.1)
Inicio: https://pandas.pydata.org/
Tamaño de descarga: 1,968 kB
Fuentes APT: http://archive.ubuntu.com/ubuntu focal / universe paquetes amd64
Descripción: estructuras de datos para datos "relacionales" o "etiquetados"
pandas es un paquete de Python que proporciona rapidez, flexibilidad y expresividad
estructuras de datos diseñadas para trabajar con "relacionales" o
datos "etiquetados" fáciles e intuitivos. Pretende ser el fundamental
bloque de construcción de alto nivel para hacer datos prácticos del mundo real
análisis en Python. pandas es adecuado para muchos tipos diferentes de
datos:
.
Datos tabulares con columnas de tipos heterogéneos, como en un SQL
tabla o hoja de cálculo de Excel
Tiempo ordenado y desordenado (no necesariamente de frecuencia fija)
datos de la serie.
Datos matriciales arbitrarios (homogéneamente tipificados o heterogéneos) con
etiquetas de fila y columna
Cualquier otra forma de conjuntos de datos observacionales / estadísticos. Los datos
en realidad, no es necesario etiquetarlo en absoluto para colocarlo en un pandas
estructura de datos
.
Este paquete contiene la versión Python 3.

Para instalar el paquete, ejecute el siguiente apt installcomando y presione «Y» para continuar con la instalación:

sudo apt install python3-pandas

Verá la salida como la captura de pantalla a continuación (todo el texto se pega después de la captura de pantalla). Python 3 y numpy también se instalarán si no lo tiene en su sistema. Como puede ver a continuación, ocupará 100 MB de su disco.

Ejecutando sudo apt install python3 pandas en Ubuntu 20.04

Instale el paquete de documentación de panda: python-pandas-doc

Una vez que haya instalado pandas, se recomienda instalar también el paquete de documentación python-pandas-doc. De esta manera, puede acceder fácilmente a la documentación de panda sin conexión sin tener que ir al sitio web de pandas cada vez.

Para instalarlo, ejecute el siguiente comando:

sudo apt install python-pandas-doc

Verá la salida como la captura de pantalla a continuación. Presione ‘Y’ para continuar.

Instalación de python pandas doc en Ubuntu 20.04 por sudo apt install python pandas doc
vh @ varhowto-com: ~ $ sudo apt install python-pandas-doc
Leyendo listas de paquetes… Listo
Construyendo árbol de dependencia
Leyendo información de estado… Listo
Se instalarán los siguientes paquetes adicionales:
fuentes-mathjax libjs-mathjax libjs-requirejs
Paquetes sugeridos:
fuentes-mathjax-extras fonts-stix libjs-mathjax-doc
Se instalarán los siguientes paquetes NUEVOS:
fuentes-mathjax libjs-mathjax libjs-requirejs
python-pandas-doc
0 actualizado, 4 recién instalados, 0 para eliminar y 49 sin actualizar.
Necesita obtener 14,8 MB de archivos.
Después de esta operación, se utilizarán 105 MB de espacio adicional en disco.
¿Quieres continuar? [Y / n] años
Obtenga: 1 http://archive.ubuntu.com/ubuntu focal / universe amd64 fonts-mathjax all 2.7.4 + dfsg-1 [2,208 kB]
Obtener: 2 http://archive.ubuntu.com/ubuntu focal / universe amd64 libjs-requirejs all 2.3.6-1 [29.9 kB]
Obtener: 3 http://archive.ubuntu.com/ubuntu focal / universe amd64 libjs-mathjax all 2.7.4 + dfsg-1 [5,654 kB]
Obtenga: 4 http://archive.ubuntu.com/ubuntu focal / universe amd64 python-pandas-doc all 0.25.3 + dfsg-7 [6,939 kB]
Obtenido 14,8 MB en 2 s (6886 kB / s)
Seleccionando el paquete fonts-mathjax previamente no seleccionado.
(Leyendo la base de datos… 287140 archivos y directorios instalados actualmente).
Preparándose para descomprimir… / fonts-mathjax_2.7.4 + dfsg-1_all.deb…
Desempaquetando fonts-mathjax (2.7.4 + dfsg-1)…
Seleccionando el paquete libjs-requirejs previamente no seleccionado.
Preparándose para descomprimir… / libjs-requirejs_2.3.6-1_all.deb…
Desempaquetando libjs-requirejs (2.3.6-1)…
Seleccionando el paquete libjs-mathjax no seleccionado previamente.
Preparándose para descomprimir… / libjs-mathjax_2.7.4 + dfsg-1_all.deb…
Desempaquetando libjs-mathjax (2.7.4 + dfsg-1)…
Seleccionando el paquete python-pandas-doc previamente no seleccionado.
Preparándose para descomprimir… / python-pandas-doc_0.25.3 + dfsg-7_all.deb…
Desempaquetando python-pandas-doc (0.25.3 + dfsg-7)…
Configurando fonts-mathjax (2.7.4 + dfsg-1)…
Configurando libjs-mathjax (2.7.4 + dfsg-1)…
Configurando libjs-requirejs (2.3.6-1)…
Configurando python-pandas-doc (0.25.3 + dfsg-7)…
Procesando activadores para fontconfig (2.13.1-2ubuntu3)…

Luego, puede hacer clic en este enlace o copiarlo en su navegador para ver la documentación de panda: /usr/share/doc/python-pandas-doc/html/index.html .

documentación de pandas en Ubuntu 20.04

Método 2: instalar pandas con pip en Ubuntu 20.04

A veces, se prefiere usar un administrador de paquetes de Python para instalar pandas, especialmente si desea usar la última versión de pandas. pandas se ha actualizado recientemente a la versión 1 y el del repositorio oficial de Ubuntu 20.04 sigue siendo 0.25.3.

Paso 1: instalar pip3(y Python3)

Hay dos administradores de paquetes de Python principales. El primero es el oficial llamado Pip, y otro es Conda (Anaconda o Miniconda). En caso de duda o para principiantes, el oficialpip se recomienda .

Instale Python 3 y pip para pandas

Pipes el administrador de paquetes nativo de Python. Lo usaremos para instalar pandas. Para instalar pip3, ejecute el siguiente comando. Porque pip3depende de Python 3, python3también se instalará si no está en su sistema Ubuntu 20.04.

sudo apt install python3-pip

Verá un resultado similar a la captura de pantalla a continuación. Presione «Y» para continuar. Como puede notar, también se instalará python-pip-whlpython3-wheel, donde wheel es el formato de paquete integrado para Python.

Instalar pip 3 para PyTorch

Aquí está el resultado completo de la pip3instalación

vh @ varhowto-com: ~ $ sudo apt install python3-pip
Leyendo listas de paquetes… Listo
Construyendo árbol de dependencia
Leyendo información de estado… Listo
Se instalarán los siguientes paquetes adicionales:
python-pip-whl python3-rueda
Se instalarán los siguientes paquetes NUEVOS:
python-pip-whl python3-pip python3-rueda
0 actualizado, 3 recién instalados, 0 para eliminar y 49 sin actualizar.
Necesita obtener 2.053 kB de archivos.
Después de esta operación, se utilizarán 3455 kB de espacio adicional en disco.
¿Quieres continuar? [Y / n] años
Obtenga: 1 http://archive.ubuntu.com/ubuntu focal / universe amd64 python-pip-whl all 20.0.2-5ubuntu1 [1,799 kB]
Obtener: 2 http://archive.ubuntu.com/ubuntu focal / universe amd64 python3-wheel all 0.34.2-1 [23.8 kB]
Obtener: 3 http://archive.ubuntu.com/ubuntu focal / universe amd64 python3-pip all 20.0.2-5ubuntu1 [230 kB]
Obtenido 2053 kB en 1 s (2104 kB / s)
Seleccionar el paquete python-pip-w previamente no seleccionado
hl.
(Leyendo la base de datos… 273191 archivos y directorios c
instalado actualmente.)
Preparándose para descomprimir… / python-pip-whl_20.0.2-5ubunt
u1_all.deb…
Desempaquetando python-pip-whl (20.0.2-5ubuntu1)…
Seleccionar el paquete python3-whee previamente no seleccionado
l.
Preparándose para descomprimir… / python3-wheel_0.34.2-1_all.d
eb ...
Desembalaje de python3-wheel (0.34.2-1)…
Seleccionando el paquete python3-pip no seleccionado previamente.
Preparándose para descomprimir… / python3-pip_20.0.2-5ubuntu1_
all.deb…
Desempaquetando python3-pip (20.0.2-5ubuntu1)…
Configurando python3-wheel (0.34.2-1)…
Configurando python-pip-whl (20.0.2-5ubuntu1)…
Configurando python3-pip (20.0.2-5ubuntu1)…
Procesando activadores para man-db (2.9.1-1)…

[Alternativa] Instalar Conda (Anoconda / Miniconda) para pandas

Paso 2: instalar pandausando pip

Para instalar pandasdesde PyPI (pip), ejecute el siguiente comando:

pip3 install pandas

Tenga en cuenta que si ha instalado pandas usando el primer método, necesitará desinstalar pandas usando sudo apt remove python3-pandas, de lo contrario verá el resultado: «Requisito ya satisfecho: pandas en / usr / lib / python3 / dist-packages (0.25.3)» , lo que significa que no está obteniendo la última versión de pandas.

la última versión de pandas no está instalada si está instalada la versión del sistema

Verá la siguiente salida en su terminal. Como puede ver en la última línea, acabo de instalar pandas 1.1.0 en mi sistema operativo Ubuntu 20.04. Su número de versión puede ser mayor a medida que pandas lance nuevas versiones.

Recolectando pandas
Descargando pandas-1.1.0-cp38-cp38-manylinux1_x86_64.whl (10,3 MB)
Requisito ya satisfecho: python-dateutil> = 2.7.3 en / usr / lib / python3 / dist-packages (de pandas) (2.7.3)
Requisito ya satisfecho: pytz> = 2017.2 en / usr / lib / python3 / dist-packages (de pandas) (2019.3)
Requisito ya satisfecho: numpy> = 1.15.4 en / usr / lib / python3 / dist-packages (de pandas) (1.17.4)
Instalación de paquetes recopilados: pandas
Pandas-1.1.0 instalado con éxito

Método 3: instalar pandas con conda (Miniconda / Anaconda)

Existe otra distribución popular de paquetes de Python llamada Anaconda o Miniconda. También puedes usarlo para instalar pandas.

Anteriormente hemos escrito un tutorial para instalar Miniconda , puedes leerlo si prefieres conda o simplemente quieres aprender más. Tenga en cuenta que conda distribuye Python en sí, por lo que no usará el sistema Python y no necesitará tener instalado Python antes de instalar conda.

Para instalar pandas con conda, ejecute el siguiente comando. Cuando se le pregunte “¿Continuar ([y] / n)?”, Presione y e ingrese para continuar.

conda install pandas

Verá el siguiente resultado:

Instalación de pandas usando conda en Ubuntu 20.04

Aquí está el resultado completo:

(base) vh @ varhowto-com: ~ $ conda instalar pandas
Recopilación de metadatos del paquete (current_repodata.json): hecho
Entorno de resolución: hecho

## Plan de paquete ##

  ubicación del entorno: / home / vh / miniconda3

  especificaciones agregadas / actualizadas:
    - pandas


Se descargarán los siguientes paquetes:

    paquete | construir
    --------------------------- | -----------------
    blas-1.0 | mkl 6 KB
    certificados-ca-2020.6.24 | 0 125 KB
    certifi-2020.6.20 | py38_0 156 KB
    intel-openmp-2020.1 | 217780 KB
    mkl-2020.1 | 217129,0 MB
    mkl-service-2.3.0 | py38he904b0f_0 62 KB
    mkl_fft-1.1.0 | py38h23d657b_0 150 KB
    mkl_random-1.1.1 | py38h0573a6f_0 341 KB
    numpy-1.19.1 | py38hbc911f0_0 21 KB
    numpy-base-1.19.1 | py38hfa32c7d_0 4.2 MB
    pandas-1.1.0 | py38he6710b0_0 8.4 MB
    python-dateutil-2.8.1 | py_0 215 KB
    pytz-2020.1 | py_0 184 KB
    -------------------------------------------------- ----------
                                           Total: 143,6 MB

Se INSTALARÁN los siguientes paquetes NUEVOS:

  blas pkgs / main / linux-64 :: blas-1.0-mkl
  intel-openmp pkgs / main / linux-64 :: intel-openmp-2020.1-217
  mkl pkgs / main / linux-64 :: mkl-2020.1-217
  mkl-service pkgs / main / linux-64 :: mkl-service-2.3.0-py38he904b0f_0
  mkl_fft pkgs / main / linux-64 :: mkl_fft-1.1.0-py38h23d657b_0
  mkl_random pkgs / main / linux-64 :: mkl_random-1.1.1-py38h0573a6f_0
  numpy pkgs / main / linux-64 :: numpy-1.19.1-py38hbc911f0_0
  numpy-base pkgs / main / linux-64 :: numpy-base-1.19.1-py38hfa32c7d_0
  pandas pkgs / main / linux-64 :: pandas-1.1.0-py38he6710b0_0
  python-dateutil pkgs / main / noarch :: python-dateutil-2.8.1-py_0
  pytz pkgs / main / noarch :: pytz-2020.1-py_0

Los siguientes paquetes serán ACTUALIZADOS:

  certificados ca 2020.1.1-0 -> 2020.6.24-0
  certifi 2020.4.5.1-py38_0 -> 2020.6.20-py38_0


Continuar ([y] / n)? y


Descarga y extracción de paquetes
blas-1.0 | 6 KB | #################################### | 100%
mkl-2020.1 | 129,0 MB | #################################### | 100%
pytz-2020.1 | 184 KB | #################################### | 100%
intel-openmp-2020.1 | 780 KB | #################################### | 100%
mkl-service-2.3.0 | 62 KB | #################################### | 100%
certificados-ca-2020 | 125 KB | #################################### | 100%
mkl_random-1.1.1 | 341 KB | #################################### | 100%
numpy-base-1.19.1 | 4,2 MB | #################################### | 100%
python-dateutil-2.8. | 215 KB | #################################### | 100%
pandas-1.1.0 | 8,4 MB | #################################### | 100%
mkl_fft-1.1.0 | 150 KB | #################################### | 100%
certifi-2020.6.20 | 156 KB | #################################### | 100%
numpy-1.19.1 | 21 KB | #################################### | 100%
Preparando transacción: hecho
Verificando transacción: hecho
Ejecutando transacción: hecho

Verificar la instalación de pandas

Ahora tienes pandas instalados en tu computadora con Ubuntu 20.04. ¿Cómo comprobar si los pandas están instalados correctamente? Ejecute python3y copie / pegue el siguiente código.

import pandas as pd
s = pd.Series([1, 6, 8, 10])
s

Debería poder ver algo similar a la siguiente captura de pantalla:

Comprobando si pandas está instalado en Ubuntu 20.04

Aquí está el texto completo de la terminal:

(base) vh @ varhowto-com: ~ $ python3
Python 3.8.3 (predeterminado, 19 de mayo de 2020, 18:47:26)
[GCC 7.3.0] :: Anaconda, Inc. en Linux
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
importar pandas como pd
s = pd.Series ([1, 6, 8, 10])
s
0 1
dieciséis
2 8
3 10
dtype: int64

Instalar Pandas en windows


Resultado de imagen de pandas python

Pandas es una biblioteca de Python de código abierto que proporciona una herramienta de análisis y manipulación de datos de alto rendimiento utilizando sus poderosas estructuras de datos. El nombre Pandas se deriva de la palabra Panel Data, una econometría de datos multidimensionales.

En 2008, el desarrollador Wes McKinney comenzó a desarrollar pandas cuando necesitaba una herramienta flexible y de alto rendimiento para el análisis de datos.

Antes de Pandas, Python se usaba principalmente para la preparación y el procesamiento de datos. Contribuyó muy poco al análisis de datos. Pandas resolvió este problema. Con Pandas, podemos lograr cinco pasos típicos en el procesamiento y análisis de datos, independientemente del origen de los datos: cargar, preparar, manipular, modelar y analizar.

Python con Pandas se utiliza en una amplia gama de campos, incluidos los dominios académicos y comerciales, que incluyen finanzas, economía, estadísticas, análisis, etc.

Características clave de Pandas

  • Objeto DataFrame rápido y eficiente con indexación predeterminada y personalizada.
  • Herramientas para cargar datos en objetos de datos en memoria desde diferentes formatos de archivo.
  • Alineación de datos y manejo integrado de datos faltantes.
  • Remodelación y rotación de conjuntos de fechas.
  • División, indexación y subconjunto basado en etiquetas de grandes conjuntos de datos.
  • Las columnas de una estructura de datos se pueden eliminar o insertar.
  • Agrupar por datos para agregación y transformaciones.
  • Fusión y unión de datos de alto rendimiento.
  • Funcionalidad de series temporales.

1.1 ¿Cómo instalar pandas usando pip?

Si está utilizando la última versión de Pandas, ya tendrá pip instalado en su sistema. Por lo tanto, no es necesario que siga del paso 1 al 5. Para los usuarios que no tienen la última versión de Python (3.7.3), deben actualizarla.

Paso 1

Primero diríjase a https://www.python.org y haga clic en Descargas en la barra de navegación desde el

Paso 2

Asegúrese de descargar la última versión de Python . Versión 3.9.7, en este caso.

Paso 3

Al ejecutar el instalador descargado, obtendrá una nueva ventana. Haga clic en ‘ Instalar ahora ‘.

Paso 4

Después de finalizar la instalación, se recomienda elegir la opción para deshabilitar la longitud de la ruta para evitar problemas con la instalación de Python.

Paso 5

Ahora que Python está instalado, debe dirigirse a nuestra terminal o símbolo del sistema desde donde puede instalar Pandas. Así que vaya a la barra de búsqueda en su escritorio y busque cmd . Debería aparecer una aplicación llamada Símbolo del sistema . Haga clic para iniciarlo.

Menú Inicio: buscar cmd

Paso 6

Escriba el comando » administrador de instalación de pip «. Pip es un administrador de instalación de paquetes para Python y se instala junto con las nuevas distribuciones de Python.

Paso 7

Espere a que finalicen las descargas y, una vez que haya terminado, podrá ejecutar Pandas dentro de sus programas Python en Windows.

1.2. ¿Cómo instalar pandas usando Anaconda?

Se recomienda encarecidamente que los principiantes utilicen Anaconda para instalar Pandas en su sistema. Instalar Anaconda no solo es muy fácil, sino que también le brinda acceso a varias otras herramientas.

Paso 1

Dirígete a https://www.anaconda.com , una vez que estés allí, haz clic en el botón Descargar en la esquina superior derecha de la pantalla.

Paso 2

En la página de descargas, desplácese hacia abajo hasta que vea las opciones de descarga para Windows. Haga clic en el botón de descarga de Python 3.7 . Esto iniciará una descarga para el instalador de anaconda .

Paso 3

Siga las instrucciones de instalación que se muestran en las siguientes imágenes. Elija cualquier carpeta de destino según su gusto y desmarque » Agregar anaconda a mi variable de entorno PATH «.

Paso 4

Una vez finalizada la instalación, puede tener acceso a Pandas en su sistema . Anaconda instala todas las bibliotecas importantes para usted.

Paso 5

Cuaderno de Jupyter (opcional) : la mayoría de los proyectos de aprendizaje automático se tratan en los cuadernos de jupyter, por lo tanto, es importante saber cómo usarlo.

Primero, vaya a sus archivos de programa en el menú de inicio y busque “Anaconda Navigator”. Una vez que ingrese al programa, será recibido con una pantalla similar a la que se muestra a continuación. Inicie Jupyter Notebooks .

Paso 6

Una vez que haga clic en Iniciar para Jupyter Notebook, se abrirá automáticamente una ventana del navegador y mostrará la siguiente página. Haga clic en nuevo y luego en «Python 3 «

Interfaz de portátil Jupyter

Paso 7

Una vez que elija «python 3», lo llevará a una nueva pestaña, donde puede comenzar a codificar de una vez .

Instalacion NILMTK con Anaconda 2021


EL NILM o Non-Intrusive Load Monitoring, es decir la desagregación no intrusiva de la demanda . es una técnica computacional para la estimación del consumo individual de diversos dispositivos utilizando para ello la lectura agregada de un único medidor de energía (Smart Meter, SM). Gracias a las ventajas en cuanto instalación , coste e implementación, éste concepto ha tomado relevancia en los últimos años en el ámbito de las Smart Grids, al aportar una estimación de los hábitos de consumo de los clientes sin la necesidad de un despliegue masivo de contadores inteligentes en cada punto de consumo.

En este contexto vamos a ver una herramienta o toolkit open software llamado NILMTK que nos va a ayudar a comparar algoritmos para implementar la desagregación ( además particularmente no contempla un uso diferente a este)

Para el análisis de la desagregación , necesitamos recolectar datos del consumo centralizado , lo cual nos va permitir a creación de un nuevo dataset el cual puede ser analizado usando las funciones de NILMTK lo que permite, por ejemplo, visualizar los datos de potencia en un determinado periodo u obtener estadísticas de energía del dataset.

Posteriormente, en la etapa de preprocesamiento se toman decisiones en línea con los análisis realizados, con el objetivo de preparar correctamente los datos para del entrenamiento de los modelos de desagregación. Básicamente, el entrenamiento de un modelo consiste en enseñarle a reconocer por separado las características de los dispositivos para luego identificarlos dentro de una señal agregada. El entrenamiento contempla el uso de los algoritmos Combinatorial Optimization (CO) y Factorial Hidden Markov Model (FHMM).

El formato de almacenamiento de datos HDF5

HDF5 es un formato de datos jerárquico que se usar en el NILMTK como fuente datos basado en HDF4 y NetCDF (otros dos formatos de datos jerárquicos).El formato de datos jerárquico, versión 5 (HDF5), es un formato de archivo de código abierto que admite datos grandes, complejos y heterogéneos. HDF5 utiliza una estructura similar a un “directorio de archivos” que le permite organizar los datos dentro del archivo de muchas formas estructuradas diferentes, como lo haría con los archivos en su computadora. El formato HDF5 también permite la incrustación de metadatos, lo que lo hace autodescriptivo .

Las organizaciones utilizan HDF5 para diversas necesidades de datos, acceso, informática y redes.

Estructura jerárquica: un directorio de archivos dentro de un archivo

El formato HDF5 se puede considerar como un sistema de archivos contenido y descrito en un solo archivo. Piense en los archivos y carpetas almacenados en su computadora. Es posible que tenga un directorio de datos con algunos datos de temperatura para varios sitios de campo. Estos datos de temperatura se recopilan cada minuto y se resumen cada hora, día y semana. Dentro de un archivo HDF5, puede almacenar un conjunto de datos similar organizado de la misma manera que podría organizar archivos y carpetas en su computadora. Sin embargo, en un archivo HDF5, lo que llamamos “directorios” o “carpetas” en nuestras computadoras, se llaman groupsy lo que llamamos archivos en nuestra computadora datasets.

2 Términos importantes de HDF5

  • Grupo: un elemento similar a una carpeta dentro de un archivo HDF5 que puede contener otros grupos O conjuntos de datos dentro de él.
  • Conjunto de datos: los datos reales contenidos en el archivo HDF5. Los conjuntos de datos se almacenan a menudo (pero no es necesario) dentro de grupos en el archivo.
Una ilustración de una estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados
Un ejemplo de estructura de archivo HDF5 que contiene grupos, conjuntos de datos y metadatos asociados.

Un archivo HDF5 que contiene conjuntos de datos podría estructurarse así:

La ilustración HDF5 de arriba, pero los grupos son sitios NEON y los tipos de sensores y conjuntos de datos se incluyen en los tipos de sensores.
Un ejemplo de estructura de archivo HDF5 que contiene datos para varios sitios de campo y también contiene varios conjuntos de datos (promediados en diferentes intervalos de tiempo).

HDF5 es un formato autodescriptivo

El formato HDF5 es autodescriptivo. Esto significa que cada archivo, grupo y conjunto de datos puede tener metadatos asociados que describen exactamente cuáles son los datos. Siguiendo el ejemplo anterior, podemos incrustar información sobre cada sitio en el archivo, como por ejemplo:

  • El nombre completo y la ubicación X, Y del sitio.
  • Descripción del sitio.
  • Cualquier documentación de interés.

De manera similar, podríamos agregar información sobre cómo se recopilaron los datos en el conjunto de datos, como descripciones del sensor utilizado para recopilar los datos de temperatura. También podemos adjuntar información, a cada conjunto de datos dentro del grupo de sitios, sobre cómo se realizó el promedio y durante qué período de tiempo están disponibles los datos.

Un beneficio clave de tener metadatos adjuntos a cada archivo, grupo y conjunto de datos es que esto facilita la automatización sin la necesidad de un documento de metadatos separado (y adicional). Usando un lenguaje de programación, como R o Python, podemos obtener información de los metadatos que ya están asociados con el conjunto de datos y que podríamos necesitar para procesar el conjunto de datos.

Una ilustración de una estructura de archivos HDF5 con un grupo que contiene dos conjuntos de datos y todos los metadatos asociados
Los archivos HDF5 son autodescriptivos, lo que significa que todos los elementos (el archivo en sí, los grupos y los conjuntos de datos) pueden tener metadatos asociados que describen la información contenida en el elemento.

Subconjunto comprimido y eficiente

El formato HDF5 es un formato comprimido. El tamaño de todos los datos contenidos en HDF5 está optimizado, lo que reduce el tamaño general del archivo. Sin embargo, incluso cuando están comprimidos, los archivos HDF5 a menudo contienen grandes volúmenes de datos y, por lo tanto, pueden ser bastante grandes. Un atributo poderoso de HDF5 es data slicingmediante el cual se puede extraer un subconjunto particular de un conjunto de datos para su procesamiento. Esto significa que no es necesario leer el conjunto de datos completo en la memoria (RAM); muy útil para permitirnos trabajar de manera más eficiente con conjuntos de datos muy grandes (gigabytes o más).

Almacenamiento de datos heterogéneos

Los archivos HDF5 pueden almacenar muchos tipos diferentes de datos dentro del mismo archivo. Por ejemplo, un grupo puede contener un conjunto de conjuntos de datos para contener datos enteros (numéricos) y de texto (cadenas). O bien, un conjunto de datos puede contener tipos de datos heterogéneos (por ejemplo, tanto texto como datos numéricos en un conjunto de datos). Esto significa que HDF5 puede almacenar cualquiera de los siguientes (y más) en un archivo:

  • Datos de temperatura, precipitación y PAR (radiación fotosintética activa) para un sitio o para muchos sitios
  • Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial específica, todo en el mismo archivo)
  • Un conjunto de datos espaciales multi o hiperespectral que contiene cientos de bandas.
  • Datos de campo para varios sitios que caracterizan insectos, mamíferos, vegetación y clima.
  • Un conjunto de imágenes que cubren una o más áreas (cada imagen puede tener asociada información espacial única)
  • ¡Y mucho más!

Formato abierto

El formato HDF5 es abierto y de uso gratuito. Las bibliotecas de apoyo (y un visor gratuito) se pueden descargar desde el sitio web de HDF Group . Como tal, HDF5 es ampliamente compatible con una gran cantidad de programas, incluidos lenguajes de programación de código abierto como R y Python, y herramientas de programación comerciales como MatlabIDL. Los datos espaciales que se almacenan en formato HDF5 se pueden utilizar en los programas de SIG y de imagen que incluyen QGISArcGISENVI.

Beneficios de HDF5

  • Autodescripción Los conjuntos de datos con un archivo HDF5 son autodescriptivos. Esto nos permite extraer metadatos de manera eficiente sin necesidad de un documento de metadatos adicional.
  • Admite datos heterogéneos : un archivo HDF5 puede contener diferentes tipos de conjuntos de datos.
  • Admite datos grandes y complejos : HDF5 es un formato comprimido que está diseñado para admitir conjuntos de datos grandes, heterogéneos y complejos.
  • Admite la división de datos: la “división de datos”, o la extracción de partes del conjunto de datos según sea necesario para el análisis, significa que los archivos grandes no necesitan leerse por completo en la memoria o RAM de la computadora.
  • Formato abierto: soporte amplio en las muchas herramientas : debido a que el formato HDF5 es abierto, es compatible con una gran cantidad de lenguajes y herramientas de programación, incluidos lenguajes de código abierto como R y Pythonherramientas SIG abiertas como QGIS.E

Instalación del NILTK

Básicamente aunque NILMTK se puede instalar muy fácilmente en sistemas basados en Linux , es posible instalarlo también desde Windows 11 . Resumidamente necesitaremos instalar Anaconda ( y Git si no lo tiene instalado ) y realizar la identificación de la carga, encontrar el paquete de instalación de NILMTK y registrar el proceso deliberadamente.

Veamos mas en detalle los pasos a seguir:

Instalación de GIT Windows

Hay varias maneras de instalar Git en Windows. La forma más oficial está disponible para ser descargada en el sitio web de Git. Solo tiene que visitar http://git-scm.com/download/win y la descarga empezará automáticamente. Observe que éste proyecto conocido como Git para Windows (también llamado msysGit), es diferente de Git “normal”. Para más información acerca de este proyecto visita http://msysgit.github.io/.

Otra forma de obtener Git fácilmente es mediante la instalación de GitHub para Windows. El instalador incluye la versión de línea de comandos y la interfaz de usuario de Git. Además funciona bien con Powershell y establece correctamente “caching” de credenciales y configuración CRLF adecuada. Puede descargar este instalador del sitio web de GitHub para Windows en http://windows.github.com.

Descarga e instalación de Anaconda

Los entornos virtuales hacen que la organización de paquetes de Python sea pan comido. Además, el proyecto NILMTK ofrece varias versiones de Conda Forge. Primero, consiga Anaconda aquí. 

Seguidamente nos pedira qeu nos registremos
Enseguida empezara la descarga, por lo que nos iremos a la carpeta de Descargas y ejecutaremos el instalador

Ahora deberemos aceptar la licencia para poder proseguir la instalacion

Seleccione una instalación para “Solo yo” a menos que esté instalando para todos los usuarios (lo que requiere privilegios de administrador de Windows) y haga clic en Siguiente.

Seleccione una carpeta de destino para instalar Anaconda y haga clic en el botón Siguiente. Nota: Instale Anaconda en una ruta de directorio que no contenga espacios ni caracteres Unicode..No lo instale como administrador a menos que se requieran privilegios de administrador.

Ahora nos toca Registrar Anaconda3 y mantener por defecto Python 3.8.

A menos que planee instalar y ejecutar múltiples versiones de Anaconda o múltiples versiones de Python, acepte el valor predeterminado y deje esta casilla marcada.

Haga clic en el botón Instalar. Si desea ver los paquetes que está instalando Anaconda, haga clic en Mostrar detalle

Enseguida enseguida empezara la instalacion , lo cual llevarás unos cinco minutos o menos segun el equipo donde este instalando.

Felicidades, acaba de instalar Conda.

Opcional: para instalar PyCharm para Anaconda, haga clic en el enlace a https://www.anaconda.com/pycharm .

O para instalar Anaconda sin PyCharm, haga clic en el botón Siguiente.

Después de una instalación exitosa, verá el cuadro de diálogo “Gracias por instalar Anaconda”:

Si desea leer más sobre Anaconda.org y cómo comenzar con Anaconda, marque las casillas “Tutorial de Anaconda Edición Individual” y “Aprenda más sobre Anaconda”. Haga clic en el botón Finalizar.

Verifique su instalación .Nota: Si está detrás de un proxy de la empresa, es posible que deba realizar una configuración adicional.

Abra una ventana de terminal de conda, crearemos un nuevo entorno de Conda y lo activaremos con los comandos:

conda create --name nilmtk-env 
conda activate nilmtk-env

Si aún no está presente en su instalación de Conda, agregue el conda-forge a la lista de canales:

conda config --add channels conda-forge

Finalmente, instale la última versión de NILMTK de conda-forge :

conda install -c nilmtk nilmtk=0.4.3

Observe que el signo igual no lleva espacios(piense estamos usando Python). La ejecución del comando puede tardar un rato. Mientras tanto, consulte otros paquetes en Forge de NILMTK .

Como puede experimentar algunos problemas posteriores a la instalación con NILMTK y Matplotlib., para solucionarlos, aplique el comando:

conda install matplotlib 

Verificar la instalación Para verificar que Matplotlib está instalado, intente invocar la versión de Matplotlib en Python REPL. Use desde el interprete Python los comandos a continuación que incluyen llamar a .__ version__, un atributo común a la mayoría de los paquetes de Python.

>>> import matplotlib

>>> matplotlib.__version__

Ejemplo de salida:

(nilmtk-env) C:\Users\carlo>python
Python 3.6.13 (default, Sep 7 2021, 06:39:02) [MSC v.1916 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.

import matplotlib
matplotlib.version
‘3.1.3’

Agregar un kernel de Jupyter

Básicamente, NILMTK ahora está instalado en su ordenador. El siguiente paso involucra los cuadernos de Jupyter. Trabajar con Jupyter abre muchas posibilidades y se dice que es una herramienta imprescindible. Por lo tanto, agregue el entorno NILMTK a Jupyter:

python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"

Prueba de la instalación

Ha llegado el momento de comprobar su instalación. Antes que nada, cree una nueva carpeta y descargue el conjunto de prueba aleatorio de Github:

123md nilmtk_testcd nilmtk_test  wget https://raw.githubusercontent.com/nilmtk/nilmtk/master/data/random.h5

Como puede comprobar random.h5 es el fichero de de datos en en formato hdf5 .A continuación, levante Jupyter:

1notebook jupyter

Para probar su instalación, intente importar el conjunto de datos aleatorio usando NILMTK y trazar todos los medidores:https://klemenjak.medium.com/media/9ba2be16d331653a7b4093a0fe412434

La salida debe ser:

1MeterGroup (metros =   ElecMeter (instancia = 1, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 2, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 3, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 4, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = [])   ElecMeter (instancia = 5, edificio = 1, conjunto de datos = Ninguno, electrodomésticos = []) )

¡Felicitaciones! Lo ha logrado. ¡NILMTK parece funcionar según lo previsto! 

La imagen tiene un atributo ALT vacío; su nombre de archivo es pexels-photo-5036278.jpeg

scikit-learn: Guardar y restaurar modelos


En muchas ocasiones, mientras trabaja con la biblioteca scikit-learn , deberá guardar sus modelos de predicción en un archivo y luego restaurarlos para reutilizar su trabajo anterior para: probar su modelo con datos nuevos, comparar varios modelos o Algo más. Este procedimiento de guardado también se conoce como serialización de objetos: representa un objeto con un flujo de bytes para almacenarlo en el disco, enviarlo a través de una red o guardarlo en una base de datos, mientras que el procedimiento de restauración se conoce como deserialización. En este artículo, analizamos tres formas posibles de hacer esto en Python y scikit-learn, cada una presentada con sus pros y sus contras.

Herramientas para guardar y restaurar modelos

La primera herramienta que describimos es Pickle , la herramienta estándar de Python para la (des) serialización de objetos. Luego, miramos la biblioteca Joblib que ofrece (des) serialización fácil de objetos que contienen matrices de datos grandes, y finalmente presentamos un enfoque manual para guardar y restaurar objetos hacia / desde JSON (JavaScript Object Notation). Ninguno de estos enfoques representa una solución óptima, pero se debe elegir el ajuste correcto de acuerdo con las necesidades de su proyecto.

Inicialización del modelo

Inicialmente, creemos un modelo de scikit-learn. En nuestro ejemplo usaremos un modelo de regresión logística y el conjunto de datos Iris . 

Vamos a importar las bibliotecas necesarias, cargar los datos y dividirlos en conjuntos de prueba y entrenamiento.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Load and split data
data = load_iris()
Xtrain, Xtest, Ytrain, Ytest = train_test_split(data.data, data.target, test_size=0.3, random_state=4)

Ahora creemos el modelo con algunos parámetros no predeterminados y ajustémoslo a los datos de entrenamiento. Suponemos que ha encontrado previamente los parámetros óptimos del modelo, es decir, los que producen la mayor precisión estimada.

# Create a model
model = LogisticRegression(C=0.1, 
                           max_iter=20, 
                           fit_intercept=True, 
                           n_jobs=3, 
                           solver='liblinear')
model.fit(Xtrain, Ytrain)

Y nuestro modelo resultante:

LogisticRegression(C=0.1, class_weight=None, dual=False, fit_intercept=True,
    intercept_scaling=1, max_iter=20, multi_class='ovr', n_jobs=3,
    penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
    verbose=0, warm_start=False)

Usando el fitmétodo, el modelo ha aprendido sus coeficientes que están almacenados en model.coef_. El objetivo es guardar los parámetros y los coeficientes del modelo en un archivo, por lo que no es necesario repetir el entrenamiento del modelo y los pasos de optimización de los parámetros nuevamente con datos nuevos.

Módulo pickle

En las siguientes líneas de código, el modelo que creamos en el paso anterior se guarda en un archivo y luego se carga como un nuevo objeto llamado pickled_model. A continuación, el modelo cargado se utiliza para calcular la puntuación de precisión y predecir los resultados sobre nuevos datos no vistos (de prueba).

import pickle

#
# Create your model here (same as above)
#

# Save to file in the current working directory
pkl_filename = "pickle_model.pkl"
with open(pkl_filename, 'wb') as file:
    pickle.dump(model, file)

# Load from file
with open(pkl_filename, 'rb') as file:
    pickle_model = pickle.load(file)
    
# Calculate the accuracy score and predict target values
score = pickle_model.score(Xtest, Ytest)
print("Test score: {0:.2f} %".format(100 * score))
Ypredict = pickle_model.predict(Xtest)

La ejecución de este código debería generar su puntuación y guardar el modelo a través de Pickle:

$ python save_model_pickle.py
Test score: 91.11 %

Lo mejor de usar Pickle para guardar y restaurar nuestros modelos de aprendizaje es que es rápido: puede hacerlo en dos líneas de código. Es útil si ha optimizado los parámetros del modelo en los datos de entrenamiento, por lo que no necesita repetir este paso nuevamente. De todos modos, no guarda los resultados de la prueba ni ningún dato. Aún así, puede hacer esto guardando una tupla, o una lista, de varios objetos (y recuerde qué objeto va a dónde), de la siguiente manera:

tuple_objects = (model, Xtrain, Ytrain, score)

# Save tuple
pickle.dump(tuple_objects, open("tuple_model.pkl", 'wb'))

# Restore tuple
pickled_model, pickled_Xtrain, pickled_Ytrain, pickled_score = pickle.load(open("tuple_model.pkl", 'rb'))

Módulo Joblib

La biblioteca Joblib está destinada a ser un reemplazo de Pickle, para objetos que contienen datos grandes. Repetiremos el procedimiento de guardar y restaurar como con Pickle.

from sklearn.externals import joblib

# Save to file in the current working directory
joblib_file = "joblib_model.pkl"
joblib.dump(model, joblib_file)

# Load from file
joblib_model = joblib.load(joblib_file)

# Calculate the accuracy and predictions
score = joblib_model.score(Xtest, Ytest)
print("Test score: {0:.2f} %".format(100 * score))
Ypredict = pickle_model.predict(Xtest)
$ python save_model_joblib.py
Test score: 91.11 %

Como se ve en el ejemplo, la biblioteca Joblib ofrece un flujo de trabajo un poco más simple en comparación con Pickle. Si bien Pickle requiere que se pase un objeto de archivo como argumento, Joblib funciona tanto con objetos de archivo como con nombres de archivo de cadena. En caso de que su modelo contenga grandes conjuntos de datos, cada conjunto se almacenará en un archivo separado, pero el procedimiento de guardar y restaurar seguirá siendo el mismo. Joblib también permite diferentes métodos de compresión, como ‘zlib’, ‘gzip’, ‘bz2’ y diferentes niveles de compresión.

Guardar y restaurar manualmente a JSON

Dependiendo de su proyecto, muchas veces encontrará Pickle y Joblib como soluciones inadecuadas. De todos modos, siempre que desee tener un control total sobre el proceso de guardar y restaurar, la mejor manera es crear sus propias funciones manualmente.

A continuación, se muestra un ejemplo de cómo guardar y restaurar objetos manualmente mediante JSON. Este enfoque nos permite seleccionar los datos que deben guardarse, como los parámetros del modelo, los coeficientes, los datos de entrenamiento y cualquier otra cosa que necesitemos.

Dado que queremos guardar todos estos datos en un solo objeto, una forma posible de hacerlo es crear una nueva clase que herede de la clase modelo, que en nuestro ejemplo es LogisticRegression. La nueva clase, llamada MyLogReg, implementa los métodos save_jsonload_json para guardar y restaurar a / desde un archivo JSON, respectivamente.

Para simplificar, guardaremos solo tres parámetros del modelo y los datos de entrenamiento. Algunos datos adicionales que podríamos almacenar con este enfoque son, por ejemplo, una puntuación de validación cruzada en el conjunto de entrenamiento, datos de prueba, puntuación de precisión en los datos de prueba, etc.

import json
import numpy as np

class MyLogReg(LogisticRegression):
    
    # Override the class constructor
    def __init__(self, C=1.0, solver='liblinear', max_iter=100, X_train=None, Y_train=None):
        LogisticRegression.__init__(self, C=C, solver=solver, max_iter=max_iter)
        self.X_train = X_train
        self.Y_train = Y_train
        
    # A method for saving object data to JSON file
    def save_json(self, filepath):
        dict_ = {}
        dict_['C'] = self.C
        dict_['max_iter'] = self.max_iter
        dict_['solver'] = self.solver
        dict_['X_train'] = self.X_train.tolist() if self.X_train is not None else 'None'
        dict_['Y_train'] = self.Y_train.tolist() if self.Y_train is not None else 'None'
        
        # Creat json and save to file
        json_txt = json.dumps(dict_, indent=4)
        with open(filepath, 'w') as file:
            file.write(json_txt)
    
    # A method for loading data from JSON file
    def load_json(self, filepath):
        with open(filepath, 'r') as file:
            dict_ = json.load(file)
            
        self.C = dict_['C']
        self.max_iter = dict_['max_iter']
        self.solver = dict_['solver']
        self.X_train = np.asarray(dict_['X_train']) if dict_['X_train'] != 'None' else None
        self.Y_train = np.asarray(dict_['Y_train']) if dict_['Y_train'] != 'None' else None
        

Ahora probemos la MyLogRegclase. Primero creamos un objeto mylogreg, le pasamos los datos de entrenamiento y lo guardamos en un archivo. Luego creamos un nuevo objeto json_mylogregy llamamos al métod load_json para cargar los datos del archivo.

filepath = "mylogreg.json"

# Create a model and train it
mylogreg = MyLogReg(X_train=Xtrain, Y_train=Ytrain)
mylogreg.save_json(filepath)

# Create a new object and load its data from JSON file
json_mylogreg = MyLogReg()
json_mylogreg.load_json(filepath)
json_mylogreg

Al imprimir el nuevo objeto, podemos ver nuestros parámetros y datos de entrenamiento según sea necesario.

MyLogReg(C=1.0,
     X_train=array([[ 4.3,  3. ,  1.1,  0.1],
       [ 5.7,  4.4,  1.5,  0.4],
       ...,
       [ 7.2,  3. ,  5.8,  1.6],
       [ 7.7,  2.8,  6.7,  2. ]]),
     Y_train=array([0, 0, ..., 2, 2]), class_weight=None, dual=False,
     fit_intercept=True, intercept_scaling=1, max_iter=100,
     multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,
     solver='liblinear', tol=0.0001, verbose=0, warm_start=False)

Dado que la serialización de datos usando JSON realmente guarda el objeto en un formato de cadena, en lugar de un flujo de bytes, el archivo ‘mylogreg.json’ podría abrirse y modificarse con un editor de texto. Aunque este enfoque sería conveniente para el desarrollador, es menos seguro ya que un intruso puede ver y modificar el contenido del archivo JSON. Además, este enfoque es más adecuado para objetos con una pequeña cantidad de variables de instancia, como los modelos scikit-learn, porque cualquier adición de nuevas variables requiere cambios en los métodos de guardar y restaurar.

Problemas de compatibilidad

Si bien algunos de los pros y los contras de cada herramienta se cubrieron en el texto hasta ahora, probablemente el mayor inconveniente de las herramientas Pickle y Joblib es su compatibilidad con diferentes modelos y versiones de Python.

Compatibilidad con la versión de Python : la documentación de ambas herramientas indica que no se recomienda (des) serializar objetos en diferentes versiones de Python, aunque podría funcionar con cambios menores de versión.

Compatibilidad del modelo : uno de los errores más frecuentes es guardar su modelo con Pickle o Joblib y luego cambiar el modelo antes de intentar restaurar desde un archivo. La estructura interna del modelo debe permanecer sin cambios entre guardar y recargar.

Un último problema con Pickle y Joblib está relacionado con la seguridad. Ambas herramientas pueden contener código malicioso, por lo que no se recomienda restaurar datos de fuentes no confiables o no autenticadas.

Conclusiones

En esta publicación describimos tres herramientas para guardar y restaurar modelos de scikit-learn. Las bibliotecas Pickle y Joblib son rápidas y fáciles de usar, pero tienen problemas de compatibilidad en diferentes versiones de Python y cambios en el modelo de aprendizaje. Por otro lado, el enfoque manual es más difícil de implementar y debe modificarse con cualquier cambio en la estructura del modelo, pero en el lado positivo podría adaptarse fácilmente a varias necesidades y no tiene problemas de compatibilidad.

Instalacion juniper notebook en Ubuntu 20.0.4


Anaconda es una distribución gratuita, de código abierto y una de las distribuciones más populares del lenguaje de programación Python y R. Generalmente, se usa para computación científica, análisis predictivo, aprendizaje automático y procesamiento de datos a gran escala. Es una distribución multiplataforma y se puede instalar en Linux, Windows y Mac OS.

En este post le mostraremos cómo instalar y usar Anaconda en un VPS Ubuntu 20.04.

Prerrequisitos

Acceso a la cuenta de usuario root (o acceso a una cuenta de administrador con privilegios de root)

Eliminar cualquier instalacion anterior

sudo rm -R /root/anaconda3

Inicie sesión en el servidor y actualice los paquetes del sistema operativo del servidor

Primero, inicie sesión en su servidor Ubuntu 20.04 a través de SSH como usuario root

Antes de comenzar, debe asegurarse de que todos los paquetes del sistema operativo Ubuntu instalados en el servidor estén actualizados. Puede hacer esto ejecutando los siguientes comandos:

apt-get update -y

apt-get upgrade -y

Descarga de Anaconda

Primero, visite la página de descarga de Anaconda y descargue la última versión del script de instalación de Anaconda con el siguiente comando:

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

Una vez completada la descarga, verifique la integridad de los datos del script mediante el comando sha256sum:

sha256sum Anaconda3-2020.11-Linux-x86_64.sh

Debería obtener el siguiente resultado:

cf2ff493f11eaad5d09ce2b4feaa5ea90db5174303d5b3fe030e16d29aeef7de Anaconda3-2020.11-Linux-x86_64.sh

A continuación, vaya a la página hash de Anaconda y haga coincidir el hash anterior como se muestra a continuación:

instalando anaconda en ubuntu 20.04

Una vez que haya terminado, puede proceder e instalar Anaconda.

Instalación de Anaconda

Ahora, ejecute el script de instalación de Anaconda para iniciar la instalación:

bash Anaconda3-2020.11-Linux-x86_64.sh

Debería ver el siguiente resultado:

Bienvenido a Anaconda3 2020.11

Para continuar con el proceso de instalación, revise la licencia
convenio.
Por favor presione ENTER para continuar
>>> 

Presione Enter para iniciar la instalación. Se le pedirá que acepte la licencia y elija el directorio de instalación como se muestra a continuación:

¿Aceptas los términos de la licencia? [si | no] si

Anaconda3 ahora se instalará en esta ubicación:
/ root / anaconda3

  - Presione ENTER para confirmar la ubicación
  - Presione CTRL-C para cancelar la instalación
  - O especifique una ubicación diferente a continuación

[/ root / anaconda3] >>> 

Presione Entrar para confirmar la ubicación y continuar con el proceso de instalación. Una vez completada la instalación, debería obtener el siguiente resultado:

¿Desea que el instalador inicialice Anaconda3
ejecutando conda init? [si | no]
[no] >>> si

Escriba sí y presione Entrar para inicializar la Anaconda. Debería obtener el siguiente resultado:

==> Para que los cambios surtan efecto, cierre y vuelva a abrir su shell actual. <==

Si prefiere que el entorno base de conda no se active al inicio, 
   establezca el parámetro auto_activate_base en falso: 

conda config --set auto_activate_base false

¡Gracias por instalar Anaconda3!

================================================ =========================

Trabajar con portátiles Python y Jupyter es muy sencillo con PyCharm Pro,
diseñado para ser utilizado con Anaconda. Descarga ahora y ten los mejores datos
herramientas a su alcance.

PyCharm Pro para Anaconda está disponible en: https://www.anaconda.com/pycharm

A continuación, active la variable de entorno Anaconda con el siguiente comando:

fuente ~ / .bashrc

Ahora puede verificar la instalación usando el siguiente comando:

conda info

Debería obtener el siguiente resultado:

    ubicación de entorno activo: / root / anaconda3
            nivel de cáscara: 1
       archivo de configuración de usuario: /root/.condarc
 archivos de configuración poblados: 
          versión conda: 4.9.2
    versión conda-build: 3.20.5
         versión de Python: 3.8.5.final.0
       paquetes virtuales: __glibc = 2.31 = 0
                          __unix = 0 = 0
                          __archspec = 1 = x86_64
       entorno base: / root / anaconda3 (escribible)
           URL de canal: https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          caché del paquete: / root / anaconda3 / pkgs
                          /root/.conda/pkgs
       Directorios envs: / root / anaconda3 / envs
                          /root/.conda/envs
               plataforma: linux-64
             user-agent: conda / 4.9.2 solicitudes / 2.24.0 CPython / 3.8.5 Linux / 5.4.0-29-generic ubuntu / 20.04 glibc / 2.31
                UID: GID: 0: 0
             archivo netrc: Ninguno
           modo fuera de línea: falso

Actualización Anaconda

Se recomienda actualizar Anaconda con regularidad. Para actualizar Anaconda, primero actualice la conda con el siguiente comando:

conda update conda

A continuación, actualice Anaconda con el siguiente comando:

conda update anaconda

Puede crear un entorno Python 3 para Anaconda usando el siguiente comando:

Crear un entorno Anaconda

conda create --name my_env

A continuación, active el entorno con el siguiente comando:

conda activate my_env

Debería obtener el siguiente resultado:

(mi_env) root @ ubuntu2004: ~ # 


Abra una nueva ventana de Terminal yendo a «Mostrar aplicaciones» y seleccionando la Terminal .

Escriba el comando para verificar que se instaló Anaconda.(base) nombre de usuario @ ubuntu: ~ $ python –version
Python 3.8.5

Escriba el comando para actualizar Anaconda.(base) username @ ubuntu: ~ $ conda update –all –yes

Iniciar Jupyter Notebook

Escriba el comando para iniciar Jupyter Notebook.nombre de usuario @ ubuntu: ~ $ jupyter notebook

Ejemplo de todos los comandos lanzados :

[email protected]:~/Descargas$ wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
--2021-09-06 10:21:36--  https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
Resolviendo repo.anaconda.com (repo.anaconda.com)... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8303, ...
Conectando con repo.anaconda.com (repo.anaconda.com)[104.16.130.3]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 554535580 (529M) [application/x-sh]
Guardando como: “Anaconda3-2020.11-Linux-x86_64.sh”

Anaconda3-2020.11-L 100%[===================>] 528,85M  3,04MB/s    en 2m 56s  

2021-09-06 10:24:32 (3,00 MB/s) - “Anaconda3-2020.11-Linux-x86_64.sh” guardado [554535580/554535580]

[email protected]:~/Descargas$ sha256sum Anaconda3-2020.11-Linux-x86_64.sh
cf2ff493f11eaad5d09ce2b4feaa5ea90db5174303d5b3fe030e16d29aeef7de  Anaconda3-2020.11-Linux-x86_64.sh
[email protected]:~/Descargas$ bash Anaconda3-2020.11-Linux-x86_64.sh

Welcome to Anaconda3 2020.11

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 
===================================
End User License Agreement - Anaconda Individual Edition
===================================

Copyright 2015-2020, Anaconda, Inc.

All rights reserved under the 3-clause BSD License:

This End User License Agreement (the "Agreement") is a legal agreement between y
ou and Anaconda, Inc. ("Anaconda") and governs your use of Anaconda Individual E
dition (which was formerly known as Anaconda Distribution).

Subject to the terms of this Agreement, Anaconda hereby grants you a non-exclusi
ve, non-transferable license to:

  * Install and use the Anaconda Individual Edition (which was formerly known as
 Anaconda Distribution),
  * Modify and create derivative works of sample source code delivered in Anacon
da Individual Edition from Anaconda's repository; and
  * Redistribute code files in source (if provided to you by Anaconda as source)
 and binary forms, with or without modification subject to the requirements set 
forth below.

Anaconda may, at its option, make available patches, workarounds or other update
s to Anaconda Individual Edition. Unless the updates are provided with their sep
arate governing terms, they are deemed part of Anaconda Individual Edition licen
sed to you as provided in this Agreement.  This Agreement does not entitle you t
o any support for Anaconda Individual Edition.

Anaconda reserves all rights not expressly granted to you in this Agreement.

Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this 
list of conditions and the following disclaimer.
  * Redistributions in binary form must reproduce the above copyright notice, th
is list of conditions and the following disclaimer in the documentation and/or o
ther materials provided with the distribution.
  * Neither the name of Anaconda nor the names of its contributors may be used t
o endorse or promote products derived from this software without specific prior 
written permission.

You acknowledge that, as between you and Anaconda, Anaconda owns all right, titl
e, and interest, including all intellectual property rights, in and to Anaconda 
Individual Edition and, with respect to third-party products distributed with or
 through Anaconda Individual Edition, the applicable third-party licensors own a
ll right, title and interest, including all intellectual property rights, in and
 to such products.  If you send or transmit any communications or materials to A
naconda suggesting or recommending changes to the software or documentation, inc
luding without limitation, new features or functionality relating thereto, or an
y comments, questions, suggestions or the like ("Feedback"), Anaconda is free to
 use such Feedback. You hereby assign to Anaconda all right, title, and interest
 in, and Anaconda is free to use, without any attribution or compensation to any
 party, any ideas, know-how, concepts, techniques or other intellectual property
 rights contained in the Feedback, for any purpose whatsoever, although Anaconda
 is not required to use any Feedback.

THIS SOFTWARE IS PROVIDED BY ANACONDA AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRE
SS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EV
ENT SHALL ANACONDA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEM
PLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF S
UBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUP
TION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT O
F THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

TO THE MAXIMUM EXTENT PERMITTED BY LAW, ANACONDA AND ITS AFFILIATES SHALL NOT BE
 LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY L
OST PROFITS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF PROC
URING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT O
R THE USE OR PERFORMANCE OF ANACONDA INDIVIDUAL EDITION, WHETHER SUCH LIABILITY 
ARISES FROM ANY CLAIM BASED UPON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (I
NCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY O
F LIABILITY. IN NO EVENT WILL THE TOTAL CUMULATIVE LIABILITY OF ANACONDA AND ITS
 AFFILIATES UNDER OR ARISING OUT OF THIS AGREEMENT EXCEED US0.00.

If you want to terminate this Agreement, you may do so by discontinuing use of A
naconda Individual Edition.  Anaconda may, at any time, terminate this Agreement
 and the license granted hereunder if you fail to comply with any term of this A
greement.   Upon any termination of this Agreement, you agree to promptly discon
tinue use of the Anaconda Individual Edition and destroy all copies in your poss
ession or control. Upon any termination of this Agreement all provisions survive
 except for the licenses granted to you.

This Agreement is governed by and construed in accordance with the internal laws
 of the State of Texas without giving effect to any choice or conflict of law pr
ovision or rule that would require or permit the application of the laws of any 
jurisdiction other than those of the State of Texas. Any legal suit, action, or 
proceeding arising out of or related to this Agreement or the licenses granted h
ereunder by you must be instituted exclusively in the federal courts of the Unit
ed States or the courts of the State of Texas in each case located in Travis Cou
nty, Texas, and you irrevocably submit to the jurisdiction of such courts in any
 such suit, action, or proceeding.


Notice of Third Party Software Licenses
=======================================

Anaconda Individual Edition provides access to a repository which contains softw
are packages or tools licensed on an open source basis from third parties and bi
nary packages of these third party tools. These third party software packages or
 tools are provided on an "as is" basis and are subject to their respective lice
nse agreements as well as this Agreement and the Terms of Service for the Reposi
tory located at https://know.anaconda.com/TOS.html; provided, however, no restri
ction contained in the Terms of Service shall be construed so as to limit your a
bility to download the packages contained in Anaconda Individual Edition provide
d you comply with the license for each such package.  These licenses may be acce
ssed from within the Anaconda Individual Edition software or at https://docs.ana
conda.com/anaconda/pkg-docs. Information regarding which license is applicable i
s available from within many of the third party software packages and tools and 
at https://repo.anaconda.com/pkgs/main/ and https://repo.anaconda.com/pkgs/r/. A
naconda reserves the right, in its sole discretion, to change which third party 
tools are included in the repository accessible through Anaconda Individual Edit
ion.

Intel Math Kernel Library
-------------------------

Anaconda Individual Edition provides access to re-distributable, run-time, share
d-library files from the Intel Math Kernel Library ("MKL binaries").

Copyright 2018 Intel Corporation.  License available at https://software.intel.c
om/en-us/license/intel-simplified-software-license (the "MKL License").

You may use and redistribute the MKL binaries, without modification, provided th
e following conditions are met:

  * Redistributions must reproduce the above copyright notice and the following 
terms of use in the MKL binaries and in the documentation and/or other materials
 provided with the distribution.
  * Neither the name of Intel nor the names of its suppliers may be used to endo
rse or promote products derived from the MKL binaries without specific prior wri
tten permission.
  * No reverse engineering, decompilation, or disassembly of the MKL binaries is
 permitted.

You are specifically authorized to use and redistribute the MKL binaries with yo
ur installation of Anaconda Individual Edition subject to the terms set forth in
 the MKL License. You are also authorized to redistribute the MKL binaries with 
Anaconda Individual Edition or in the Anaconda package that contains the MKL bin
aries. If needed, instructions for removing the MKL binaries after installation 
of Anaconda Individual Edition are available at https://docs.anaconda.com.

cuDNN Software
--------------

Anaconda Individual Edition also provides access to cuDNN software binaries ("cu
DNN binaries") from NVIDIA Corporation. You are specifically authorized to use t
he cuDNN binaries with your installation of Anaconda Individual Edition subject 
to your compliance with the license agreement located at https://docs.nvidia.com
/deeplearning/sdk/cudnn-sla/index.html. You are also authorized to redistribute 
the cuDNN binaries with an Anaconda Individual Edition package that contains the
 cuDNN binaries. You can add or remove the cuDNN binaries utilizing the install 
and uninstall features in Anaconda Individual Edition.

cuDNN binaries contain source code provided by NVIDIA Corporation.


Export; Cryptography Notice
===========================

You must comply with all domestic and international export laws and regulations 
that apply to the software, which include restrictions on destinations, end user
s, and end use.  Anaconda Individual Edition includes cryptographic software. Th
e country in which you currently reside may have restrictions on the import, pos
session, use, and/or re-export to another country, of encryption software. BEFOR
E using any encryption software, please check your country's laws, regulations a
nd policies concerning the import, possession, or use, and re-export of encrypti
on software, to see if this is permitted. See the Wassenaar Arrangement http://w
ww.wassenaar.org/ for more information.

Anaconda has self-classified this software as Export Commodity Control Number (E
CCN) 5D992.c, which includes mass market information security software using or 
performing cryptographic functions with asymmetric algorithms. No license is req
uired for export of this software to non-embargoed countries.

The Intel Math Kernel Library contained in Anaconda Individual Edition is classi
fied by Intel as ECCN 5D992.c with no license required for export to non-embargo
ed countries.

The following packages are included in the repository accessible through Anacond
a Individual Edition that relate to cryptography:

openssl
    The OpenSSL Project is a collaborative effort to develop a robust, commercia
l-grade, full-featured, and Open Source toolkit implementing the Transport Layer
 Security (TLS) and Secure Sockets Layer (SSL) protocols as well as a full-stren
gth general purpose cryptography library.

pycrypto
    A collection of both secure hash functions (such as SHA256 and RIPEMD160), a
nd various encryption algorithms (AES, DES, RSA, ElGamal, etc.).

pyopenssl
    A thin Python wrapper around (a subset of) the OpenSSL library.

kerberos (krb5, non-Windows platforms)
    A network authentication protocol designed to provide strong authentication 
for client/server applications by using secret-key cryptography.

cryptography
    A Python library which exposes cryptographic recipes and primitives.

pycryptodome
    A fork of PyCrypto. It is a self-contained Python package of low-level crypt
ographic primitives.

pycryptodomex
    A stand-alone version of pycryptodome.

libsodium
    A software library for encryption, decryption, signatures, password hashing 
and more.

pynacl
    A Python binding to the Networking and Cryptography library, a crypto librar
y with the stated goal of improving usability, security and speed.


Last updated September 28, 2020


Do you accept the license terms? [yes|no]
[no] >>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> yes

Anaconda3 will now be installed into this location:
/home/soloelectronicos/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/soloelectronicos/anaconda3] >>> 
PREFIX=/home/soloelectronicos/anaconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done                       
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - _ipyw_jlab_nb_ext_conf==0.1.0=py38_0
    - _libgcc_mutex==0.1=main
    - alabaster==0.7.12=py_0
    - anaconda-client==1.7.2=py38_0
    - anaconda-navigator==1.10.0=py38_0
    - anaconda-project==0.8.4=py_0
    - anaconda==2020.11=py38_0
    - argh==0.26.2=py38_0
    - argon2-cffi==20.1.0=py38h7b6447c_1
    - asn1crypto==1.4.0=py_0
    - astroid==2.4.2=py38_0
    - astropy==4.0.2=py38h7b6447c_0
    - async_generator==1.10=py_0
    - atomicwrites==1.4.0=py_0
    - attrs==20.3.0=pyhd3eb1b0_0
    - autopep8==1.5.4=py_0
    - babel==2.8.1=pyhd3eb1b0_0
    - backcall==0.2.0=py_0
    - backports.functools_lru_cache==1.6.1=py_0
    - backports.shutil_get_terminal_size==1.0.0=py38_2
    - backports.tempfile==1.0=py_1
    - backports.weakref==1.0.post1=py_1
    - backports==1.0=py_2
    - beautifulsoup4==4.9.3=pyhb0f4dca_0
    - bitarray==1.6.1=py38h27cfd23_0
    - bkcharts==0.2=py38_0
    - blas==1.0=mkl
    - bleach==3.2.1=py_0
    - blosc==1.20.1=hd408876_0
    - bokeh==2.2.3=py38_0
    - boto==2.49.0=py38_0
    - bottleneck==1.3.2=py38heb32a55_1
    - brotlipy==0.7.0=py38h7b6447c_1000
    - bzip2==1.0.8=h7b6447c_0
    - ca-certificates==2020.10.14=0
    - cairo==1.14.12=h8948797_3
    - certifi==2020.6.20=pyhd3eb1b0_3
    - cffi==1.14.3=py38he30daa8_0
    - chardet==3.0.4=py38_1003
    - click==7.1.2=py_0
    - cloudpickle==1.6.0=py_0
    - clyent==1.2.2=py38_1
    - colorama==0.4.4=py_0
    - conda-build==3.20.5=py38_1
    - conda-env==2.6.0=1
    - conda-package-handling==1.7.2=py38h03888b9_0
    - conda-verify==3.4.2=py_1
    - conda==4.9.2=py38h06a4308_0
    - contextlib2==0.6.0.post1=py_0
    - cryptography==3.1.1=py38h1ba5d50_0
    - curl==7.71.1=hbc83047_1
    - cycler==0.10.0=py38_0
    - cython==0.29.21=py38he6710b0_0
    - cytoolz==0.11.0=py38h7b6447c_0
    - dask-core==2.30.0=py_0
    - dask==2.30.0=py_0
    - dbus==1.13.18=hb2f20db_0
    - decorator==4.4.2=py_0
    - defusedxml==0.6.0=py_0
    - diff-match-patch==20200713=py_0
    - distributed==2.30.1=py38h06a4308_0
    - docutils==0.16=py38_1
    - entrypoints==0.3=py38_0
    - et_xmlfile==1.0.1=py_1001
    - expat==2.2.10=he6710b0_2
    - fastcache==1.1.0=py38h7b6447c_0
    - filelock==3.0.12=py_0
    - flake8==3.8.4=py_0
    - flask==1.1.2=py_0
    - fontconfig==2.13.0=h9420a91_0
    - freetype==2.10.4=h5ab3b9f_0
    - fribidi==1.0.10=h7b6447c_0
    - fsspec==0.8.3=py_0
    - future==0.18.2=py38_1
    - get_terminal_size==1.0.0=haa9412d_0
    - gevent==20.9.0=py38h7b6447c_0
    - glib==2.66.1=h92f7085_0
    - glob2==0.7=py_0
    - gmp==6.1.2=h6c8ec71_1
    - gmpy2==2.0.8=py38hd5f6e3b_3
    - graphite2==1.3.14=h23475e2_0
    - greenlet==0.4.17=py38h7b6447c_0
    - gst-plugins-base==1.14.0=hbbd80ab_1
    - gstreamer==1.14.0=hb31296c_0
    - h5py==2.10.0=py38h7918eee_0
    - harfbuzz==2.4.0=hca77d97_1
    - hdf5==1.10.4=hb1b8bf9_0
    - heapdict==1.0.1=py_0
    - html5lib==1.1=py_0
    - icu==58.2=he6710b0_3
    - idna==2.10=py_0
    - imageio==2.9.0=py_0
    - imagesize==1.2.0=py_0
    - importlib-metadata==2.0.0=py_1
    - importlib_metadata==2.0.0=1
    - iniconfig==1.1.1=py_0
    - intel-openmp==2020.2=254
    - intervaltree==3.1.0=py_0
    - ipykernel==5.3.4=py38h5ca1d4c_0
    - ipython==7.19.0=py38hb070fc8_0
    - ipython_genutils==0.2.0=py38_0
    - ipywidgets==7.5.1=py_1
    - isort==5.6.4=py_0
    - itsdangerous==1.1.0=py_0
    - jbig==2.1=hdba287a_0
    - jdcal==1.4.1=py_0
    - jedi==0.17.1=py38_0
    - jeepney==0.5.0=pyhd3eb1b0_0
    - jinja2==2.11.2=py_0
    - joblib==0.17.0=py_0
    - jpeg==9b=h024ee3a_2
    - json5==0.9.5=py_0
    - jsonschema==3.2.0=py_2
    - jupyter==1.0.0=py38_7
    - jupyter_client==6.1.7=py_0
    - jupyter_console==6.2.0=py_0
    - jupyter_core==4.6.3=py38_0
    - jupyterlab==2.2.6=py_0
    - jupyterlab_pygments==0.1.2=py_0
    - jupyterlab_server==1.2.0=py_0
    - keyring==21.4.0=py38_1
    - kiwisolver==1.3.0=py38h2531618_0
    - krb5==1.18.2=h173b8e3_0
    - lazy-object-proxy==1.4.3=py38h7b6447c_0
    - lcms2==2.11=h396b838_0
    - ld_impl_linux-64==2.33.1=h53a641e_7
    - libarchive==3.4.2=h62408e4_0
    - libcurl==7.71.1=h20c2e04_1
    - libedit==3.1.20191231=h14c3975_1
    - libffi==3.3=he6710b0_2
    - libgcc-ng==9.1.0=hdf63c60_0
    - libgfortran-ng==7.3.0=hdf63c60_0
    - liblief==0.10.1=he6710b0_0
    - libllvm10==10.0.1=hbcb73fb_5
    - libpng==1.6.37=hbc83047_0
    - libsodium==1.0.18=h7b6447c_0
    - libspatialindex==1.9.3=he6710b0_0
    - libssh2==1.9.0=h1ba5d50_1
    - libstdcxx-ng==9.1.0=hdf63c60_0
    - libtiff==4.1.0=h2733197_1
    - libtool==2.4.6=h7b6447c_1005
    - libuuid==1.0.3=h1bed415_2
    - libxcb==1.14=h7b6447c_0
    - libxml2==2.9.10=hb55368b_3
    - libxslt==1.1.34=hc22bd24_0
    - llvmlite==0.34.0=py38h269e1b5_4
    - locket==0.2.0=py38_1
    - lxml==4.6.1=py38hefd8a0e_0
    - lz4-c==1.9.2=heb0550a_3
    - lzo==2.10=h7b6447c_2
    - markupsafe==1.1.1=py38h7b6447c_0
    - matplotlib-base==3.3.2=py38h817c723_0
    - matplotlib==3.3.2=0
    - mccabe==0.6.1=py38_1
    - mistune==0.8.4=py38h7b6447c_1000
    - mkl-service==2.3.0=py38he904b0f_0
    - mkl==2020.2=256
    - mkl_fft==1.2.0=py38h23d657b_0
    - mkl_random==1.1.1=py38h0573a6f_0
    - mock==4.0.2=py_0
    - more-itertools==8.6.0=pyhd3eb1b0_0
    - mpc==1.1.0=h10f8cd9_1
    - mpfr==4.0.2=hb69a4c5_1
    - mpmath==1.1.0=py38_0
    - msgpack-python==1.0.0=py38hfd86e86_1
    - multipledispatch==0.6.0=py38_0
    - navigator-updater==0.2.1=py38_0
    - nbclient==0.5.1=py_0
    - nbconvert==6.0.7=py38_0
    - nbformat==5.0.8=py_0
    - ncurses==6.2=he6710b0_1
    - nest-asyncio==1.4.2=pyhd3eb1b0_0
    - networkx==2.5=py_0
    - nltk==3.5=py_0
    - nose==1.3.7=py38_2
    - notebook==6.1.4=py38_0
    - numba==0.51.2=py38h0573a6f_1
    - numexpr==2.7.1=py38h423224d_0
    - numpy-base==1.19.2=py38hfa32c7d_0
    - numpy==1.19.2=py38h54aff64_0
    - numpydoc==1.1.0=pyhd3eb1b0_1
    - olefile==0.46=py_0
    - openpyxl==3.0.5=py_0
    - openssl==1.1.1h=h7b6447c_0
    - packaging==20.4=py_0
    - pandas==1.1.3=py38he6710b0_0
    - pandoc==2.11=hb0f4dca_0
    - pandocfilters==1.4.3=py38h06a4308_1
    - pango==1.45.3=hd140c19_0
    - parso==0.7.0=py_0
    - partd==1.1.0=py_0
    - patchelf==0.12=he6710b0_0
    - path.py==12.5.0=0
    - path==15.0.0=py38_0
    - pathlib2==2.3.5=py38_0
    - pathtools==0.1.2=py_1
    - patsy==0.5.1=py38_0
    - pcre==8.44=he6710b0_0
    - pep8==1.7.1=py38_0
    - pexpect==4.8.0=py38_0
    - pickleshare==0.7.5=py38_1000
    - pillow==8.0.1=py38he98fc37_0
    - pip==20.2.4=py38h06a4308_0
    - pixman==0.40.0=h7b6447c_0
    - pkginfo==1.6.1=py38h06a4308_0
    - pluggy==0.13.1=py38_0
    - ply==3.11=py38_0
    - prometheus_client==0.8.0=py_0
    - prompt-toolkit==3.0.8=py_0
    - prompt_toolkit==3.0.8=0
    - psutil==5.7.2=py38h7b6447c_0
    - ptyprocess==0.6.0=py38_0
    - py-lief==0.10.1=py38h403a769_0
    - py==1.9.0=py_0
    - pycodestyle==2.6.0=py_0
    - pycosat==0.6.3=py38h7b6447c_1
    - pycparser==2.20=py_2
    - pycurl==7.43.0.6=py38h1ba5d50_0
    - pydocstyle==5.1.1=py_0
    - pyflakes==2.2.0=py_0
    - pygments==2.7.2=pyhd3eb1b0_0
    - pylint==2.6.0=py38_0
    - pyodbc==4.0.30=py38he6710b0_0
    - pyopenssl==19.1.0=py_1
    - pyparsing==2.4.7=py_0
    - pyqt==5.9.2=py38h05f1152_4
    - pyrsistent==0.17.3=py38h7b6447c_0
    - pysocks==1.7.1=py38_0
    - pytables==3.6.1=py38h9fd0a39_0
    - pytest==6.1.1=py38_0
    - python-dateutil==2.8.1=py_0
    - python-jsonrpc-server==0.4.0=py_0
    - python-language-server==0.35.1=py_0
    - python-libarchive-c==2.9=py_0
    - python==3.8.5=h7579374_1
    - pytz==2020.1=py_0
    - pywavelets==1.1.1=py38h7b6447c_2
    - pyxdg==0.27=pyhd3eb1b0_0
    - pyyaml==5.3.1=py38h7b6447c_1
    - pyzmq==19.0.2=py38he6710b0_1
    - qdarkstyle==2.8.1=py_0
    - qt==5.9.7=h5867ecd_1
    - qtawesome==1.0.1=py_0
    - qtconsole==4.7.7=py_0
    - qtpy==1.9.0=py_0
    - readline==8.0=h7b6447c_0
    - regex==2020.10.15=py38h7b6447c_0
    - requests==2.24.0=py_0
    - ripgrep==12.1.1=0
    - rope==0.18.0=py_0
    - rtree==0.9.4=py38_1
    - ruamel_yaml==0.15.87=py38h7b6447c_1
    - scikit-image==0.17.2=py38hdf5156a_0
    - scikit-learn==0.23.2=py38h0573a6f_0
    - scipy==1.5.2=py38h0b6359f_0
    - seaborn==0.11.0=py_0
    - secretstorage==3.1.2=py38_0
    - send2trash==1.5.0=py38_0
    - setuptools==50.3.1=py38h06a4308_1
    - simplegeneric==0.8.1=py38_2
    - singledispatch==3.4.0.3=py_1001
    - sip==4.19.13=py38he6710b0_0
    - six==1.15.0=py38h06a4308_0
    - snowballstemmer==2.0.0=py_0
    - sortedcollections==1.2.1=py_0
    - sortedcontainers==2.2.2=py_0
    - soupsieve==2.0.1=py_0
    - sphinx==3.2.1=py_0
    - sphinxcontrib-applehelp==1.0.2=py_0
    - sphinxcontrib-devhelp==1.0.2=py_0
    - sphinxcontrib-htmlhelp==1.0.3=py_0
    - sphinxcontrib-jsmath==1.0.1=py_0
    - sphinxcontrib-qthelp==1.0.3=py_0
    - sphinxcontrib-serializinghtml==1.1.4=py_0
    - sphinxcontrib-websupport==1.2.4=py_0
    - sphinxcontrib==1.0=py38_1
    - spyder-kernels==1.9.4=py38_0
    - spyder==4.1.5=py38_0
    - sqlalchemy==1.3.20=py38h7b6447c_0
    - sqlite==3.33.0=h62c20be_0
    - statsmodels==0.12.0=py38h7b6447c_0
    - sympy==1.6.2=py38h06a4308_1
    - tbb==2020.3=hfd86e86_0
    - tblib==1.7.0=py_0
    - terminado==0.9.1=py38_0
    - testpath==0.4.4=py_0
    - threadpoolctl==2.1.0=pyh5ca1d4c_0
    - tifffile==2020.10.1=py38hdd07704_2
    - tk==8.6.10=hbc83047_0
    - toml==0.10.1=py_0
    - toolz==0.11.1=py_0
    - tornado==6.0.4=py38h7b6447c_1
    - tqdm==4.50.2=py_0
    - traitlets==5.0.5=py_0
    - typing_extensions==3.7.4.3=py_0
    - ujson==4.0.1=py38he6710b0_0
    - unicodecsv==0.14.1=py38_0
    - unixodbc==2.3.9=h7b6447c_0
    - urllib3==1.25.11=py_0
    - watchdog==0.10.3=py38_0
    - wcwidth==0.2.5=py_0
    - webencodings==0.5.1=py38_1
    - werkzeug==1.0.1=py_0
    - wheel==0.35.1=py_0
    - widgetsnbextension==3.5.1=py38_0
    - wrapt==1.11.2=py38h7b6447c_0
    - wurlitzer==2.0.1=py38_0
    - xlrd==1.2.0=py_0
    - xlsxwriter==1.3.7=py_0
    - xlwt==1.3.0=py38_0
    - xmltodict==0.12.0=py_0
    - xz==5.2.5=h7b6447c_0
    - yaml==0.2.5=h7b6447c_0
    - yapf==0.30.0=py_0
    - zeromq==4.3.3=he6710b0_3
    - zict==2.0.0=py_0
    - zipp==3.4.0=pyhd3eb1b0_0
    - zlib==1.2.11=h7b6447c_3
    - zope.event==4.5.0=py38_0
    - zope.interface==5.1.2=py38h7b6447c_0
    - zope==1.0=py38_1
    - zstd==1.4.5=h9ceee32_0


The following NEW packages will be INSTALLED:

  _ipyw_jlab_nb_ext~ pkgs/main/linux-64::_ipyw_jlab_nb_ext_conf-0.1.0-py38_0
  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  alabaster          pkgs/main/noarch::alabaster-0.7.12-py_0
  anaconda           pkgs/main/linux-64::anaconda-2020.11-py38_0
  anaconda-client    pkgs/main/linux-64::anaconda-client-1.7.2-py38_0
  anaconda-navigator pkgs/main/linux-64::anaconda-navigator-1.10.0-py38_0
  anaconda-project   pkgs/main/noarch::anaconda-project-0.8.4-py_0
  argh               pkgs/main/linux-64::argh-0.26.2-py38_0
  argon2-cffi        pkgs/main/linux-64::argon2-cffi-20.1.0-py38h7b6447c_1
  asn1crypto         pkgs/main/noarch::asn1crypto-1.4.0-py_0
  astroid            pkgs/main/linux-64::astroid-2.4.2-py38_0
  astropy            pkgs/main/linux-64::astropy-4.0.2-py38h7b6447c_0
  async_generator    pkgs/main/noarch::async_generator-1.10-py_0
  atomicwrites       pkgs/main/noarch::atomicwrites-1.4.0-py_0
  attrs              pkgs/main/noarch::attrs-20.3.0-pyhd3eb1b0_0
  autopep8           pkgs/main/noarch::autopep8-1.5.4-py_0
  babel              pkgs/main/noarch::babel-2.8.1-pyhd3eb1b0_0
  backcall           pkgs/main/noarch::backcall-0.2.0-py_0
  backports          pkgs/main/noarch::backports-1.0-py_2
  backports.functoo~ pkgs/main/noarch::backports.functools_lru_cache-1.6.1-py_0
  backports.shutil_~ pkgs/main/linux-64::backports.shutil_get_terminal_size-1.0.0-py38_2
  backports.tempfile pkgs/main/noarch::backports.tempfile-1.0-py_1
  backports.weakref  pkgs/main/noarch::backports.weakref-1.0.post1-py_1
  beautifulsoup4     pkgs/main/noarch::beautifulsoup4-4.9.3-pyhb0f4dca_0
  bitarray           pkgs/main/linux-64::bitarray-1.6.1-py38h27cfd23_0
  bkcharts           pkgs/main/linux-64::bkcharts-0.2-py38_0
  blas               pkgs/main/linux-64::blas-1.0-mkl
  bleach             pkgs/main/noarch::bleach-3.2.1-py_0
  blosc              pkgs/main/linux-64::blosc-1.20.1-hd408876_0
  bokeh              pkgs/main/linux-64::bokeh-2.2.3-py38_0
  boto               pkgs/main/linux-64::boto-2.49.0-py38_0
  bottleneck         pkgs/main/linux-64::bottleneck-1.3.2-py38heb32a55_1
  brotlipy           pkgs/main/linux-64::brotlipy-0.7.0-py38h7b6447c_1000
  bzip2              pkgs/main/linux-64::bzip2-1.0.8-h7b6447c_0
  ca-certificates    pkgs/main/linux-64::ca-certificates-2020.10.14-0
  cairo              pkgs/main/linux-64::cairo-1.14.12-h8948797_3
  certifi            pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3
  cffi               pkgs/main/linux-64::cffi-1.14.3-py38he30daa8_0
  chardet            pkgs/main/linux-64::chardet-3.0.4-py38_1003
  click              pkgs/main/noarch::click-7.1.2-py_0
  cloudpickle        pkgs/main/noarch::cloudpickle-1.6.0-py_0
  clyent             pkgs/main/linux-64::clyent-1.2.2-py38_1
  colorama           pkgs/main/noarch::colorama-0.4.4-py_0
  conda              pkgs/main/linux-64::conda-4.9.2-py38h06a4308_0
  conda-build        pkgs/main/linux-64::conda-build-3.20.5-py38_1
  conda-env          pkgs/main/linux-64::conda-env-2.6.0-1
  conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.2-py38h03888b9_0
  conda-verify       pkgs/main/noarch::conda-verify-3.4.2-py_1
  contextlib2        pkgs/main/noarch::contextlib2-0.6.0.post1-py_0
  cryptography       pkgs/main/linux-64::cryptography-3.1.1-py38h1ba5d50_0
  curl               pkgs/main/linux-64::curl-7.71.1-hbc83047_1
  cycler             pkgs/main/linux-64::cycler-0.10.0-py38_0
  cython             pkgs/main/linux-64::cython-0.29.21-py38he6710b0_0
  cytoolz            pkgs/main/linux-64::cytoolz-0.11.0-py38h7b6447c_0
  dask               pkgs/main/noarch::dask-2.30.0-py_0
  dask-core          pkgs/main/noarch::dask-core-2.30.0-py_0
  dbus               pkgs/main/linux-64::dbus-1.13.18-hb2f20db_0
  decorator          pkgs/main/noarch::decorator-4.4.2-py_0
  defusedxml         pkgs/main/noarch::defusedxml-0.6.0-py_0
  diff-match-patch   pkgs/main/noarch::diff-match-patch-20200713-py_0
  distributed        pkgs/main/linux-64::distributed-2.30.1-py38h06a4308_0
  docutils           pkgs/main/linux-64::docutils-0.16-py38_1
  entrypoints        pkgs/main/linux-64::entrypoints-0.3-py38_0
  et_xmlfile         pkgs/main/noarch::et_xmlfile-1.0.1-py_1001
  expat              pkgs/main/linux-64::expat-2.2.10-he6710b0_2
  fastcache          pkgs/main/linux-64::fastcache-1.1.0-py38h7b6447c_0
  filelock           pkgs/main/noarch::filelock-3.0.12-py_0
  flake8             pkgs/main/noarch::flake8-3.8.4-py_0
  flask              pkgs/main/noarch::flask-1.1.2-py_0
  fontconfig         pkgs/main/linux-64::fontconfig-2.13.0-h9420a91_0
  freetype           pkgs/main/linux-64::freetype-2.10.4-h5ab3b9f_0
  fribidi            pkgs/main/linux-64::fribidi-1.0.10-h7b6447c_0
  fsspec             pkgs/main/noarch::fsspec-0.8.3-py_0
  future             pkgs/main/linux-64::future-0.18.2-py38_1
  get_terminal_size  pkgs/main/linux-64::get_terminal_size-1.0.0-haa9412d_0
  gevent             pkgs/main/linux-64::gevent-20.9.0-py38h7b6447c_0
  glib               pkgs/main/linux-64::glib-2.66.1-h92f7085_0
  glob2              pkgs/main/noarch::glob2-0.7-py_0
  gmp                pkgs/main/linux-64::gmp-6.1.2-h6c8ec71_1
  gmpy2              pkgs/main/linux-64::gmpy2-2.0.8-py38hd5f6e3b_3
  graphite2          pkgs/main/linux-64::graphite2-1.3.14-h23475e2_0
  greenlet           pkgs/main/linux-64::greenlet-0.4.17-py38h7b6447c_0
  gst-plugins-base   pkgs/main/linux-64::gst-plugins-base-1.14.0-hbbd80ab_1
  gstreamer          pkgs/main/linux-64::gstreamer-1.14.0-hb31296c_0
  h5py               pkgs/main/linux-64::h5py-2.10.0-py38h7918eee_0
  harfbuzz           pkgs/main/linux-64::harfbuzz-2.4.0-hca77d97_1
  hdf5               pkgs/main/linux-64::hdf5-1.10.4-hb1b8bf9_0
  heapdict           pkgs/main/noarch::heapdict-1.0.1-py_0
  html5lib           pkgs/main/noarch::html5lib-1.1-py_0
  icu                pkgs/main/linux-64::icu-58.2-he6710b0_3
  idna               pkgs/main/noarch::idna-2.10-py_0
  imageio            pkgs/main/noarch::imageio-2.9.0-py_0
  imagesize          pkgs/main/noarch::imagesize-1.2.0-py_0
  importlib-metadata pkgs/main/noarch::importlib-metadata-2.0.0-py_1
  importlib_metadata pkgs/main/noarch::importlib_metadata-2.0.0-1
  iniconfig          pkgs/main/noarch::iniconfig-1.1.1-py_0
  intel-openmp       pkgs/main/linux-64::intel-openmp-2020.2-254
  intervaltree       pkgs/main/noarch::intervaltree-3.1.0-py_0
  ipykernel          pkgs/main/linux-64::ipykernel-5.3.4-py38h5ca1d4c_0
  ipython            pkgs/main/linux-64::ipython-7.19.0-py38hb070fc8_0
  ipython_genutils   pkgs/main/linux-64::ipython_genutils-0.2.0-py38_0
  ipywidgets         pkgs/main/noarch::ipywidgets-7.5.1-py_1
  isort              pkgs/main/noarch::isort-5.6.4-py_0
  itsdangerous       pkgs/main/noarch::itsdangerous-1.1.0-py_0
  jbig               pkgs/main/linux-64::jbig-2.1-hdba287a_0
  jdcal              pkgs/main/noarch::jdcal-1.4.1-py_0
  jedi               pkgs/main/linux-64::jedi-0.17.1-py38_0
  jeepney            pkgs/main/noarch::jeepney-0.5.0-pyhd3eb1b0_0
  jinja2             pkgs/main/noarch::jinja2-2.11.2-py_0
  joblib             pkgs/main/noarch::joblib-0.17.0-py_0
  jpeg               pkgs/main/linux-64::jpeg-9b-h024ee3a_2
  json5              pkgs/main/noarch::json5-0.9.5-py_0
  jsonschema         pkgs/main/noarch::jsonschema-3.2.0-py_2
  jupyter            pkgs/main/linux-64::jupyter-1.0.0-py38_7
  jupyter_client     pkgs/main/noarch::jupyter_client-6.1.7-py_0
  jupyter_console    pkgs/main/noarch::jupyter_console-6.2.0-py_0
  jupyter_core       pkgs/main/linux-64::jupyter_core-4.6.3-py38_0
  jupyterlab         pkgs/main/noarch::jupyterlab-2.2.6-py_0
  jupyterlab_pygmen~ pkgs/main/noarch::jupyterlab_pygments-0.1.2-py_0
  jupyterlab_server  pkgs/main/noarch::jupyterlab_server-1.2.0-py_0
  keyring            pkgs/main/linux-64::keyring-21.4.0-py38_1
  kiwisolver         pkgs/main/linux-64::kiwisolver-1.3.0-py38h2531618_0
  krb5               pkgs/main/linux-64::krb5-1.18.2-h173b8e3_0
  lazy-object-proxy  pkgs/main/linux-64::lazy-object-proxy-1.4.3-py38h7b6447c_0
  lcms2              pkgs/main/linux-64::lcms2-2.11-h396b838_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.33.1-h53a641e_7
  libarchive         pkgs/main/linux-64::libarchive-3.4.2-h62408e4_0
  libcurl            pkgs/main/linux-64::libcurl-7.71.1-h20c2e04_1
  libedit            pkgs/main/linux-64::libedit-3.1.20191231-h14c3975_1
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  libgfortran-ng     pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
  liblief            pkgs/main/linux-64::liblief-0.10.1-he6710b0_0
  libllvm10          pkgs/main/linux-64::libllvm10-10.0.1-hbcb73fb_5
  libpng             pkgs/main/linux-64::libpng-1.6.37-hbc83047_0
  libsodium          pkgs/main/linux-64::libsodium-1.0.18-h7b6447c_0
  libspatialindex    pkgs/main/linux-64::libspatialindex-1.9.3-he6710b0_0
  libssh2            pkgs/main/linux-64::libssh2-1.9.0-h1ba5d50_1
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
  libtiff            pkgs/main/linux-64::libtiff-4.1.0-h2733197_1
  libtool            pkgs/main/linux-64::libtool-2.4.6-h7b6447c_1005
  libuuid            pkgs/main/linux-64::libuuid-1.0.3-h1bed415_2
  libxcb             pkgs/main/linux-64::libxcb-1.14-h7b6447c_0
  libxml2            pkgs/main/linux-64::libxml2-2.9.10-hb55368b_3
  libxslt            pkgs/main/linux-64::libxslt-1.1.34-hc22bd24_0
  llvmlite           pkgs/main/linux-64::llvmlite-0.34.0-py38h269e1b5_4
  locket             pkgs/main/linux-64::locket-0.2.0-py38_1
  lxml               pkgs/main/linux-64::lxml-4.6.1-py38hefd8a0e_0
  lz4-c              pkgs/main/linux-64::lz4-c-1.9.2-heb0550a_3
  lzo                pkgs/main/linux-64::lzo-2.10-h7b6447c_2
  markupsafe         pkgs/main/linux-64::markupsafe-1.1.1-py38h7b6447c_0
  matplotlib         pkgs/main/linux-64::matplotlib-3.3.2-0
  matplotlib-base    pkgs/main/linux-64::matplotlib-base-3.3.2-py38h817c723_0
  mccabe             pkgs/main/linux-64::mccabe-0.6.1-py38_1
  mistune            pkgs/main/linux-64::mistune-0.8.4-py38h7b6447c_1000
  mkl                pkgs/main/linux-64::mkl-2020.2-256
  mkl-service        pkgs/main/linux-64::mkl-service-2.3.0-py38he904b0f_0
  mkl_fft            pkgs/main/linux-64::mkl_fft-1.2.0-py38h23d657b_0
  mkl_random         pkgs/main/linux-64::mkl_random-1.1.1-py38h0573a6f_0
  mock               pkgs/main/noarch::mock-4.0.2-py_0
  more-itertools     pkgs/main/noarch::more-itertools-8.6.0-pyhd3eb1b0_0
  mpc                pkgs/main/linux-64::mpc-1.1.0-h10f8cd9_1
  mpfr               pkgs/main/linux-64::mpfr-4.0.2-hb69a4c5_1
  mpmath             pkgs/main/linux-64::mpmath-1.1.0-py38_0
  msgpack-python     pkgs/main/linux-64::msgpack-python-1.0.0-py38hfd86e86_1
  multipledispatch   pkgs/main/linux-64::multipledispatch-0.6.0-py38_0
  navigator-updater  pkgs/main/linux-64::navigator-updater-0.2.1-py38_0
  nbclient           pkgs/main/noarch::nbclient-0.5.1-py_0
  nbconvert          pkgs/main/linux-64::nbconvert-6.0.7-py38_0
  nbformat           pkgs/main/noarch::nbformat-5.0.8-py_0
  ncurses            pkgs/main/linux-64::ncurses-6.2-he6710b0_1
  nest-asyncio       pkgs/main/noarch::nest-asyncio-1.4.2-pyhd3eb1b0_0
  networkx           pkgs/main/noarch::networkx-2.5-py_0
  nltk               pkgs/main/noarch::nltk-3.5-py_0
  nose               pkgs/main/linux-64::nose-1.3.7-py38_2
  notebook           pkgs/main/linux-64::notebook-6.1.4-py38_0
  numba              pkgs/main/linux-64::numba-0.51.2-py38h0573a6f_1
  numexpr            pkgs/main/linux-64::numexpr-2.7.1-py38h423224d_0
  numpy              pkgs/main/linux-64::numpy-1.19.2-py38h54aff64_0
  numpy-base         pkgs/main/linux-64::numpy-base-1.19.2-py38hfa32c7d_0
  numpydoc           pkgs/main/noarch::numpydoc-1.1.0-pyhd3eb1b0_1
  olefile            pkgs/main/noarch::olefile-0.46-py_0
  openpyxl           pkgs/main/noarch::openpyxl-3.0.5-py_0
  openssl            pkgs/main/linux-64::openssl-1.1.1h-h7b6447c_0
  packaging          pkgs/main/noarch::packaging-20.4-py_0
  pandas             pkgs/main/linux-64::pandas-1.1.3-py38he6710b0_0
  pandoc             pkgs/main/linux-64::pandoc-2.11-hb0f4dca_0
  pandocfilters      pkgs/main/linux-64::pandocfilters-1.4.3-py38h06a4308_1
  pango              pkgs/main/linux-64::pango-1.45.3-hd140c19_0
  parso              pkgs/main/noarch::parso-0.7.0-py_0
  partd              pkgs/main/noarch::partd-1.1.0-py_0
  patchelf           pkgs/main/linux-64::patchelf-0.12-he6710b0_0
  path               pkgs/main/linux-64::path-15.0.0-py38_0
  path.py            pkgs/main/noarch::path.py-12.5.0-0
  pathlib2           pkgs/main/linux-64::pathlib2-2.3.5-py38_0
  pathtools          pkgs/main/noarch::pathtools-0.1.2-py_1
  patsy              pkgs/main/linux-64::patsy-0.5.1-py38_0
  pcre               pkgs/main/linux-64::pcre-8.44-he6710b0_0
  pep8               pkgs/main/linux-64::pep8-1.7.1-py38_0
  pexpect            pkgs/main/linux-64::pexpect-4.8.0-py38_0
  pickleshare        pkgs/main/linux-64::pickleshare-0.7.5-py38_1000
  pillow             pkgs/main/linux-64::pillow-8.0.1-py38he98fc37_0
  pip                pkgs/main/linux-64::pip-20.2.4-py38h06a4308_0
  pixman             pkgs/main/linux-64::pixman-0.40.0-h7b6447c_0
  pkginfo            pkgs/main/linux-64::pkginfo-1.6.1-py38h06a4308_0
  pluggy             pkgs/main/linux-64::pluggy-0.13.1-py38_0
  ply                pkgs/main/linux-64::ply-3.11-py38_0
  prometheus_client  pkgs/main/noarch::prometheus_client-0.8.0-py_0
  prompt-toolkit     pkgs/main/noarch::prompt-toolkit-3.0.8-py_0
  prompt_toolkit     pkgs/main/noarch::prompt_toolkit-3.0.8-0
  psutil             pkgs/main/linux-64::psutil-5.7.2-py38h7b6447c_0
  ptyprocess         pkgs/main/linux-64::ptyprocess-0.6.0-py38_0
  py                 pkgs/main/noarch::py-1.9.0-py_0
  py-lief            pkgs/main/linux-64::py-lief-0.10.1-py38h403a769_0
  pycodestyle        pkgs/main/noarch::pycodestyle-2.6.0-py_0
  pycosat            pkgs/main/linux-64::pycosat-0.6.3-py38h7b6447c_1
  pycparser          pkgs/main/noarch::pycparser-2.20-py_2
  pycurl             pkgs/main/linux-64::pycurl-7.43.0.6-py38h1ba5d50_0
  pydocstyle         pkgs/main/noarch::pydocstyle-5.1.1-py_0
  pyflakes           pkgs/main/noarch::pyflakes-2.2.0-py_0
  pygments           pkgs/main/noarch::pygments-2.7.2-pyhd3eb1b0_0
  pylint             pkgs/main/linux-64::pylint-2.6.0-py38_0
  pyodbc             pkgs/main/linux-64::pyodbc-4.0.30-py38he6710b0_0
  pyopenssl          pkgs/main/noarch::pyopenssl-19.1.0-py_1
  pyparsing          pkgs/main/noarch::pyparsing-2.4.7-py_0
  pyqt               pkgs/main/linux-64::pyqt-5.9.2-py38h05f1152_4
  pyrsistent         pkgs/main/linux-64::pyrsistent-0.17.3-py38h7b6447c_0
  pysocks            pkgs/main/linux-64::pysocks-1.7.1-py38_0
  pytables           pkgs/main/linux-64::pytables-3.6.1-py38h9fd0a39_0
  pytest             pkgs/main/linux-64::pytest-6.1.1-py38_0
  python             pkgs/main/linux-64::python-3.8.5-h7579374_1
  python-dateutil    pkgs/main/noarch::python-dateutil-2.8.1-py_0
  python-jsonrpc-se~ pkgs/main/noarch::python-jsonrpc-server-0.4.0-py_0
  python-language-s~ pkgs/main/noarch::python-language-server-0.35.1-py_0
  python-libarchive~ pkgs/main/noarch::python-libarchive-c-2.9-py_0
  pytz               pkgs/main/noarch::pytz-2020.1-py_0
  pywavelets         pkgs/main/linux-64::pywavelets-1.1.1-py38h7b6447c_2
  pyxdg              pkgs/main/noarch::pyxdg-0.27-pyhd3eb1b0_0
  pyyaml             pkgs/main/linux-64::pyyaml-5.3.1-py38h7b6447c_1
  pyzmq              pkgs/main/linux-64::pyzmq-19.0.2-py38he6710b0_1
  qdarkstyle         pkgs/main/noarch::qdarkstyle-2.8.1-py_0
  qt                 pkgs/main/linux-64::qt-5.9.7-h5867ecd_1
  qtawesome          pkgs/main/noarch::qtawesome-1.0.1-py_0
  qtconsole          pkgs/main/noarch::qtconsole-4.7.7-py_0
  qtpy               pkgs/main/noarch::qtpy-1.9.0-py_0
  readline           pkgs/main/linux-64::readline-8.0-h7b6447c_0
  regex              pkgs/main/linux-64::regex-2020.10.15-py38h7b6447c_0
  requests           pkgs/main/noarch::requests-2.24.0-py_0
  ripgrep            pkgs/main/linux-64::ripgrep-12.1.1-0
  rope               pkgs/main/noarch::rope-0.18.0-py_0
  rtree              pkgs/main/linux-64::rtree-0.9.4-py38_1
  ruamel_yaml        pkgs/main/linux-64::ruamel_yaml-0.15.87-py38h7b6447c_1
  scikit-image       pkgs/main/linux-64::scikit-image-0.17.2-py38hdf5156a_0
  scikit-learn       pkgs/main/linux-64::scikit-learn-0.23.2-py38h0573a6f_0
  scipy              pkgs/main/linux-64::scipy-1.5.2-py38h0b6359f_0
  seaborn            pkgs/main/noarch::seaborn-0.11.0-py_0
  secretstorage      pkgs/main/linux-64::secretstorage-3.1.2-py38_0
  send2trash         pkgs/main/linux-64::send2trash-1.5.0-py38_0
  setuptools         pkgs/main/linux-64::setuptools-50.3.1-py38h06a4308_1
  simplegeneric      pkgs/main/linux-64::simplegeneric-0.8.1-py38_2
  singledispatch     pkgs/main/noarch::singledispatch-3.4.0.3-py_1001
  sip                pkgs/main/linux-64::sip-4.19.13-py38he6710b0_0
  six                pkgs/main/linux-64::six-1.15.0-py38h06a4308_0
  snowballstemmer    pkgs/main/noarch::snowballstemmer-2.0.0-py_0
  sortedcollections  pkgs/main/noarch::sortedcollections-1.2.1-py_0
  sortedcontainers   pkgs/main/noarch::sortedcontainers-2.2.2-py_0
  soupsieve          pkgs/main/noarch::soupsieve-2.0.1-py_0
  sphinx             pkgs/main/noarch::sphinx-3.2.1-py_0
  sphinxcontrib      pkgs/main/linux-64::sphinxcontrib-1.0-py38_1
  sphinxcontrib-app~ pkgs/main/noarch::sphinxcontrib-applehelp-1.0.2-py_0
  sphinxcontrib-dev~ pkgs/main/noarch::sphinxcontrib-devhelp-1.0.2-py_0
  sphinxcontrib-htm~ pkgs/main/noarch::sphinxcontrib-htmlhelp-1.0.3-py_0
  sphinxcontrib-jsm~ pkgs/main/noarch::sphinxcontrib-jsmath-1.0.1-py_0
  sphinxcontrib-qth~ pkgs/main/noarch::sphinxcontrib-qthelp-1.0.3-py_0
  sphinxcontrib-ser~ pkgs/main/noarch::sphinxcontrib-serializinghtml-1.1.4-py_0
  sphinxcontrib-web~ pkgs/main/noarch::sphinxcontrib-websupport-1.2.4-py_0
  spyder             pkgs/main/linux-64::spyder-4.1.5-py38_0
  spyder-kernels     pkgs/main/linux-64::spyder-kernels-1.9.4-py38_0
  sqlalchemy         pkgs/main/linux-64::sqlalchemy-1.3.20-py38h7b6447c_0
  sqlite             pkgs/main/linux-64::sqlite-3.33.0-h62c20be_0
  statsmodels        pkgs/main/linux-64::statsmodels-0.12.0-py38h7b6447c_0
  sympy              pkgs/main/linux-64::sympy-1.6.2-py38h06a4308_1
  tbb                pkgs/main/linux-64::tbb-2020.3-hfd86e86_0
  tblib              pkgs/main/noarch::tblib-1.7.0-py_0
  terminado          pkgs/main/linux-64::terminado-0.9.1-py38_0
  testpath           pkgs/main/noarch::testpath-0.4.4-py_0
  threadpoolctl      pkgs/main/noarch::threadpoolctl-2.1.0-pyh5ca1d4c_0
  tifffile           pkgs/main/linux-64::tifffile-2020.10.1-py38hdd07704_2
  tk                 pkgs/main/linux-64::tk-8.6.10-hbc83047_0
  toml               pkgs/main/noarch::toml-0.10.1-py_0
  toolz              pkgs/main/noarch::toolz-0.11.1-py_0
  tornado            pkgs/main/linux-64::tornado-6.0.4-py38h7b6447c_1
  tqdm               pkgs/main/noarch::tqdm-4.50.2-py_0
  traitlets          pkgs/main/noarch::traitlets-5.0.5-py_0
  typing_extensions  pkgs/main/noarch::typing_extensions-3.7.4.3-py_0
  ujson              pkgs/main/linux-64::ujson-4.0.1-py38he6710b0_0
  unicodecsv         pkgs/main/linux-64::unicodecsv-0.14.1-py38_0
  unixodbc           pkgs/main/linux-64::unixodbc-2.3.9-h7b6447c_0
  urllib3            pkgs/main/noarch::urllib3-1.25.11-py_0
  watchdog           pkgs/main/linux-64::watchdog-0.10.3-py38_0
  wcwidth            pkgs/main/noarch::wcwidth-0.2.5-py_0
  webencodings       pkgs/main/linux-64::webencodings-0.5.1-py38_1
  werkzeug           pkgs/main/noarch::werkzeug-1.0.1-py_0
  wheel              pkgs/main/noarch::wheel-0.35.1-py_0
  widgetsnbextension pkgs/main/linux-64::widgetsnbextension-3.5.1-py38_0
  wrapt              pkgs/main/linux-64::wrapt-1.11.2-py38h7b6447c_0
  wurlitzer          pkgs/main/linux-64::wurlitzer-2.0.1-py38_0
  xlrd               pkgs/main/noarch::xlrd-1.2.0-py_0
  xlsxwriter         pkgs/main/noarch::xlsxwriter-1.3.7-py_0
  xlwt               pkgs/main/linux-64::xlwt-1.3.0-py38_0
  xmltodict          pkgs/main/noarch::xmltodict-0.12.0-py_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
  yaml               pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
  yapf               pkgs/main/noarch::yapf-0.30.0-py_0
  zeromq             pkgs/main/linux-64::zeromq-4.3.3-he6710b0_3
  zict               pkgs/main/noarch::zict-2.0.0-py_0
  zipp               pkgs/main/noarch::zipp-3.4.0-pyhd3eb1b0_0
  zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
  zope               pkgs/main/linux-64::zope-1.0-py38_1
  zope.event         pkgs/main/linux-64::zope.event-4.5.0-py38_0
  zope.interface     pkgs/main/linux-64::zope.interface-5.1.2-py38h7b6447c_0
  zstd               pkgs/main/linux-64::zstd-1.4.5-h9ceee32_0


Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
no change     /home/soloelectronicos/anaconda3/condabin/conda
no change     /home/soloelectronicos/anaconda3/bin/conda
no change     /home/soloelectronicos/anaconda3/bin/conda-env
no change     /home/soloelectronicos/anaconda3/bin/activate
no change     /home/soloelectronicos/anaconda3/bin/deactivate
no change     /home/soloelectronicos/anaconda3/etc/profile.d/conda.sh
no change     /home/soloelectronicos/anaconda3/etc/fish/conf.d/conda.fish
no change     /home/soloelectronicos/anaconda3/shell/condabin/Conda.psm1
no change     /home/soloelectronicos/anaconda3/shell/condabin/conda-hook.ps1
no change     /home/soloelectronicos/anaconda3/lib/python3.8/site-packages/xontrib/conda.xsh
no change     /home/soloelectronicos/anaconda3/etc/profile.d/conda.csh
modified      /home/soloelectronicos/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

If you'd prefer that conda's base environment not be activated on startup, 
   set the auto_activate_base parameter to false: 

conda config --set auto_activate_base false

Thank you for installing Anaconda3!

===========================================================================

Working with Python and Jupyter notebooks is a breeze with PyCharm Pro,
designed to be used with Anaconda. Download now and have the best data
tools at your fingertips.

PyCharm Pro for Anaconda is available at: https://www.anaconda.com/pycharm

[email protected]:~/Descargas$ source ~/.bashrc
(base) [email protected]:~/Descargas$ conda info

     active environment : base
    active env location : /home/soloelectronicos/anaconda3
            shell level : 1
       user config file : /home/soloelectronicos/.condarc
 populated config files : 
          conda version : 4.9.2
    conda-build version : 3.20.5
         python version : 3.8.5.final.0
       virtual packages : __glibc=2.31=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/soloelectronicos/anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/soloelectronicos/anaconda3/pkgs
                          /home/soloelectronicos/.conda/pkgs
       envs directories : /home/soloelectronicos/anaconda3/envs
                          /home/soloelectronicos/.conda/envs
               platform : linux-64
             user-agent : conda/4.9.2 requests/2.24.0 CPython/3.8.5 Linux/5.11.0-27-generic ubuntu/20.04.3 glibc/2.31
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False

(base) [email protected]:~/Descargas$ conda update conda
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - conda


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    backports.functools_lru_cache-1.6.4|     pyhd3eb1b0_0           9 KB
    backports.tempfile-1.0     |     pyhd3eb1b0_1          11 KB
    conda-4.10.3               |   py38h06a4308_0         2.9 MB
    conda-package-handling-1.7.3|   py38h27cfd23_1         884 KB
    ------------------------------------------------------------
                                           Total:         3.8 MB

The following packages will be UPDATED:

  backports.functoo~                             1.6.1-py_0 --> 1.6.4-pyhd3eb1b0_0
  conda                                4.9.2-py38h06a4308_0 --> 4.10.3-py38h06a4308_0
  conda-package-han~                   1.7.2-py38h03888b9_0 --> 1.7.3-py38h27cfd23_1

The following packages will be DOWNGRADED:

  backports.tempfile                               1.0-py_1 --> 1.0-pyhd3eb1b0_1


Proceed ([y]/n)? y


Downloading and Extracting Packages
backports.tempfile-1 | 11 KB     | ##################################### | 100% 
backports.functools_ | 9 KB      | ##################################### | 100% 
conda-4.10.3         | 2.9 MB    | ##################################### | 100% 
conda-package-handli | 884 KB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) [email protected]:~/Descargas$ conda update anaconda
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - anaconda


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _anaconda_depends-2020.07  |           py38_0           6 KB
    _openmp_mutex-4.5          |            1_gnu          22 KB
    alabaster-0.7.12           |     pyhd3eb1b0_0          16 KB
    anaconda-custom            |           py38_1          35 KB
    anaconda-client-1.8.0      |   py38h06a4308_0         152 KB
    anaconda-project-0.10.1    |     pyhd3eb1b0_0         218 KB
    anyio-2.2.0                |   py38h06a4308_1         125 KB
    appdirs-1.4.4              |             py_0          13 KB
    argon2-cffi-20.1.0         |   py38h27cfd23_1          46 KB
    astroid-2.6.6              |   py38h06a4308_0         309 KB
    astropy-4.3.1              |   py38h09021b7_0         6.4 MB
    async_generator-1.10       |     pyhd3eb1b0_0          23 KB
    attrs-21.2.0               |     pyhd3eb1b0_0          46 KB
    babel-2.9.1                |     pyhd3eb1b0_0         5.5 MB
    backcall-0.2.0             |     pyhd3eb1b0_0          13 KB
    backports-1.0              |     pyhd3eb1b0_2         210 KB
    backports.shutil_get_terminal_size-1.0.0|     pyhd3eb1b0_3          10 KB
    beautifulsoup4-4.9.3       |     pyha847dfd_0          86 KB
    bitarray-2.3.0             |   py38h7f8727e_1         139 KB
    black-19.10b0              |             py_0          86 KB
    bleach-4.0.0               |     pyhd3eb1b0_0         113 KB
    blosc-1.21.0               |       h8c45485_0          64 KB
    bokeh-2.3.3                |   py38h06a4308_0         5.9 MB
    brotli-1.0.9               |       he6710b0_2         375 KB
    brotlipy-0.7.0             |py38h27cfd23_1003         323 KB
    c-ares-1.17.1              |       h27cfd23_0         108 KB
    ca-certificates-2021.7.5   |       h06a4308_1         113 KB
    cairo-1.16.0               |       hf32fb01_1         1.0 MB
    certifi-2021.5.30          |   py38h06a4308_0         138 KB
    cffi-1.14.6                |   py38h400218f_0         224 KB
    chardet-4.0.0              |py38h06a4308_1003         194 KB
    charset-normalizer-2.0.4   |     pyhd3eb1b0_0          35 KB
    click-8.0.1                |     pyhd3eb1b0_0          79 KB
    colorama-0.4.4             |     pyhd3eb1b0_0          21 KB
    conda-pack-0.6.0           |     pyhd3eb1b0_0          29 KB
    cryptography-3.4.7         |   py38hd23ed53_0         913 KB
    curl-7.78.0                |       h1ccaba5_0          94 KB
    cython-0.29.24             |   py38h295c915_0         2.0 MB
    dask-2021.8.1              |     pyhd3eb1b0_0          18 KB
    dask-core-2021.8.1         |     pyhd3eb1b0_0         715 KB
    debugpy-1.4.1              |   py38h295c915_0         1.7 MB
    decorator-5.0.9            |     pyhd3eb1b0_0          12 KB
    defusedxml-0.7.1           |     pyhd3eb1b0_0          23 KB
    distributed-2021.8.1       |   py38h06a4308_0         970 KB
    docutils-0.17.1            |   py38h06a4308_1         686 KB
    et_xmlfile-1.1.0           |   py38h06a4308_0          10 KB
    expat-2.4.1                |       h2531618_2         168 KB
    filelock-3.0.12            |     pyhd3eb1b0_1          10 KB
    flask-1.1.2                |     pyhd3eb1b0_0          70 KB
    fontconfig-2.13.1          |       h6c09931_0         250 KB
    fonttools-4.25.0           |     pyhd3eb1b0_0         632 KB
    fsspec-2021.7.0            |     pyhd3eb1b0_0          91 KB
    gevent-21.8.0              |   py38h7f8727e_1         1.5 MB
    glib-2.69.1                |       h5202010_0         1.7 MB
    glob2-0.7                  |     pyhd3eb1b0_0          12 KB
    gmp-6.2.1                  |       h2531618_2         539 KB
    greenlet-1.1.1             |   py38h295c915_0          82 KB
    gst-plugins-base-1.14.0    |       h8213a91_2         4.9 MB
    gstreamer-1.14.0           |       h28cd5cc_2         3.2 MB
    harfbuzz-2.8.1             |       h6f93f22_0         1.1 MB
    idna-3.2                   |     pyhd3eb1b0_0          48 KB
    imageio-2.9.0              |     pyhd3eb1b0_0         3.0 MB
    imagesize-1.2.0            |     pyhd3eb1b0_0           9 KB
    importlib-metadata-3.10.0  |   py38h06a4308_0          33 KB
    importlib_metadata-3.10.0  |       hd3eb1b0_0          11 KB
    iniconfig-1.1.1            |     pyhd3eb1b0_0           8 KB
    intel-openmp-2021.3.0      |    h06a4308_3350         1.4 MB
    ipykernel-6.2.0            |   py38h06a4308_1         192 KB
    ipython-7.26.0             |   py38hb070fc8_0         994 KB
    ipython_genutils-0.2.0     |     pyhd3eb1b0_1          27 KB
    ipywidgets-7.6.3           |     pyhd3eb1b0_1         105 KB
    isort-5.9.3                |     pyhd3eb1b0_0          83 KB
    itsdangerous-2.0.1         |     pyhd3eb1b0_0          18 KB
    jedi-0.17.2                |   py38h06a4308_1         924 KB
    jeepney-0.7.1              |     pyhd3eb1b0_0          38 KB
    jinja2-3.0.1               |     pyhd3eb1b0_0         110 KB
    joblib-1.0.1               |     pyhd3eb1b0_0         208 KB
    json5-0.9.6                |     pyhd3eb1b0_0          21 KB
    jupyter_client-6.1.12      |     pyhd3eb1b0_0          88 KB
    jupyter_console-6.4.0      |     pyhd3eb1b0_0          23 KB
    jupyter_core-4.7.1         |   py38h06a4308_0          68 KB
    jupyter_server-1.4.1       |   py38h06a4308_0         317 KB
    jupyterlab-3.1.7           |     pyhd3eb1b0_0         3.6 MB
    jupyterlab_server-2.7.1    |     pyhd3eb1b0_0          44 KB
    jupyterlab_widgets-1.0.0   |     pyhd3eb1b0_1         109 KB
    keyring-23.0.1             |   py38h06a4308_0          54 KB
    kiwisolver-1.3.1           |   py38h2531618_0          80 KB
    krb5-1.19.2                |       hac12032_0         1.2 MB
    lazy-object-proxy-1.6.0    |   py38h27cfd23_0          30 KB
    lcms2-2.12                 |       h3be6417_0         312 KB
    ld_impl_linux-64-2.35.1    |       h7274673_9         586 KB
    libcurl-7.78.0             |       h0b77cf5_0         338 KB
    libedit-3.1.20210714       |       h7f8727e_0         165 KB
    libev-4.33                 |       h7b6447c_0         112 KB
    libgcc-ng-9.3.0            |      h5101ec6_17         4.8 MB
    libgfortran-ng-7.5.0       |      ha8ba4b0_17          22 KB
    libgfortran4-7.5.0         |      ha8ba4b0_17         995 KB
    libgomp-9.3.0              |      h5101ec6_17         311 KB
    libllvm9-9.0.1             |       h4a3c616_1        21.0 MB
    libnghttp2-1.41.0          |       hf8bcb03_2         667 KB
    libspatialindex-1.9.3      |       h2531618_0         2.1 MB
    libstdcxx-ng-9.3.0         |      hd4cf53a_17         3.1 MB
    libtiff-4.2.0              |       h85742a9_0         502 KB
    libuv-1.40.0               |       h7b6447c_0         736 KB
    libwebp-base-1.2.0         |       h27cfd23_0         437 KB
    libxml2-2.9.12             |       h03d6c58_0         1.2 MB
    llvmlite-0.36.0            |   py38h612dafd_4         396 KB
    locket-0.2.1               |   py38h06a4308_1          10 KB
    lxml-4.6.3                 |   py38h9120a33_0         1.3 MB
    lz4-c-1.9.3                |       h295c915_1         185 KB
    markupsafe-2.0.1           |   py38h27cfd23_0          22 KB
    matplotlib-3.4.2           |   py38h06a4308_0          26 KB
    matplotlib-base-3.4.2      |   py38hab158f2_0         5.6 MB
    matplotlib-inline-0.1.2    |     pyhd3eb1b0_2          12 KB
    mkl-2021.3.0               |     h06a4308_520       141.2 MB
    mkl-service-2.4.0          |   py38h7f8727e_0          59 KB
    mkl_fft-1.3.0              |   py38h42c9631_2         180 KB
    mkl_random-1.2.2           |   py38h51133e4_0         308 KB
    mock-4.0.3                 |     pyhd3eb1b0_0          29 KB
    more-itertools-8.8.0       |     pyhd3eb1b0_0          42 KB
    mpmath-1.2.1               |   py38h06a4308_0         766 KB
    msgpack-python-1.0.2       |   py38hff7bd54_1          83 KB
    munkres-1.1.4              |             py_0          13 KB
    mypy_extensions-0.4.3      |           py38_0           9 KB
    nbclassic-0.2.6            |     pyhd3eb1b0_0          19 KB
    nbclient-0.5.3             |     pyhd3eb1b0_0          62 KB
    nbconvert-6.1.0            |   py38h06a4308_0         481 KB
    nbformat-5.1.3             |     pyhd3eb1b0_0          44 KB
    nest-asyncio-1.5.1         |     pyhd3eb1b0_0          10 KB
    networkx-2.6.2             |     pyhd3eb1b0_0         1.3 MB
    nltk-3.6.2                 |     pyhd3eb1b0_0         988 KB
    nose-1.3.7                 |  pyhd3eb1b0_1006         128 KB
    notebook-6.4.3             |   py38h06a4308_0         4.2 MB
    numba-0.53.1               |   py38ha9443f7_0         3.3 MB
    numexpr-2.7.3              |   py38h22e1b3c_1         188 KB
    numpy-1.20.3               |   py38hf144106_0          23 KB
    numpy-base-1.20.3          |   py38h74d4b33_0         4.5 MB
    openjpeg-2.4.0             |       h3ad879b_0         331 KB
    openpyxl-3.0.7             |     pyhd3eb1b0_0         159 KB
    openssl-1.1.1l             |       h7f8727e_0         2.5 MB
    packaging-21.0             |     pyhd3eb1b0_0          36 KB
    pandas-1.3.2               |   py38h8c16a72_0         9.6 MB
    pandoc-2.12                |       h06a4308_0         9.5 MB
    partd-1.2.0                |     pyhd3eb1b0_0          19 KB
    patchelf-0.12              |       h2531618_1          88 KB
    path-16.0.0                |   py38h06a4308_0          37 KB
    pathlib2-2.3.6             |   py38h06a4308_2          36 KB
    pathspec-0.7.0             |             py_0          26 KB
    pcre-8.45                  |       h295c915_0         207 KB
    pexpect-4.8.0              |     pyhd3eb1b0_3          53 KB
    pickleshare-0.7.5          |  pyhd3eb1b0_1003          13 KB
    pillow-8.3.1               |   py38h2c7a002_0         638 KB
    pip-21.0.1                 |   py38h06a4308_0         1.8 MB
    pkginfo-1.7.1              |   py38h06a4308_0          43 KB
    pluggy-0.13.1              |   py38h06a4308_0          33 KB
    prometheus_client-0.11.0   |     pyhd3eb1b0_0          47 KB
    prompt-toolkit-3.0.17      |     pyh06a4308_0         256 KB
    prompt_toolkit-3.0.17      |       hd3eb1b0_0          12 KB
    psutil-5.8.0               |   py38h27cfd23_1         327 KB
    ptyprocess-0.7.0           |     pyhd3eb1b0_2          17 KB
    py-1.10.0                  |     pyhd3eb1b0_0          76 KB
    pycodestyle-2.6.0          |     pyhd3eb1b0_0          38 KB
    pydocstyle-6.1.1           |     pyhd3eb1b0_0          36 KB
    pyerfa-2.0.0               |   py38h27cfd23_0         345 KB
    pyflakes-2.2.0             |     pyhd3eb1b0_0          56 KB
    pygments-2.10.0            |     pyhd3eb1b0_0         725 KB
    pylint-2.9.6               |   py38h06a4308_1         488 KB
    pyls-black-0.4.6           |       hd3eb1b0_0           9 KB
    pyls-spyder-0.3.2          |     pyhd3eb1b0_0          10 KB
    pyodbc-4.0.31              |   py38h295c915_0          71 KB
    pyopenssl-20.0.1           |     pyhd3eb1b0_1          49 KB
    pyparsing-2.4.7            |     pyhd3eb1b0_0          59 KB
    pysocks-1.7.1              |   py38h06a4308_0          31 KB
    pytest-6.2.4               |   py38h06a4308_2         423 KB
    python-dateutil-2.8.2      |     pyhd3eb1b0_0         233 KB
    python-language-server-0.36.2|     pyhd3eb1b0_0          41 KB
    python-libarchive-c-2.9    |     pyhd3eb1b0_1          47 KB
    pytz-2021.1                |     pyhd3eb1b0_0         181 KB
    pyyaml-5.4.1               |   py38h27cfd23_1         174 KB
    pyzmq-22.2.1               |   py38h295c915_1         465 KB
    qtawesome-1.0.2            |     pyhd3eb1b0_0         760 KB
    qtconsole-5.1.0            |     pyhd3eb1b0_0          98 KB
    qtpy-1.10.0                |     pyhd3eb1b0_0          35 KB
    readline-8.1               |       h27cfd23_0         362 KB
    regex-2021.8.3             |   py38h7f8727e_0         319 KB
    requests-2.26.0            |     pyhd3eb1b0_0          59 KB
    rope-0.19.0                |     pyhd3eb1b0_0         126 KB
    rtree-0.9.7                |   py38h06a4308_1          48 KB
    ruamel_yaml-0.15.100       |   py38h27cfd23_0         258 KB
    scikit-image-0.18.1        |   py38ha9443f7_0         9.5 MB
    scikit-learn-0.24.2        |   py38ha9443f7_0         5.4 MB
    scipy-1.6.2                |   py38had2a1c9_1        15.6 MB
    seaborn-0.11.2             |     pyhd3eb1b0_0         218 KB
    secretstorage-3.3.1        |   py38h06a4308_0          24 KB
    send2trash-1.5.0           |     pyhd3eb1b0_1          14 KB
    setuptools-52.0.0          |   py38h06a4308_0         714 KB
    singledispatch-3.7.0       |  pyhd3eb1b0_1001          12 KB
    six-1.16.0                 |     pyhd3eb1b0_0          18 KB
    snappy-1.1.8               |       he6710b0_0          40 KB
    sniffio-1.2.0              |   py38h06a4308_1          15 KB
    snowballstemmer-2.1.0      |     pyhd3eb1b0_0          62 KB
    sortedcollections-2.1.0    |     pyhd3eb1b0_0          12 KB
    sortedcontainers-2.4.0     |     pyhd3eb1b0_0          26 KB
    soupsieve-2.2.1            |     pyhd3eb1b0_0          32 KB
    sphinx-4.0.2               |     pyhd3eb1b0_0         1.2 MB
    sphinxcontrib-applehelp-1.0.2|     pyhd3eb1b0_0          29 KB
    sphinxcontrib-devhelp-1.0.2|     pyhd3eb1b0_0          23 KB
    sphinxcontrib-htmlhelp-2.0.0|     pyhd3eb1b0_0          32 KB
    sphinxcontrib-jsmath-1.0.1 |     pyhd3eb1b0_0           8 KB
    sphinxcontrib-qthelp-1.0.3 |     pyhd3eb1b0_0          26 KB
    sphinxcontrib-serializinghtml-1.1.5|     pyhd3eb1b0_0          25 KB
    spyder-4.2.5               |   py38h06a4308_0         5.4 MB
    spyder-kernels-1.10.2      |   py38h06a4308_0         102 KB
    sqlalchemy-1.4.22          |   py38h7f8727e_0         1.8 MB
    sqlite-3.36.0              |       hc218d9a_0         990 KB
    statsmodels-0.12.2         |   py38h27cfd23_0         8.5 MB
    sympy-1.8                  |   py38h06a4308_0         9.1 MB
    terminado-0.9.4            |   py38h06a4308_0          25 KB
    testpath-0.5.0             |     pyhd3eb1b0_0          81 KB
    textdistance-4.2.1         |     pyhd3eb1b0_0          29 KB
    threadpoolctl-2.2.0        |     pyhbf3da8f_0          16 KB
    three-merge-0.1.1          |     pyhd3eb1b0_0          10 KB
    toml-0.10.2                |     pyhd3eb1b0_0          20 KB
    toolz-0.11.1               |     pyhd3eb1b0_0          46 KB
    tornado-6.1                |   py38h27cfd23_0         588 KB
    tqdm-4.62.1                |     pyhd3eb1b0_1          84 KB
    traitlets-5.0.5            |     pyhd3eb1b0_0          81 KB
    typed-ast-1.4.3            |   py38h7f8727e_1         185 KB
    typing_extensions-3.10.0.0 |     pyh06a4308_0          27 KB
    ujson-4.0.2                |   py38h2531618_0          45 KB
    urllib3-1.26.6             |     pyhd3eb1b0_1         112 KB
    watchdog-1.0.2             |   py38h06a4308_1          89 KB
    werkzeug-1.0.1             |     pyhd3eb1b0_0         239 KB
    wheel-0.37.0               |     pyhd3eb1b0_0          32 KB
    wrapt-1.12.1               |   py38h7b6447c_1          50 KB
    wurlitzer-2.1.1            |   py38h06a4308_0          13 KB
    xlrd-2.0.1                 |     pyhd3eb1b0_0          90 KB
    xlsxwriter-3.0.1           |     pyhd3eb1b0_0         111 KB
    yapf-0.31.0                |     pyhd3eb1b0_0         126 KB
    zeromq-4.3.4               |       h2531618_0         331 KB
    zict-2.0.0                 |     pyhd3eb1b0_0          10 KB
    zipp-3.5.0                 |     pyhd3eb1b0_0          13 KB
    zope.interface-5.4.0       |   py38h7f8727e_0         301 KB
    zstd-1.4.9                 |       haebb681_0         480 KB
    ------------------------------------------------------------
                                           Total:       352.0 MB

The following NEW packages will be INSTALLED:

  _anaconda_depends  pkgs/main/linux-64::_anaconda_depends-2020.07-py38_0
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
  anyio              pkgs/main/linux-64::anyio-2.2.0-py38h06a4308_1
  appdirs            pkgs/main/noarch::appdirs-1.4.4-py_0
  black              pkgs/main/noarch::black-19.10b0-py_0
  brotli             pkgs/main/linux-64::brotli-1.0.9-he6710b0_2
  c-ares             pkgs/main/linux-64::c-ares-1.17.1-h27cfd23_0
  charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0
  conda-pack         pkgs/main/noarch::conda-pack-0.6.0-pyhd3eb1b0_0
  debugpy            pkgs/main/linux-64::debugpy-1.4.1-py38h295c915_0
  fonttools          pkgs/main/noarch::fonttools-4.25.0-pyhd3eb1b0_0
  jupyter_server     pkgs/main/linux-64::jupyter_server-1.4.1-py38h06a4308_0
  jupyterlab_widgets pkgs/main/noarch::jupyterlab_widgets-1.0.0-pyhd3eb1b0_1
  libev              pkgs/main/linux-64::libev-4.33-h7b6447c_0
  libgfortran4       pkgs/main/linux-64::libgfortran4-7.5.0-ha8ba4b0_17
  libgomp            pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
  libllvm9           pkgs/main/linux-64::libllvm9-9.0.1-h4a3c616_1
  libnghttp2         pkgs/main/linux-64::libnghttp2-1.41.0-hf8bcb03_2
  libuv              pkgs/main/linux-64::libuv-1.40.0-h7b6447c_0
  libwebp-base       pkgs/main/linux-64::libwebp-base-1.2.0-h27cfd23_0
  matplotlib-inline  pkgs/main/noarch::matplotlib-inline-0.1.2-pyhd3eb1b0_2
  munkres            pkgs/main/noarch::munkres-1.1.4-py_0
  mypy_extensions    pkgs/main/linux-64::mypy_extensions-0.4.3-py38_0
  nbclassic          pkgs/main/noarch::nbclassic-0.2.6-pyhd3eb1b0_0
  openjpeg           pkgs/main/linux-64::openjpeg-2.4.0-h3ad879b_0
  pathspec           pkgs/main/noarch::pathspec-0.7.0-py_0
  pyerfa             pkgs/main/linux-64::pyerfa-2.0.0-py38h27cfd23_0
  pyls-black         pkgs/main/noarch::pyls-black-0.4.6-hd3eb1b0_0
  pyls-spyder        pkgs/main/noarch::pyls-spyder-0.3.2-pyhd3eb1b0_0
  snappy             pkgs/main/linux-64::snappy-1.1.8-he6710b0_0
  sniffio            pkgs/main/linux-64::sniffio-1.2.0-py38h06a4308_1
  textdistance       pkgs/main/noarch::textdistance-4.2.1-pyhd3eb1b0_0
  three-merge        pkgs/main/noarch::three-merge-0.1.1-pyhd3eb1b0_0
  typed-ast          pkgs/main/linux-64::typed-ast-1.4.3-py38h7f8727e_1

The following packages will be UPDATED:

  anaconda-client                              1.7.2-py38_0 --> 1.8.0-py38h06a4308_0
  anaconda-project                               0.8.4-py_0 --> 0.10.1-pyhd3eb1b0_0
  astroid                                      2.4.2-py38_0 --> 2.6.6-py38h06a4308_0
  astropy                              4.0.2-py38h7b6447c_0 --> 4.3.1-py38h09021b7_0
  attrs                                 20.3.0-pyhd3eb1b0_0 --> 21.2.0-pyhd3eb1b0_0
  babel                                  2.8.1-pyhd3eb1b0_0 --> 2.9.1-pyhd3eb1b0_0
  backports.shutil_~ pkgs/main/linux-64::backports.shutil_~ --> pkgs/main/noarch::backports.shutil_get_terminal_size-1.0.0-pyhd3eb1b0_3
  bitarray                             1.6.1-py38h27cfd23_0 --> 2.3.0-py38h7f8727e_1
  bleach                                         3.2.1-py_0 --> 4.0.0-pyhd3eb1b0_0
  blosc                                   1.20.1-hd408876_0 --> 1.21.0-h8c45485_0
  bokeh                                        2.2.3-py38_0 --> 2.3.3-py38h06a4308_0
  brotlipy                          0.7.0-py38h7b6447c_1000 --> 0.7.0-py38h27cfd23_1003
  ca-certificates                              2020.10.14-0 --> 2021.7.5-h06a4308_1
  cairo                                  1.14.12-h8948797_3 --> 1.16.0-hf32fb01_1
  certifi            pkgs/main/noarch::certifi-2020.6.20-p~ --> pkgs/main/linux-64::certifi-2021.5.30-py38h06a4308_0
  cffi                                1.14.3-py38he30daa8_0 --> 1.14.6-py38h400218f_0
  chardet                                   3.0.4-py38_1003 --> 4.0.0-py38h06a4308_1003
  click                                          7.1.2-py_0 --> 8.0.1-pyhd3eb1b0_0
  cryptography                         3.1.1-py38h1ba5d50_0 --> 3.4.7-py38hd23ed53_0
  curl                                    7.71.1-hbc83047_1 --> 7.78.0-h1ccaba5_0
  cython                             0.29.21-py38he6710b0_0 --> 0.29.24-py38h295c915_0
  dask                                          2.30.0-py_0 --> 2021.8.1-pyhd3eb1b0_0
  dask-core                                     2.30.0-py_0 --> 2021.8.1-pyhd3eb1b0_0
  decorator                                      4.4.2-py_0 --> 5.0.9-pyhd3eb1b0_0
  defusedxml                                     0.6.0-py_0 --> 0.7.1-pyhd3eb1b0_0
  distributed                         2.30.1-py38h06a4308_0 --> 2021.8.1-py38h06a4308_0
  docutils                                      0.16-py38_1 --> 0.17.1-py38h06a4308_1
  et_xmlfile         pkgs/main/noarch::et_xmlfile-1.0.1-py~ --> pkgs/main/linux-64::et_xmlfile-1.1.0-py38h06a4308_0
  expat                                   2.2.10-he6710b0_2 --> 2.4.1-h2531618_2
  filelock                                      3.0.12-py_0 --> 3.0.12-pyhd3eb1b0_1
  fontconfig                              2.13.0-h9420a91_0 --> 2.13.1-h6c09931_0
  fsspec                                         0.8.3-py_0 --> 2021.7.0-pyhd3eb1b0_0
  gevent                              20.9.0-py38h7b6447c_0 --> 21.8.0-py38h7f8727e_1
  glib                                    2.66.1-h92f7085_0 --> 2.69.1-h5202010_0
  gmp                                      6.1.2-h6c8ec71_1 --> 6.2.1-h2531618_2
  greenlet                            0.4.17-py38h7b6447c_0 --> 1.1.1-py38h295c915_0
  gst-plugins-base                        1.14.0-hbbd80ab_1 --> 1.14.0-h8213a91_2
  gstreamer                               1.14.0-hb31296c_0 --> 1.14.0-h28cd5cc_2
  harfbuzz                                 2.4.0-hca77d97_1 --> 2.8.1-h6f93f22_0
  idna                                            2.10-py_0 --> 3.2-pyhd3eb1b0_0
  importlib-metadata pkgs/main/noarch::importlib-metadata-~ --> pkgs/main/linux-64::importlib-metadata-3.10.0-py38h06a4308_0
  importlib_metadata                                2.0.0-1 --> 3.10.0-hd3eb1b0_0
  intel-openmp                                   2020.2-254 --> 2021.3.0-h06a4308_3350
  ipykernel                            5.3.4-py38h5ca1d4c_0 --> 6.2.0-py38h06a4308_1
  ipython                             7.19.0-py38hb070fc8_0 --> 7.26.0-py38hb070fc8_0
  ipython_genutils   pkgs/main/linux-64::ipython_genutils-~ --> pkgs/main/noarch::ipython_genutils-0.2.0-pyhd3eb1b0_1
  ipywidgets                                     7.5.1-py_1 --> 7.6.3-pyhd3eb1b0_1
  isort                                          5.6.4-py_0 --> 5.9.3-pyhd3eb1b0_0
  itsdangerous                                   1.1.0-py_0 --> 2.0.1-pyhd3eb1b0_0
  jedi                                        0.17.1-py38_0 --> 0.17.2-py38h06a4308_1
  jeepney                                0.5.0-pyhd3eb1b0_0 --> 0.7.1-pyhd3eb1b0_0
  jinja2                                        2.11.2-py_0 --> 3.0.1-pyhd3eb1b0_0
  joblib                                        0.17.0-py_0 --> 1.0.1-pyhd3eb1b0_0
  json5                                          0.9.5-py_0 --> 0.9.6-pyhd3eb1b0_0
  jupyter_client                                 6.1.7-py_0 --> 6.1.12-pyhd3eb1b0_0
  jupyter_console                                6.2.0-py_0 --> 6.4.0-pyhd3eb1b0_0
  jupyter_core                                 4.6.3-py38_0 --> 4.7.1-py38h06a4308_0
  jupyterlab                                     2.2.6-py_0 --> 3.1.7-pyhd3eb1b0_0
  jupyterlab_server                              1.2.0-py_0 --> 2.7.1-pyhd3eb1b0_0
  keyring                                     21.4.0-py38_1 --> 23.0.1-py38h06a4308_0
  kiwisolver                           1.3.0-py38h2531618_0 --> 1.3.1-py38h2531618_0
  krb5                                    1.18.2-h173b8e3_0 --> 1.19.2-hac12032_0
  lazy-object-proxy                    1.4.3-py38h7b6447c_0 --> 1.6.0-py38h27cfd23_0
  lcms2                                     2.11-h396b838_0 --> 2.12-h3be6417_0
  ld_impl_linux-64                        2.33.1-h53a641e_7 --> 2.35.1-h7274673_9
  libcurl                                 7.71.1-h20c2e04_1 --> 7.78.0-h0b77cf5_0
  libedit                           3.1.20191231-h14c3975_1 --> 3.1.20210714-h7f8727e_0
  libgcc-ng                                9.1.0-hdf63c60_0 --> 9.3.0-h5101ec6_17
  libgfortran-ng                           7.3.0-hdf63c60_0 --> 7.5.0-ha8ba4b0_17
  libstdcxx-ng                             9.1.0-hdf63c60_0 --> 9.3.0-hd4cf53a_17
  libtiff                                  4.1.0-h2733197_1 --> 4.2.0-h85742a9_0
  libxml2                                 2.9.10-hb55368b_3 --> 2.9.12-h03d6c58_0
  llvmlite                            0.34.0-py38h269e1b5_4 --> 0.36.0-py38h612dafd_4
  locket                                       0.2.0-py38_1 --> 0.2.1-py38h06a4308_1
  lxml                                 4.6.1-py38hefd8a0e_0 --> 4.6.3-py38h9120a33_0
  lz4-c                                    1.9.2-heb0550a_3 --> 1.9.3-h295c915_1
  markupsafe                           1.1.1-py38h7b6447c_0 --> 2.0.1-py38h27cfd23_0
  matplotlib                                        3.3.2-0 --> 3.4.2-py38h06a4308_0
  matplotlib-base                      3.3.2-py38h817c723_0 --> 3.4.2-py38hab158f2_0
  mkl                                            2020.2-256 --> 2021.3.0-h06a4308_520
  mkl-service                          2.3.0-py38he904b0f_0 --> 2.4.0-py38h7f8727e_0
  mkl_fft                              1.2.0-py38h23d657b_0 --> 1.3.0-py38h42c9631_2
  mkl_random                           1.1.1-py38h0573a6f_0 --> 1.2.2-py38h51133e4_0
  mock                                           4.0.2-py_0 --> 4.0.3-pyhd3eb1b0_0
  more-itertools                         8.6.0-pyhd3eb1b0_0 --> 8.8.0-pyhd3eb1b0_0
  mpmath                                       1.1.0-py38_0 --> 1.2.1-py38h06a4308_0
  msgpack-python                       1.0.0-py38hfd86e86_1 --> 1.0.2-py38hff7bd54_1
  nbclient                                       0.5.1-py_0 --> 0.5.3-pyhd3eb1b0_0
  nbconvert                                    6.0.7-py38_0 --> 6.1.0-py38h06a4308_0
  nbformat                                       5.0.8-py_0 --> 5.1.3-pyhd3eb1b0_0
  nest-asyncio                           1.4.2-pyhd3eb1b0_0 --> 1.5.1-pyhd3eb1b0_0
  networkx                                         2.5-py_0 --> 2.6.2-pyhd3eb1b0_0
  nltk                                             3.5-py_0 --> 3.6.2-pyhd3eb1b0_0
  nose                pkgs/main/linux-64::nose-1.3.7-py38_2 --> pkgs/main/noarch::nose-1.3.7-pyhd3eb1b0_1006
  notebook                                     6.1.4-py38_0 --> 6.4.3-py38h06a4308_0
  numba                               0.51.2-py38h0573a6f_1 --> 0.53.1-py38ha9443f7_0
  numexpr                              2.7.1-py38h423224d_0 --> 2.7.3-py38h22e1b3c_1
  numpy                               1.19.2-py38h54aff64_0 --> 1.20.3-py38hf144106_0
  numpy-base                          1.19.2-py38hfa32c7d_0 --> 1.20.3-py38h74d4b33_0
  openpyxl                                       3.0.5-py_0 --> 3.0.7-pyhd3eb1b0_0
  openssl                                 1.1.1h-h7b6447c_0 --> 1.1.1l-h7f8727e_0
  packaging                                       20.4-py_0 --> 21.0-pyhd3eb1b0_0
  pandas                               1.1.3-py38he6710b0_0 --> 1.3.2-py38h8c16a72_0
  pandoc                                    2.11-hb0f4dca_0 --> 2.12-h06a4308_0
  partd                                          1.1.0-py_0 --> 1.2.0-pyhd3eb1b0_0
  patchelf                                  0.12-he6710b0_0 --> 0.12-h2531618_1
  path                                        15.0.0-py38_0 --> 16.0.0-py38h06a4308_0
  pathlib2                                     2.3.5-py38_0 --> 2.3.6-py38h06a4308_2
  pcre                                      8.44-he6710b0_0 --> 8.45-h295c915_0
  pexpect            pkgs/main/linux-64::pexpect-4.8.0-py3~ --> pkgs/main/noarch::pexpect-4.8.0-pyhd3eb1b0_3
  pickleshare        pkgs/main/linux-64::pickleshare-0.7.5~ --> pkgs/main/noarch::pickleshare-0.7.5-pyhd3eb1b0_1003
  pillow                               8.0.1-py38he98fc37_0 --> 8.3.1-py38h2c7a002_0
  pip                                 20.2.4-py38h06a4308_0 --> 21.0.1-py38h06a4308_0
  pkginfo                              1.6.1-py38h06a4308_0 --> 1.7.1-py38h06a4308_0
  prometheus_client                              0.8.0-py_0 --> 0.11.0-pyhd3eb1b0_0
  prompt-toolkit                                 3.0.8-py_0 --> 3.0.17-pyh06a4308_0
  prompt_toolkit                                    3.0.8-0 --> 3.0.17-hd3eb1b0_0
  psutil                               5.7.2-py38h7b6447c_0 --> 5.8.0-py38h27cfd23_1
  ptyprocess         pkgs/main/linux-64::ptyprocess-0.6.0-~ --> pkgs/main/noarch::ptyprocess-0.7.0-pyhd3eb1b0_2
  py                                             1.9.0-py_0 --> 1.10.0-pyhd3eb1b0_0
  pydocstyle                                     5.1.1-py_0 --> 6.1.1-pyhd3eb1b0_0
  pygments                               2.7.2-pyhd3eb1b0_0 --> 2.10.0-pyhd3eb1b0_0
  pylint                                       2.6.0-py38_0 --> 2.9.6-py38h06a4308_1
  pyodbc                              4.0.30-py38he6710b0_0 --> 4.0.31-py38h295c915_0
  pyopenssl                                     19.1.0-py_1 --> 20.0.1-pyhd3eb1b0_1
  pytest                                       6.1.1-py38_0 --> 6.2.4-py38h06a4308_2
  python-dateutil                                2.8.1-py_0 --> 2.8.2-pyhd3eb1b0_0
  python-language-s~                            0.35.1-py_0 --> 0.36.2-pyhd3eb1b0_0
  python-libarchive~                               2.9-py_0 --> 2.9-pyhd3eb1b0_1
  pytz                                          2020.1-py_0 --> 2021.1-pyhd3eb1b0_0
  pyyaml                               5.3.1-py38h7b6447c_1 --> 5.4.1-py38h27cfd23_1
  pyzmq                               19.0.2-py38he6710b0_1 --> 22.2.1-py38h295c915_1
  qtawesome                                      1.0.1-py_0 --> 1.0.2-pyhd3eb1b0_0
  qtconsole                                      4.7.7-py_0 --> 5.1.0-pyhd3eb1b0_0
  qtpy                                           1.9.0-py_0 --> 1.10.0-pyhd3eb1b0_0
  readline                                   8.0-h7b6447c_0 --> 8.1-h27cfd23_0
  regex                           2020.10.15-py38h7b6447c_0 --> 2021.8.3-py38h7f8727e_0
  requests                                      2.24.0-py_0 --> 2.26.0-pyhd3eb1b0_0
  rope                                          0.18.0-py_0 --> 0.19.0-pyhd3eb1b0_0
  rtree                                        0.9.4-py38_1 --> 0.9.7-py38h06a4308_1
  ruamel_yaml                        0.15.87-py38h7b6447c_1 --> 0.15.100-py38h27cfd23_0
  scikit-image                        0.17.2-py38hdf5156a_0 --> 0.18.1-py38ha9443f7_0
  scikit-learn                        0.23.2-py38h0573a6f_0 --> 0.24.2-py38ha9443f7_0
  scipy                                1.5.2-py38h0b6359f_0 --> 1.6.2-py38had2a1c9_1
  seaborn                                       0.11.0-py_0 --> 0.11.2-pyhd3eb1b0_0
  secretstorage                                3.1.2-py38_0 --> 3.3.1-py38h06a4308_0
  send2trash         pkgs/main/linux-64::send2trash-1.5.0-~ --> pkgs/main/noarch::send2trash-1.5.0-pyhd3eb1b0_1
  setuptools                          50.3.1-py38h06a4308_1 --> 52.0.0-py38h06a4308_0
  singledispatch                            3.4.0.3-py_1001 --> 3.7.0-pyhd3eb1b0_1001
  six                pkgs/main/linux-64::six-1.15.0-py38h0~ --> pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
  snowballstemmer                                2.0.0-py_0 --> 2.1.0-pyhd3eb1b0_0
  sortedcollections                              1.2.1-py_0 --> 2.1.0-pyhd3eb1b0_0
  sortedcontainers                               2.2.2-py_0 --> 2.4.0-pyhd3eb1b0_0
  soupsieve                                      2.0.1-py_0 --> 2.2.1-pyhd3eb1b0_0
  sphinx                                         3.2.1-py_0 --> 4.0.2-pyhd3eb1b0_0
  sphinxcontrib-htm~                             1.0.3-py_0 --> 2.0.0-pyhd3eb1b0_0
  sphinxcontrib-ser~                             1.1.4-py_0 --> 1.1.5-pyhd3eb1b0_0
  spyder                                       4.1.5-py38_0 --> 4.2.5-py38h06a4308_0
  spyder-kernels                               1.9.4-py38_0 --> 1.10.2-py38h06a4308_0
  sqlalchemy                          1.3.20-py38h7b6447c_0 --> 1.4.22-py38h7f8727e_0
  sqlite                                  3.33.0-h62c20be_0 --> 3.36.0-hc218d9a_0
  statsmodels                         0.12.0-py38h7b6447c_0 --> 0.12.2-py38h27cfd23_0
  sympy                                1.6.2-py38h06a4308_1 --> 1.8-py38h06a4308_0
  terminado                                    0.9.1-py38_0 --> 0.9.4-py38h06a4308_0
  testpath                                       0.4.4-py_0 --> 0.5.0-pyhd3eb1b0_0
  threadpoolctl                          2.1.0-pyh5ca1d4c_0 --> 2.2.0-pyhbf3da8f_0
  toml                                          0.10.1-py_0 --> 0.10.2-pyhd3eb1b0_0
  tornado                              6.0.4-py38h7b6447c_1 --> 6.1-py38h27cfd23_0
  tqdm                                          4.50.2-py_0 --> 4.62.1-pyhd3eb1b0_1
  typing_extensions                            3.7.4.3-py_0 --> 3.10.0.0-pyh06a4308_0
  ujson                                4.0.1-py38he6710b0_0 --> 4.0.2-py38h2531618_0
  urllib3                                      1.25.11-py_0 --> 1.26.6-pyhd3eb1b0_1
  watchdog                                    0.10.3-py38_0 --> 1.0.2-py38h06a4308_1
  wheel                                         0.35.1-py_0 --> 0.37.0-pyhd3eb1b0_0
  wrapt                               1.11.2-py38h7b6447c_0 --> 1.12.1-py38h7b6447c_1
  wurlitzer                                    2.0.1-py38_0 --> 2.1.1-py38h06a4308_0
  xlrd                                           1.2.0-py_0 --> 2.0.1-pyhd3eb1b0_0
  xlsxwriter                                     1.3.7-py_0 --> 3.0.1-pyhd3eb1b0_0
  yapf                                          0.30.0-py_0 --> 0.31.0-pyhd3eb1b0_0
  zeromq                                   4.3.3-he6710b0_3 --> 4.3.4-h2531618_0
  zipp                                   3.4.0-pyhd3eb1b0_0 --> 3.5.0-pyhd3eb1b0_0
  zope.interface                       5.1.2-py38h7b6447c_0 --> 5.4.0-py38h7f8727e_0
  zstd                                     1.4.5-h9ceee32_0 --> 1.4.9-haebb681_0

The following packages will be DOWNGRADED:

  alabaster                                     0.7.12-py_0 --> 0.7.12-pyhd3eb1b0_0
  anaconda                                   2020.11-py38_0 --> custom-py38_1
  argon2-cffi                         20.1.0-py38h7b6447c_1 --> 20.1.0-py38h27cfd23_1
  async_generator                                 1.10-py_0 --> 1.10-pyhd3eb1b0_0
  backcall                                       0.2.0-py_0 --> 0.2.0-pyhd3eb1b0_0
  backports                                        1.0-py_2 --> 1.0-pyhd3eb1b0_2
  beautifulsoup4                         4.9.3-pyhb0f4dca_0 --> 4.9.3-pyha847dfd_0
  colorama                                       0.4.4-py_0 --> 0.4.4-pyhd3eb1b0_0
  flask                                          1.1.2-py_0 --> 1.1.2-pyhd3eb1b0_0
  glob2                                            0.7-py_0 --> 0.7-pyhd3eb1b0_0
  imageio                                        2.9.0-py_0 --> 2.9.0-pyhd3eb1b0_0
  imagesize                                      1.2.0-py_0 --> 1.2.0-pyhd3eb1b0_0
  iniconfig                                      1.1.1-py_0 --> 1.1.1-pyhd3eb1b0_0
  libspatialindex                          1.9.3-he6710b0_0 --> 1.9.3-h2531618_0
  pluggy                                      0.13.1-py38_0 --> 0.13.1-py38h06a4308_0
  pycodestyle                                    2.6.0-py_0 --> 2.6.0-pyhd3eb1b0_0
  pyflakes                                       2.2.0-py_0 --> 2.2.0-pyhd3eb1b0_0
  pyparsing                                      2.4.7-py_0 --> 2.4.7-pyhd3eb1b0_0
  pysocks                                      1.7.1-py38_0 --> 1.7.1-py38h06a4308_0
  sphinxcontrib-app~                             1.0.2-py_0 --> 1.0.2-pyhd3eb1b0_0
  sphinxcontrib-dev~                             1.0.2-py_0 --> 1.0.2-pyhd3eb1b0_0
  sphinxcontrib-jsm~                             1.0.1-py_0 --> 1.0.1-pyhd3eb1b0_0
  sphinxcontrib-qth~                             1.0.3-py_0 --> 1.0.3-pyhd3eb1b0_0
  toolz                                         0.11.1-py_0 --> 0.11.1-pyhd3eb1b0_0
  traitlets                                      5.0.5-py_0 --> 5.0.5-pyhd3eb1b0_0
  werkzeug                                       1.0.1-py_0 --> 1.0.1-pyhd3eb1b0_0
  zict                                           2.0.0-py_0 --> 2.0.0-pyhd3eb1b0_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
anyio-2.2.0          | 125 KB    | ##################################### | 100% 
rtree-0.9.7          | 48 KB     | ##################################### | 100% 
libev-4.33           | 112 KB    | ##################################### | 100% 
libgomp-9.3.0        | 311 KB    | ##################################### | 100% 
iniconfig-1.1.1      | 8 KB      | ##################################### | 100% 
typing_extensions-3. | 27 KB     | ##################################### | 100% 
pathspec-0.7.0       | 26 KB     | ##################################### | 100% 
sphinxcontrib-devhel | 23 KB     | ##################################### | 100% 
soupsieve-2.2.1      | 32 KB     | ##################################### | 100% 
setuptools-52.0.0    | 714 KB    | ##################################### | 100% 
readline-8.1         | 362 KB    | ##################################### | 100% 
astropy-4.3.1        | 6.4 MB    | ##################################### | 100% 
jedi-0.17.2          | 924 KB    | ##################################### | 100% 
argon2-cffi-20.1.0   | 46 KB     | ##################################### | 100% 
brotli-1.0.9         | 375 KB    | ##################################### | 100% 
openpyxl-3.0.7       | 159 KB    | ##################################### | 100% 
python-language-serv | 41 KB     | ##################################### | 100% 
zstd-1.4.9           | 480 KB    | ##################################### | 100% 
pathlib2-2.3.6       | 36 KB     | ##################################### | 100% 
numba-0.53.1         | 3.3 MB    | ##################################### | 100% 
secretstorage-3.3.1  | 24 KB     | ##################################### | 100% 
sphinxcontrib-htmlhe | 32 KB     | ##################################### | 100% 
libgfortran-ng-7.5.0 | 22 KB     | ##################################### | 100% 
wurlitzer-2.1.1      | 13 KB     | ##################################### | 100% 
_openmp_mutex-4.5    | 22 KB     | ##################################### | 100% 
docutils-0.17.1      | 686 KB    | ##################################### | 100% 
pytz-2021.1          | 181 KB    | ##################################### | 100% 
pcre-8.45            | 207 KB    | ##################################### | 100% 
tornado-6.1          | 588 KB    | ##################################### | 100% 
networkx-2.6.2       | 1.3 MB    | ##################################### | 100% 
isort-5.9.3          | 83 KB     | ##################################### | 100% 
regex-2021.8.3       | 319 KB    | ##################################### | 100% 
six-1.16.0           | 18 KB     | ##################################### | 100% 
pyopenssl-20.0.1     | 49 KB     | ##################################### | 100% 
idna-3.2             | 48 KB     | ##################################### | 100% 
libspatialindex-1.9. | 2.1 MB    | ##################################### | 100% 
ujson-4.0.2          | 45 KB     | ##################################### | 100% 
pluggy-0.13.1        | 33 KB     | ##################################### | 100% 
yapf-0.31.0          | 126 KB    | ##################################### | 100% 
prompt-toolkit-3.0.1 | 256 KB    | ##################################### | 100% 
scikit-learn-0.24.2  | 5.4 MB    | ##################################### | 100% 
python-libarchive-c- | 47 KB     | ##################################### | 100% 
appdirs-1.4.4        | 13 KB     | ##################################### | 100% 
werkzeug-1.0.1       | 239 KB    | ##################################### | 100% 
gevent-21.8.0        | 1.5 MB    | ##################################### | 100% 
nbclassic-0.2.6      | 19 KB     | ##################################### | 100% 
terminado-0.9.4      | 25 KB     | ##################################### | 100% 
lxml-4.6.3           | 1.3 MB    | ##################################### | 100% 
pyls-spyder-0.3.2    | 10 KB     | ##################################### | 100% 
urllib3-1.26.6       | 112 KB    | ##################################### | 100% 
sphinxcontrib-qthelp | 26 KB     | ##################################### | 100% 
cffi-1.14.6          | 224 KB    | ##################################### | 100% 
keyring-23.0.1       | 54 KB     | ##################################### | 100% 
libedit-3.1.20210714 | 165 KB    | ##################################### | 100% 
colorama-0.4.4       | 21 KB     | ##################################### | 100% 
cryptography-3.4.7   | 913 KB    | ##################################### | 100% 
msgpack-python-1.0.2 | 83 KB     | ##################################### | 100% 
jupyterlab_widgets-1 | 109 KB    | ##################################### | 100% 
anaconda-project-0.1 | 218 KB    | ##################################### | 100% 
pyparsing-2.4.7      | 59 KB     | ##################################### | 100% 
watchdog-1.0.2       | 89 KB     | ##################################### | 100% 
importlib_metadata-3 | 11 KB     | ##################################### | 100% 
prompt_toolkit-3.0.1 | 12 KB     | ##################################### | 100% 
qtconsole-5.1.0      | 98 KB     | ##################################### | 100% 
ipykernel-6.2.0      | 192 KB    | ##################################### | 100% 
fontconfig-2.13.1    | 250 KB    | ##################################### | 100% 
path-16.0.0          | 37 KB     | ##################################### | 100% 
pydocstyle-6.1.1     | 36 KB     | ##################################### | 100% 
libllvm9-9.0.1       | 21.0 MB   | ##################################### | 100% 
mkl_fft-1.3.0        | 180 KB    | ##################################### | 100% 
expat-2.4.1          | 168 KB    | ##################################### | 100% 
bokeh-2.3.3          | 5.9 MB    | ##################################### | 100% 
mkl-service-2.4.0    | 59 KB     | ##################################### | 100% 
babel-2.9.1          | 5.5 MB    | ##################################### | 100% 
psutil-5.8.0         | 327 KB    | ##################################### | 100% 
markupsafe-2.0.1     | 22 KB     | ##################################### | 100% 
tqdm-4.62.1          | 84 KB     | ##################################### | 100% 
pexpect-4.8.0        | 53 KB     | ##################################### | 100% 
jupyter_server-1.4.1 | 317 KB    | ##################################### | 100% 
pkginfo-1.7.1        | 43 KB     | ##################################### | 100% 
krb5-1.19.2          | 1.2 MB    | ##################################### | 100% 
more-itertools-8.8.0 | 42 KB     | ##################################### | 100% 
spyder-kernels-1.10. | 102 KB    | ##################################### | 100% 
chardet-4.0.0        | 194 KB    | ##################################### | 100% 
curl-7.78.0          | 94 KB     | ##################################### | 100% 
kiwisolver-1.3.1     | 80 KB     | ##################################### | 100% 
pyerfa-2.0.0         | 345 KB    | ##################################### | 100% 
cairo-1.16.0         | 1.0 MB    | ##################################### | 100% 
greenlet-1.1.1       | 82 KB     | ##################################### | 100% 
patchelf-0.12        | 88 KB     | ##################################### | 100% 
munkres-1.1.4        | 13 KB     | ##################################### | 100% 
nltk-3.6.2           | 988 KB    | ##################################### | 100% 
glob2-0.7            | 12 KB     | ##################################### | 100% 
anaconda-custom      | 35 KB     | ##################################### | 100% 
numexpr-2.7.3        | 188 KB    | ##################################### | 100% 
numpy-1.20.3         | 23 KB     | ##################################### | 100% 
libtiff-4.2.0        | 502 KB    | ##################################### | 100% 
imagesize-1.2.0      | 9 KB      | ##################################### | 100% 
_anaconda_depends-20 | 6 KB      | ##################################### | 100% 
typed-ast-1.4.3      | 185 KB    | ##################################### | 100% 
libnghttp2-1.41.0    | 667 KB    | ##################################### | 100% 
ruamel_yaml-0.15.100 | 258 KB    | ##################################### | 100% 
decorator-5.0.9      | 12 KB     | ##################################### | 100% 
backcall-0.2.0       | 13 KB     | ##################################### | 100% 
sniffio-1.2.0        | 15 KB     | ##################################### | 100% 
qtawesome-1.0.2      | 760 KB    | ##################################### | 100% 
sphinx-4.0.2         | 1.2 MB    | ##################################### | 100% 
libuv-1.40.0         | 736 KB    | ##################################### | 100% 
openssl-1.1.1l       | 2.5 MB    | ##################################### | 100% 
ipython_genutils-0.2 | 27 KB     | ##################################### | 100% 
lcms2-2.12           | 312 KB    | ##################################### | 100% 
pyls-black-0.4.6     | 9 KB      | ##################################### | 100% 
bleach-4.0.0         | 113 KB    | ##################################### | 100% 
pandas-1.3.2         | 9.6 MB    | ##################################### | 100% 
jupyterlab_server-2. | 44 KB     | ##################################### | 100% 
imageio-2.9.0        | 3.0 MB    | ##################################### | 100% 
pyodbc-4.0.31        | 71 KB     | ##################################### | 100% 
charset-normalizer-2 | 35 KB     | ##################################### | 100% 
gmp-6.2.1            | 539 KB    | ##################################### | 100% 
requests-2.26.0      | 59 KB     | ##################################### | 100% 
wheel-0.37.0         | 32 KB     | ##################################### | 100% 
async_generator-1.10 | 23 KB     | ##################################### | 100% 
wrapt-1.12.1         | 50 KB     | ##################################### | 100% 
bitarray-2.3.0       | 139 KB    | ##################################### | 100% 
anaconda-client-1.8. | 152 KB    | ##################################### | 100% 
jupyterlab-3.1.7     | 3.6 MB    | ##################################### | 100% 
c-ares-1.17.1        | 108 KB    | ##################################### | 100% 
gst-plugins-base-1.1 | 4.9 MB    | ##################################### | 100% 
lazy-object-proxy-1. | 30 KB     | ##################################### | 100% 
packaging-21.0       | 36 KB     | ##################################### | 100% 
gstreamer-1.14.0     | 3.2 MB    | ##################################### | 100% 
scikit-image-0.18.1  | 9.5 MB    | ##################################### | 100% 
mypy_extensions-0.4. | 9 KB      | ##################################### | 100% 
itsdangerous-2.0.1   | 18 KB     | ##################################### | 100% 
xlsxwriter-3.0.1     | 111 KB    | ##################################### | 100% 
llvmlite-0.36.0      | 396 KB    | ##################################### | 100% 
astroid-2.6.6        | 309 KB    | ##################################### | 100% 
three-merge-0.1.1    | 10 KB     | ##################################### | 100% 
notebook-6.4.3       | 4.2 MB    | ##################################### | 100% 
mock-4.0.3           | 29 KB     | ##################################### | 100% 
fsspec-2021.7.0      | 91 KB     | ##################################### | 100% 
ipywidgets-7.6.3     | 105 KB    | ##################################### | 100% 
pip-21.0.1           | 1.8 MB    | ##################################### | 100% 
blosc-1.21.0         | 64 KB     | ##################################### | 100% 
qtpy-1.10.0          | 35 KB     | ##################################### | 100% 
beautifulsoup4-4.9.3 | 86 KB     | ##################################### | 100% 
openjpeg-2.4.0       | 331 KB    | ##################################### | 100% 
nbconvert-6.1.0      | 481 KB    | ##################################### | 100% 
json5-0.9.6          | 21 KB     | ##################################### | 100% 
jupyter_console-6.4. | 23 KB     | ##################################### | 100% 
scipy-1.6.2          | 15.6 MB   | ##################################### | 100% 
libwebp-base-1.2.0   | 437 KB    | ##################################### | 100% 
sphinxcontrib-jsmath | 8 KB      | ##################################### | 100% 
libgcc-ng-9.3.0      | 4.8 MB    | ##################################### | 100% 
defusedxml-0.7.1     | 23 KB     | ##################################### | 100% 
backports.shutil_get | 10 KB     | ##################################### | 100% 
dask-2021.8.1        | 18 KB     | ##################################### | 100% 
zipp-3.5.0           | 13 KB     | ##################################### | 100% 
ca-certificates-2021 | 113 KB    | ##################################### | 100% 
libstdcxx-ng-9.3.0   | 3.1 MB    | ##################################### | 100% 
toml-0.10.2          | 20 KB     | ##################################### | 100% 
harfbuzz-2.8.1       | 1.1 MB    | ##################################### | 100% 
backports-1.0        | 210 KB    | ##################################### | 100% 
sortedcontainers-2.4 | 26 KB     | ##################################### | 100% 
testpath-0.5.0       | 81 KB     | ##################################### | 100% 
pyflakes-2.2.0       | 56 KB     | ##################################### | 100% 
pyzmq-22.2.1         | 465 KB    | ##################################### | 100% 
singledispatch-3.7.0 | 12 KB     | ##################################### | 100% 
matplotlib-base-3.4. | 5.6 MB    | ##################################### | 100% 
pandoc-2.12          | 9.5 MB    | ##################################### | 100% 
xlrd-2.0.1           | 90 KB     | ##################################### | 100% 
nose-1.3.7           | 128 KB    | ##################################### | 100% 
statsmodels-0.12.2   | 8.5 MB    | ##################################### | 100% 
flask-1.1.2          | 70 KB     | ##################################### | 100% 
importlib-metadata-3 | 33 KB     | ##################################### | 100% 
alabaster-0.7.12     | 16 KB     | ##################################### | 100% 
sqlite-3.36.0        | 990 KB    | ##################################### | 100% 
rope-0.19.0          | 126 KB    | ##################################### | 100% 
send2trash-1.5.0     | 14 KB     | ##################################### | 100% 
cython-0.29.24       | 2.0 MB    | ##################################### | 100% 
nbformat-5.1.3       | 44 KB     | ##################################### | 100% 
libcurl-7.78.0       | 338 KB    | ##################################### | 100% 
threadpoolctl-2.2.0  | 16 KB     | ##################################### | 100% 
pytest-6.2.4         | 423 KB    | ##################################### | 100% 
pysocks-1.7.1        | 31 KB     | ##################################### | 100% 
distributed-2021.8.1 | 970 KB    | ##################################### | 100% 
pyyaml-5.4.1         | 174 KB    | ##################################### | 100% 
libgfortran4-7.5.0   | 995 KB    | ##################################### | 100% 
mkl_random-1.2.2     | 308 KB    | ##################################### | 100% 
seaborn-0.11.2       | 218 KB    | ##################################### | 100% 
prometheus_client-0. | 47 KB     | ##################################### | 100% 
debugpy-1.4.1        | 1.7 MB    | ##################################### | 100% 
pylint-2.9.6         | 488 KB    | ##################################### | 100% 
black-19.10b0        | 86 KB     | ##################################### | 100% 
glib-2.69.1          | 1.7 MB    | ##################################### | 100% 
fonttools-4.25.0     | 632 KB    | ##################################### | 100% 
partd-1.2.0          | 19 KB     | ##################################### | 100% 
jupyter_client-6.1.1 | 88 KB     | ##################################### | 100% 
matplotlib-3.4.2     | 26 KB     | ##################################### | 100% 
sortedcollections-2. | 12 KB     | ##################################### | 100% 
sphinxcontrib-serial | 25 KB     | ##################################### | 100% 
et_xmlfile-1.1.0     | 10 KB     | ##################################### | 100% 
dask-core-2021.8.1   | 715 KB    | ##################################### | 100% 
zeromq-4.3.4         | 331 KB    | ##################################### | 100% 
snappy-1.1.8         | 40 KB     | ##################################### | 100% 
sqlalchemy-1.4.22    | 1.8 MB    | ##################################### | 100% 
pygments-2.10.0      | 725 KB    | ##################################### | 100% 
nest-asyncio-1.5.1   | 10 KB     | ##################################### | 100% 
joblib-1.0.1         | 208 KB    | ##################################### | 100% 
traitlets-5.0.5      | 81 KB     | ##################################### | 100% 
mpmath-1.2.1         | 766 KB    | ##################################### | 100% 
lz4-c-1.9.3          | 185 KB    | ##################################### | 100% 
pillow-8.3.1         | 638 KB    | ##################################### | 100% 
ipython-7.26.0       | 994 KB    | ##################################### | 100% 
python-dateutil-2.8. | 233 KB    | ##################################### | 100% 
spyder-4.2.5         | 5.4 MB    | ##################################### | 100% 
pickleshare-0.7.5    | 13 KB     | ##################################### | 100% 
locket-0.2.1         | 10 KB     | ##################################### | 100% 
ld_impl_linux-64-2.3 | 586 KB    | ##################################### | 100% 
zope.interface-5.4.0 | 301 KB    | ##################################### | 100% 
textdistance-4.2.1   | 29 KB     | ##################################### | 100% 
numpy-base-1.20.3    | 4.5 MB    | ##################################### | 100% 
click-8.0.1          | 79 KB     | ##################################### | 100% 
sphinxcontrib-appleh | 29 KB     | ##################################### | 100% 
snowballstemmer-2.1. | 62 KB     | ##################################### | 100% 
zict-2.0.0           | 10 KB     | ##################################### | 100% 
py-1.10.0            | 76 KB     | ##################################### | 100% 
pycodestyle-2.6.0    | 38 KB     | ##################################### | 100% 
toolz-0.11.1         | 46 KB     | ##################################### | 100% 
brotlipy-0.7.0       | 323 KB    | ##################################### | 100% 
matplotlib-inline-0. | 12 KB     | ##################################### | 100% 
nbclient-0.5.3       | 62 KB     | ##################################### | 100% 
libxml2-2.9.12       | 1.2 MB    | ##################################### | 100% 
jeepney-0.7.1        | 38 KB     | ##################################### | 100% 
sympy-1.8            | 9.1 MB    | ##################################### | 100% 
certifi-2021.5.30    | 138 KB    | ##################################### | 100% 
conda-pack-0.6.0     | 29 KB     | ##################################### | 100% 
filelock-3.0.12      | 10 KB     | ##################################### | 100% 
mkl-2021.3.0         | 141.2 MB  | ##################################### | 100% 
ptyprocess-0.7.0     | 17 KB     | ##################################### | 100% 
jupyter_core-4.7.1   | 68 KB     | ##################################### | 100% 
jinja2-3.0.1         | 110 KB    | ##################################### | 100% 
attrs-21.2.0         | 46 KB     | ##################################### | 100% 
intel-openmp-2021.3. | 1.4 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: | 

    Installed package of scikit-learn can be accelerated using scikit-learn-intelex.
    More details are available here: https://intel.github.io/scikit-learn-intelex

    For example:

        $ conda install scikit-learn-intelex
        $ python -m sklearnex my_application.py

    

done
(base) [email protected]:~/Descargas$ conda create --name my_env
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3/envs/my_env



Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate my_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) [email protected]:~/Descargas$ conda activate my_env
(my_env) [email protected]:~/Descargas$ ls
Anaconda3-2020.11-Linux-x86_64.sh  Anaconda3-2021.05-Linux-x86_64.sh
(my_env) [email protected]:~/Descargas$ sudo conda activate my_env
[sudo] contraseña para soloelectronicos: 
sudo: conda: orden no encontrada
(my_env) [email protected]:~/Descargas$ conda activate my_env
[email protected]:~/Descargas$ wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
--2021-09-06 10:21:36--  https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
Resolviendo repo.anaconda.com (repo.anaconda.com)... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8303, ...
Conectando con repo.anaconda.com (repo.anaconda.com)[104.16.130.3]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 554535580 (529M) [application/x-sh]
Guardando como: “Anaconda3-2020.11-Linux-x86_64.sh”

Anaconda3-2020.11-L 100%[===================>] 528,85M  3,04MB/s    en 2m 56s  

2021-09-06 10:24:32 (3,00 MB/s) - “Anaconda3-2020.11-Linux-x86_64.sh” guardado [554535580/554535580]

[email protected]:~/Descargas$ sha256sum Anaconda3-2020.11-Linux-x86_64.sh
cf2ff493f11eaad5d09ce2b4feaa5ea90db5174303d5b3fe030e16d29aeef7de  Anaconda3-2020.11-Linux-x86_64.sh
[email protected]:~/Descargas$ bash Anaconda3-2020.11-Linux-x86_64.sh

Welcome to Anaconda3 2020.11

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 
===================================
End User License Agreement - Anaconda Individual Edition
===================================

Copyright 2015-2020, Anaconda, Inc.

All rights reserved under the 3-clause BSD License:

This End User License Agreement (the "Agreement") is a legal agreement between y
ou and Anaconda, Inc. ("Anaconda") and governs your use of Anaconda Individual E
dition (which was formerly known as Anaconda Distribution).

Subject to the terms of this Agreement, Anaconda hereby grants you a non-exclusi
ve, non-transferable license to:

  * Install and use the Anaconda Individual Edition (which was formerly known as
 Anaconda Distribution),
  * Modify and create derivative works of sample source code delivered in Anacon
da Individual Edition from Anaconda's repository; and
  * Redistribute code files in source (if provided to you by Anaconda as source)
 and binary forms, with or without modification subject to the requirements set 
forth below.

Anaconda may, at its option, make available patches, workarounds or other update
s to Anaconda Individual Edition. Unless the updates are provided with their sep
arate governing terms, they are deemed part of Anaconda Individual Edition licen
sed to you as provided in this Agreement.  This Agreement does not entitle you t
o any support for Anaconda Individual Edition.

Anaconda reserves all rights not expressly granted to you in this Agreement.

Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this 
list of conditions and the following disclaimer.
  * Redistributions in binary form must reproduce the above copyright notice, th
is list of conditions and the following disclaimer in the documentation and/or o
ther materials provided with the distribution.
  * Neither the name of Anaconda nor the names of its contributors may be used t
o endorse or promote products derived from this software without specific prior 
written permission.

You acknowledge that, as between you and Anaconda, Anaconda owns all right, titl
e, and interest, including all intellectual property rights, in and to Anaconda 
Individual Edition and, with respect to third-party products distributed with or
 through Anaconda Individual Edition, the applicable third-party licensors own a
ll right, title and interest, including all intellectual property rights, in and
 to such products.  If you send or transmit any communications or materials to A
naconda suggesting or recommending changes to the software or documentation, inc
luding without limitation, new features or functionality relating thereto, or an
y comments, questions, suggestions or the like ("Feedback"), Anaconda is free to
 use such Feedback. You hereby assign to Anaconda all right, title, and interest
 in, and Anaconda is free to use, without any attribution or compensation to any
 party, any ideas, know-how, concepts, techniques or other intellectual property
 rights contained in the Feedback, for any purpose whatsoever, although Anaconda
 is not required to use any Feedback.

THIS SOFTWARE IS PROVIDED BY ANACONDA AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRE
SS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EV
ENT SHALL ANACONDA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEM
PLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF S
UBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUP
TION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT O
F THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

TO THE MAXIMUM EXTENT PERMITTED BY LAW, ANACONDA AND ITS AFFILIATES SHALL NOT BE
 LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY L
OST PROFITS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF PROC
URING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT O
R THE USE OR PERFORMANCE OF ANACONDA INDIVIDUAL EDITION, WHETHER SUCH LIABILITY 
ARISES FROM ANY CLAIM BASED UPON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (I
NCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY O
F LIABILITY. IN NO EVENT WILL THE TOTAL CUMULATIVE LIABILITY OF ANACONDA AND ITS
 AFFILIATES UNDER OR ARISING OUT OF THIS AGREEMENT EXCEED US0.00.

If you want to terminate this Agreement, you may do so by discontinuing use of A
naconda Individual Edition.  Anaconda may, at any time, terminate this Agreement
 and the license granted hereunder if you fail to comply with any term of this A
greement.   Upon any termination of this Agreement, you agree to promptly discon
tinue use of the Anaconda Individual Edition and destroy all copies in your poss
ession or control. Upon any termination of this Agreement all provisions survive
 except for the licenses granted to you.

This Agreement is governed by and construed in accordance with the internal laws
 of the State of Texas without giving effect to any choice or conflict of law pr
ovision or rule that would require or permit the application of the laws of any 
jurisdiction other than those of the State of Texas. Any legal suit, action, or 
proceeding arising out of or related to this Agreement or the licenses granted h
ereunder by you must be instituted exclusively in the federal courts of the Unit
ed States or the courts of the State of Texas in each case located in Travis Cou
nty, Texas, and you irrevocably submit to the jurisdiction of such courts in any
 such suit, action, or proceeding.


Notice of Third Party Software Licenses
=======================================

Anaconda Individual Edition provides access to a repository which contains softw
are packages or tools licensed on an open source basis from third parties and bi
nary packages of these third party tools. These third party software packages or
 tools are provided on an "as is" basis and are subject to their respective lice
nse agreements as well as this Agreement and the Terms of Service for the Reposi
tory located at https://know.anaconda.com/TOS.html; provided, however, no restri
ction contained in the Terms of Service shall be construed so as to limit your a
bility to download the packages contained in Anaconda Individual Edition provide
d you comply with the license for each such package.  These licenses may be acce
ssed from within the Anaconda Individual Edition software or at https://docs.ana
conda.com/anaconda/pkg-docs. Information regarding which license is applicable i
s available from within many of the third party software packages and tools and 
at https://repo.anaconda.com/pkgs/main/ and https://repo.anaconda.com/pkgs/r/. A
naconda reserves the right, in its sole discretion, to change which third party 
tools are included in the repository accessible through Anaconda Individual Edit
ion.

Intel Math Kernel Library
-------------------------

Anaconda Individual Edition provides access to re-distributable, run-time, share
d-library files from the Intel Math Kernel Library ("MKL binaries").

Copyright 2018 Intel Corporation.  License available at https://software.intel.c
om/en-us/license/intel-simplified-software-license (the "MKL License").

You may use and redistribute the MKL binaries, without modification, provided th
e following conditions are met:

  * Redistributions must reproduce the above copyright notice and the following 
terms of use in the MKL binaries and in the documentation and/or other materials
 provided with the distribution.
  * Neither the name of Intel nor the names of its suppliers may be used to endo
rse or promote products derived from the MKL binaries without specific prior wri
tten permission.
  * No reverse engineering, decompilation, or disassembly of the MKL binaries is
 permitted.

You are specifically authorized to use and redistribute the MKL binaries with yo
ur installation of Anaconda Individual Edition subject to the terms set forth in
 the MKL License. You are also authorized to redistribute the MKL binaries with 
Anaconda Individual Edition or in the Anaconda package that contains the MKL bin
aries. If needed, instructions for removing the MKL binaries after installation 
of Anaconda Individual Edition are available at https://docs.anaconda.com.

cuDNN Software
--------------

Anaconda Individual Edition also provides access to cuDNN software binaries ("cu
DNN binaries") from NVIDIA Corporation. You are specifically authorized to use t
he cuDNN binaries with your installation of Anaconda Individual Edition subject 
to your compliance with the license agreement located at https://docs.nvidia.com
/deeplearning/sdk/cudnn-sla/index.html. You are also authorized to redistribute 
the cuDNN binaries with an Anaconda Individual Edition package that contains the
 cuDNN binaries. You can add or remove the cuDNN binaries utilizing the install 
and uninstall features in Anaconda Individual Edition.

cuDNN binaries contain source code provided by NVIDIA Corporation.


Export; Cryptography Notice
===========================

You must comply with all domestic and international export laws and regulations 
that apply to the software, which include restrictions on destinations, end user
s, and end use.  Anaconda Individual Edition includes cryptographic software. Th
e country in which you currently reside may have restrictions on the import, pos
session, use, and/or re-export to another country, of encryption software. BEFOR
E using any encryption software, please check your country's laws, regulations a
nd policies concerning the import, possession, or use, and re-export of encrypti
on software, to see if this is permitted. See the Wassenaar Arrangement http://w
ww.wassenaar.org/ for more information.

Anaconda has self-classified this software as Export Commodity Control Number (E
CCN) 5D992.c, which includes mass market information security software using or 
performing cryptographic functions with asymmetric algorithms. No license is req
uired for export of this software to non-embargoed countries.

The Intel Math Kernel Library contained in Anaconda Individual Edition is classi
fied by Intel as ECCN 5D992.c with no license required for export to non-embargo
ed countries.

The following packages are included in the repository accessible through Anacond
a Individual Edition that relate to cryptography:

openssl
    The OpenSSL Project is a collaborative effort to develop a robust, commercia
l-grade, full-featured, and Open Source toolkit implementing the Transport Layer
 Security (TLS) and Secure Sockets Layer (SSL) protocols as well as a full-stren
gth general purpose cryptography library.

pycrypto
    A collection of both secure hash functions (such as SHA256 and RIPEMD160), a
nd various encryption algorithms (AES, DES, RSA, ElGamal, etc.).

pyopenssl
    A thin Python wrapper around (a subset of) the OpenSSL library.

kerberos (krb5, non-Windows platforms)
    A network authentication protocol designed to provide strong authentication 
for client/server applications by using secret-key cryptography.

cryptography
    A Python library which exposes cryptographic recipes and primitives.

pycryptodome
    A fork of PyCrypto. It is a self-contained Python package of low-level crypt
ographic primitives.

pycryptodomex
    A stand-alone version of pycryptodome.

libsodium
    A software library for encryption, decryption, signatures, password hashing 
and more.

pynacl
    A Python binding to the Networking and Cryptography library, a crypto librar
y with the stated goal of improving usability, security and speed.


Last updated September 28, 2020


Do you accept the license terms? [yes|no]
[no] >>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> 
Please answer 'yes' or 'no':'
>>> yes

Anaconda3 will now be installed into this location:
/home/soloelectronicos/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/soloelectronicos/anaconda3] >>> 
PREFIX=/home/soloelectronicos/anaconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done                       
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - _ipyw_jlab_nb_ext_conf==0.1.0=py38_0
    - _libgcc_mutex==0.1=main
    - alabaster==0.7.12=py_0
    - anaconda-client==1.7.2=py38_0
    - anaconda-navigator==1.10.0=py38_0
    - anaconda-project==0.8.4=py_0
    - anaconda==2020.11=py38_0
    - argh==0.26.2=py38_0
    - argon2-cffi==20.1.0=py38h7b6447c_1
    - asn1crypto==1.4.0=py_0
    - astroid==2.4.2=py38_0
    - astropy==4.0.2=py38h7b6447c_0
    - async_generator==1.10=py_0
    - atomicwrites==1.4.0=py_0
    - attrs==20.3.0=pyhd3eb1b0_0
    - autopep8==1.5.4=py_0
    - babel==2.8.1=pyhd3eb1b0_0
    - backcall==0.2.0=py_0
    - backports.functools_lru_cache==1.6.1=py_0
    - backports.shutil_get_terminal_size==1.0.0=py38_2
    - backports.tempfile==1.0=py_1
    - backports.weakref==1.0.post1=py_1
    - backports==1.0=py_2
    - beautifulsoup4==4.9.3=pyhb0f4dca_0
    - bitarray==1.6.1=py38h27cfd23_0
    - bkcharts==0.2=py38_0
    - blas==1.0=mkl
    - bleach==3.2.1=py_0
    - blosc==1.20.1=hd408876_0
    - bokeh==2.2.3=py38_0
    - boto==2.49.0=py38_0
    - bottleneck==1.3.2=py38heb32a55_1
    - brotlipy==0.7.0=py38h7b6447c_1000
    - bzip2==1.0.8=h7b6447c_0
    - ca-certificates==2020.10.14=0
    - cairo==1.14.12=h8948797_3
    - certifi==2020.6.20=pyhd3eb1b0_3
    - cffi==1.14.3=py38he30daa8_0
    - chardet==3.0.4=py38_1003
    - click==7.1.2=py_0
    - cloudpickle==1.6.0=py_0
    - clyent==1.2.2=py38_1
    - colorama==0.4.4=py_0
    - conda-build==3.20.5=py38_1
    - conda-env==2.6.0=1
    - conda-package-handling==1.7.2=py38h03888b9_0
    - conda-verify==3.4.2=py_1
    - conda==4.9.2=py38h06a4308_0
    - contextlib2==0.6.0.post1=py_0
    - cryptography==3.1.1=py38h1ba5d50_0
    - curl==7.71.1=hbc83047_1
    - cycler==0.10.0=py38_0
    - cython==0.29.21=py38he6710b0_0
    - cytoolz==0.11.0=py38h7b6447c_0
    - dask-core==2.30.0=py_0
    - dask==2.30.0=py_0
    - dbus==1.13.18=hb2f20db_0
    - decorator==4.4.2=py_0
    - defusedxml==0.6.0=py_0
    - diff-match-patch==20200713=py_0
    - distributed==2.30.1=py38h06a4308_0
    - docutils==0.16=py38_1
    - entrypoints==0.3=py38_0
    - et_xmlfile==1.0.1=py_1001
    - expat==2.2.10=he6710b0_2
    - fastcache==1.1.0=py38h7b6447c_0
    - filelock==3.0.12=py_0
    - flake8==3.8.4=py_0
    - flask==1.1.2=py_0
    - fontconfig==2.13.0=h9420a91_0
    - freetype==2.10.4=h5ab3b9f_0
    - fribidi==1.0.10=h7b6447c_0
    - fsspec==0.8.3=py_0
    - future==0.18.2=py38_1
    - get_terminal_size==1.0.0=haa9412d_0
    - gevent==20.9.0=py38h7b6447c_0
    - glib==2.66.1=h92f7085_0
    - glob2==0.7=py_0
    - gmp==6.1.2=h6c8ec71_1
    - gmpy2==2.0.8=py38hd5f6e3b_3
    - graphite2==1.3.14=h23475e2_0
    - greenlet==0.4.17=py38h7b6447c_0
    - gst-plugins-base==1.14.0=hbbd80ab_1
    - gstreamer==1.14.0=hb31296c_0
    - h5py==2.10.0=py38h7918eee_0
    - harfbuzz==2.4.0=hca77d97_1
    - hdf5==1.10.4=hb1b8bf9_0
    - heapdict==1.0.1=py_0
    - html5lib==1.1=py_0
    - icu==58.2=he6710b0_3
    - idna==2.10=py_0
    - imageio==2.9.0=py_0
    - imagesize==1.2.0=py_0
    - importlib-metadata==2.0.0=py_1
    - importlib_metadata==2.0.0=1
    - iniconfig==1.1.1=py_0
    - intel-openmp==2020.2=254
    - intervaltree==3.1.0=py_0
    - ipykernel==5.3.4=py38h5ca1d4c_0
    - ipython==7.19.0=py38hb070fc8_0
    - ipython_genutils==0.2.0=py38_0
    - ipywidgets==7.5.1=py_1
    - isort==5.6.4=py_0
    - itsdangerous==1.1.0=py_0
    - jbig==2.1=hdba287a_0
    - jdcal==1.4.1=py_0
    - jedi==0.17.1=py38_0
    - jeepney==0.5.0=pyhd3eb1b0_0
    - jinja2==2.11.2=py_0
    - joblib==0.17.0=py_0
    - jpeg==9b=h024ee3a_2
    - json5==0.9.5=py_0
    - jsonschema==3.2.0=py_2
    - jupyter==1.0.0=py38_7
    - jupyter_client==6.1.7=py_0
    - jupyter_console==6.2.0=py_0
    - jupyter_core==4.6.3=py38_0
    - jupyterlab==2.2.6=py_0
    - jupyterlab_pygments==0.1.2=py_0
    - jupyterlab_server==1.2.0=py_0
    - keyring==21.4.0=py38_1
    - kiwisolver==1.3.0=py38h2531618_0
    - krb5==1.18.2=h173b8e3_0
    - lazy-object-proxy==1.4.3=py38h7b6447c_0
    - lcms2==2.11=h396b838_0
    - ld_impl_linux-64==2.33.1=h53a641e_7
    - libarchive==3.4.2=h62408e4_0
    - libcurl==7.71.1=h20c2e04_1
    - libedit==3.1.20191231=h14c3975_1
    - libffi==3.3=he6710b0_2
    - libgcc-ng==9.1.0=hdf63c60_0
    - libgfortran-ng==7.3.0=hdf63c60_0
    - liblief==0.10.1=he6710b0_0
    - libllvm10==10.0.1=hbcb73fb_5
    - libpng==1.6.37=hbc83047_0
    - libsodium==1.0.18=h7b6447c_0
    - libspatialindex==1.9.3=he6710b0_0
    - libssh2==1.9.0=h1ba5d50_1
    - libstdcxx-ng==9.1.0=hdf63c60_0
    - libtiff==4.1.0=h2733197_1
    - libtool==2.4.6=h7b6447c_1005
    - libuuid==1.0.3=h1bed415_2
    - libxcb==1.14=h7b6447c_0
    - libxml2==2.9.10=hb55368b_3
    - libxslt==1.1.34=hc22bd24_0
    - llvmlite==0.34.0=py38h269e1b5_4
    - locket==0.2.0=py38_1
    - lxml==4.6.1=py38hefd8a0e_0
    - lz4-c==1.9.2=heb0550a_3
    - lzo==2.10=h7b6447c_2
    - markupsafe==1.1.1=py38h7b6447c_0
    - matplotlib-base==3.3.2=py38h817c723_0
    - matplotlib==3.3.2=0
    - mccabe==0.6.1=py38_1
    - mistune==0.8.4=py38h7b6447c_1000
    - mkl-service==2.3.0=py38he904b0f_0
    - mkl==2020.2=256
    - mkl_fft==1.2.0=py38h23d657b_0
    - mkl_random==1.1.1=py38h0573a6f_0
    - mock==4.0.2=py_0
    - more-itertools==8.6.0=pyhd3eb1b0_0
    - mpc==1.1.0=h10f8cd9_1
    - mpfr==4.0.2=hb69a4c5_1
    - mpmath==1.1.0=py38_0
    - msgpack-python==1.0.0=py38hfd86e86_1
    - multipledispatch==0.6.0=py38_0
    - navigator-updater==0.2.1=py38_0
    - nbclient==0.5.1=py_0
    - nbconvert==6.0.7=py38_0
    - nbformat==5.0.8=py_0
    - ncurses==6.2=he6710b0_1
    - nest-asyncio==1.4.2=pyhd3eb1b0_0
    - networkx==2.5=py_0
    - nltk==3.5=py_0
    - nose==1.3.7=py38_2
    - notebook==6.1.4=py38_0
    - numba==0.51.2=py38h0573a6f_1
    - numexpr==2.7.1=py38h423224d_0
    - numpy-base==1.19.2=py38hfa32c7d_0
    - numpy==1.19.2=py38h54aff64_0
    - numpydoc==1.1.0=pyhd3eb1b0_1
    - olefile==0.46=py_0
    - openpyxl==3.0.5=py_0
    - openssl==1.1.1h=h7b6447c_0
    - packaging==20.4=py_0
    - pandas==1.1.3=py38he6710b0_0
    - pandoc==2.11=hb0f4dca_0
    - pandocfilters==1.4.3=py38h06a4308_1
    - pango==1.45.3=hd140c19_0
    - parso==0.7.0=py_0
    - partd==1.1.0=py_0
    - patchelf==0.12=he6710b0_0
    - path.py==12.5.0=0
    - path==15.0.0=py38_0
    - pathlib2==2.3.5=py38_0
    - pathtools==0.1.2=py_1
    - patsy==0.5.1=py38_0
    - pcre==8.44=he6710b0_0
    - pep8==1.7.1=py38_0
    - pexpect==4.8.0=py38_0
    - pickleshare==0.7.5=py38_1000
    - pillow==8.0.1=py38he98fc37_0
    - pip==20.2.4=py38h06a4308_0
    - pixman==0.40.0=h7b6447c_0
    - pkginfo==1.6.1=py38h06a4308_0
    - pluggy==0.13.1=py38_0
    - ply==3.11=py38_0
    - prometheus_client==0.8.0=py_0
    - prompt-toolkit==3.0.8=py_0
    - prompt_toolkit==3.0.8=0
    - psutil==5.7.2=py38h7b6447c_0
    - ptyprocess==0.6.0=py38_0
    - py-lief==0.10.1=py38h403a769_0
    - py==1.9.0=py_0
    - pycodestyle==2.6.0=py_0
    - pycosat==0.6.3=py38h7b6447c_1
    - pycparser==2.20=py_2
    - pycurl==7.43.0.6=py38h1ba5d50_0
    - pydocstyle==5.1.1=py_0
    - pyflakes==2.2.0=py_0
    - pygments==2.7.2=pyhd3eb1b0_0
    - pylint==2.6.0=py38_0
    - pyodbc==4.0.30=py38he6710b0_0
    - pyopenssl==19.1.0=py_1
    - pyparsing==2.4.7=py_0
    - pyqt==5.9.2=py38h05f1152_4
    - pyrsistent==0.17.3=py38h7b6447c_0
    - pysocks==1.7.1=py38_0
    - pytables==3.6.1=py38h9fd0a39_0
    - pytest==6.1.1=py38_0
    - python-dateutil==2.8.1=py_0
    - python-jsonrpc-server==0.4.0=py_0
    - python-language-server==0.35.1=py_0
    - python-libarchive-c==2.9=py_0
    - python==3.8.5=h7579374_1
    - pytz==2020.1=py_0
    - pywavelets==1.1.1=py38h7b6447c_2
    - pyxdg==0.27=pyhd3eb1b0_0
    - pyyaml==5.3.1=py38h7b6447c_1
    - pyzmq==19.0.2=py38he6710b0_1
    - qdarkstyle==2.8.1=py_0
    - qt==5.9.7=h5867ecd_1
    - qtawesome==1.0.1=py_0
    - qtconsole==4.7.7=py_0
    - qtpy==1.9.0=py_0
    - readline==8.0=h7b6447c_0
    - regex==2020.10.15=py38h7b6447c_0
    - requests==2.24.0=py_0
    - ripgrep==12.1.1=0
    - rope==0.18.0=py_0
    - rtree==0.9.4=py38_1
    - ruamel_yaml==0.15.87=py38h7b6447c_1
    - scikit-image==0.17.2=py38hdf5156a_0
    - scikit-learn==0.23.2=py38h0573a6f_0
    - scipy==1.5.2=py38h0b6359f_0
    - seaborn==0.11.0=py_0
    - secretstorage==3.1.2=py38_0
    - send2trash==1.5.0=py38_0
    - setuptools==50.3.1=py38h06a4308_1
    - simplegeneric==0.8.1=py38_2
    - singledispatch==3.4.0.3=py_1001
    - sip==4.19.13=py38he6710b0_0
    - six==1.15.0=py38h06a4308_0
    - snowballstemmer==2.0.0=py_0
    - sortedcollections==1.2.1=py_0
    - sortedcontainers==2.2.2=py_0
    - soupsieve==2.0.1=py_0
    - sphinx==3.2.1=py_0
    - sphinxcontrib-applehelp==1.0.2=py_0
    - sphinxcontrib-devhelp==1.0.2=py_0
    - sphinxcontrib-htmlhelp==1.0.3=py_0
    - sphinxcontrib-jsmath==1.0.1=py_0
    - sphinxcontrib-qthelp==1.0.3=py_0
    - sphinxcontrib-serializinghtml==1.1.4=py_0
    - sphinxcontrib-websupport==1.2.4=py_0
    - sphinxcontrib==1.0=py38_1
    - spyder-kernels==1.9.4=py38_0
    - spyder==4.1.5=py38_0
    - sqlalchemy==1.3.20=py38h7b6447c_0
    - sqlite==3.33.0=h62c20be_0
    - statsmodels==0.12.0=py38h7b6447c_0
    - sympy==1.6.2=py38h06a4308_1
    - tbb==2020.3=hfd86e86_0
    - tblib==1.7.0=py_0
    - terminado==0.9.1=py38_0
    - testpath==0.4.4=py_0
    - threadpoolctl==2.1.0=pyh5ca1d4c_0
    - tifffile==2020.10.1=py38hdd07704_2
    - tk==8.6.10=hbc83047_0
    - toml==0.10.1=py_0
    - toolz==0.11.1=py_0
    - tornado==6.0.4=py38h7b6447c_1
    - tqdm==4.50.2=py_0
    - traitlets==5.0.5=py_0
    - typing_extensions==3.7.4.3=py_0
    - ujson==4.0.1=py38he6710b0_0
    - unicodecsv==0.14.1=py38_0
    - unixodbc==2.3.9=h7b6447c_0
    - urllib3==1.25.11=py_0
    - watchdog==0.10.3=py38_0
    - wcwidth==0.2.5=py_0
    - webencodings==0.5.1=py38_1
    - werkzeug==1.0.1=py_0
    - wheel==0.35.1=py_0
    - widgetsnbextension==3.5.1=py38_0
    - wrapt==1.11.2=py38h7b6447c_0
    - wurlitzer==2.0.1=py38_0
    - xlrd==1.2.0=py_0
    - xlsxwriter==1.3.7=py_0
    - xlwt==1.3.0=py38_0
    - xmltodict==0.12.0=py_0
    - xz==5.2.5=h7b6447c_0
    - yaml==0.2.5=h7b6447c_0
    - yapf==0.30.0=py_0
    - zeromq==4.3.3=he6710b0_3
    - zict==2.0.0=py_0
    - zipp==3.4.0=pyhd3eb1b0_0
    - zlib==1.2.11=h7b6447c_3
    - zope.event==4.5.0=py38_0
    - zope.interface==5.1.2=py38h7b6447c_0
    - zope==1.0=py38_1
    - zstd==1.4.5=h9ceee32_0


The following NEW packages will be INSTALLED:

  _ipyw_jlab_nb_ext~ pkgs/main/linux-64::_ipyw_jlab_nb_ext_conf-0.1.0-py38_0
  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  alabaster          pkgs/main/noarch::alabaster-0.7.12-py_0
  anaconda           pkgs/main/linux-64::anaconda-2020.11-py38_0
  anaconda-client    pkgs/main/linux-64::anaconda-client-1.7.2-py38_0
  anaconda-navigator pkgs/main/linux-64::anaconda-navigator-1.10.0-py38_0
  anaconda-project   pkgs/main/noarch::anaconda-project-0.8.4-py_0
  argh               pkgs/main/linux-64::argh-0.26.2-py38_0
  argon2-cffi        pkgs/main/linux-64::argon2-cffi-20.1.0-py38h7b6447c_1
  asn1crypto         pkgs/main/noarch::asn1crypto-1.4.0-py_0
  astroid            pkgs/main/linux-64::astroid-2.4.2-py38_0
  astropy            pkgs/main/linux-64::astropy-4.0.2-py38h7b6447c_0
  async_generator    pkgs/main/noarch::async_generator-1.10-py_0
  atomicwrites       pkgs/main/noarch::atomicwrites-1.4.0-py_0
  attrs              pkgs/main/noarch::attrs-20.3.0-pyhd3eb1b0_0
  autopep8           pkgs/main/noarch::autopep8-1.5.4-py_0
  babel              pkgs/main/noarch::babel-2.8.1-pyhd3eb1b0_0
  backcall           pkgs/main/noarch::backcall-0.2.0-py_0
  backports          pkgs/main/noarch::backports-1.0-py_2
  backports.functoo~ pkgs/main/noarch::backports.functools_lru_cache-1.6.1-py_0
  backports.shutil_~ pkgs/main/linux-64::backports.shutil_get_terminal_size-1.0.0-py38_2
  backports.tempfile pkgs/main/noarch::backports.tempfile-1.0-py_1
  backports.weakref  pkgs/main/noarch::backports.weakref-1.0.post1-py_1
  beautifulsoup4     pkgs/main/noarch::beautifulsoup4-4.9.3-pyhb0f4dca_0
  bitarray           pkgs/main/linux-64::bitarray-1.6.1-py38h27cfd23_0
  bkcharts           pkgs/main/linux-64::bkcharts-0.2-py38_0
  blas               pkgs/main/linux-64::blas-1.0-mkl
  bleach             pkgs/main/noarch::bleach-3.2.1-py_0
  blosc              pkgs/main/linux-64::blosc-1.20.1-hd408876_0
  bokeh              pkgs/main/linux-64::bokeh-2.2.3-py38_0
  boto               pkgs/main/linux-64::boto-2.49.0-py38_0
  bottleneck         pkgs/main/linux-64::bottleneck-1.3.2-py38heb32a55_1
  brotlipy           pkgs/main/linux-64::brotlipy-0.7.0-py38h7b6447c_1000
  bzip2              pkgs/main/linux-64::bzip2-1.0.8-h7b6447c_0
  ca-certificates    pkgs/main/linux-64::ca-certificates-2020.10.14-0
  cairo              pkgs/main/linux-64::cairo-1.14.12-h8948797_3
  certifi            pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3
  cffi               pkgs/main/linux-64::cffi-1.14.3-py38he30daa8_0
  chardet            pkgs/main/linux-64::chardet-3.0.4-py38_1003
  click              pkgs/main/noarch::click-7.1.2-py_0
  cloudpickle        pkgs/main/noarch::cloudpickle-1.6.0-py_0
  clyent             pkgs/main/linux-64::clyent-1.2.2-py38_1
  colorama           pkgs/main/noarch::colorama-0.4.4-py_0
  conda              pkgs/main/linux-64::conda-4.9.2-py38h06a4308_0
  conda-build        pkgs/main/linux-64::conda-build-3.20.5-py38_1
  conda-env          pkgs/main/linux-64::conda-env-2.6.0-1
  conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.2-py38h03888b9_0
  conda-verify       pkgs/main/noarch::conda-verify-3.4.2-py_1
  contextlib2        pkgs/main/noarch::contextlib2-0.6.0.post1-py_0
  cryptography       pkgs/main/linux-64::cryptography-3.1.1-py38h1ba5d50_0
  curl               pkgs/main/linux-64::curl-7.71.1-hbc83047_1
  cycler             pkgs/main/linux-64::cycler-0.10.0-py38_0
  cython             pkgs/main/linux-64::cython-0.29.21-py38he6710b0_0
  cytoolz            pkgs/main/linux-64::cytoolz-0.11.0-py38h7b6447c_0
  dask               pkgs/main/noarch::dask-2.30.0-py_0
  dask-core          pkgs/main/noarch::dask-core-2.30.0-py_0
  dbus               pkgs/main/linux-64::dbus-1.13.18-hb2f20db_0
  decorator          pkgs/main/noarch::decorator-4.4.2-py_0
  defusedxml         pkgs/main/noarch::defusedxml-0.6.0-py_0
  diff-match-patch   pkgs/main/noarch::diff-match-patch-20200713-py_0
  distributed        pkgs/main/linux-64::distributed-2.30.1-py38h06a4308_0
  docutils           pkgs/main/linux-64::docutils-0.16-py38_1
  entrypoints        pkgs/main/linux-64::entrypoints-0.3-py38_0
  et_xmlfile         pkgs/main/noarch::et_xmlfile-1.0.1-py_1001
  expat              pkgs/main/linux-64::expat-2.2.10-he6710b0_2
  fastcache          pkgs/main/linux-64::fastcache-1.1.0-py38h7b6447c_0
  filelock           pkgs/main/noarch::filelock-3.0.12-py_0
  flake8             pkgs/main/noarch::flake8-3.8.4-py_0
  flask              pkgs/main/noarch::flask-1.1.2-py_0
  fontconfig         pkgs/main/linux-64::fontconfig-2.13.0-h9420a91_0
  freetype           pkgs/main/linux-64::freetype-2.10.4-h5ab3b9f_0
  fribidi            pkgs/main/linux-64::fribidi-1.0.10-h7b6447c_0
  fsspec             pkgs/main/noarch::fsspec-0.8.3-py_0
  future             pkgs/main/linux-64::future-0.18.2-py38_1
  get_terminal_size  pkgs/main/linux-64::get_terminal_size-1.0.0-haa9412d_0
  gevent             pkgs/main/linux-64::gevent-20.9.0-py38h7b6447c_0
  glib               pkgs/main/linux-64::glib-2.66.1-h92f7085_0
  glob2              pkgs/main/noarch::glob2-0.7-py_0
  gmp                pkgs/main/linux-64::gmp-6.1.2-h6c8ec71_1
  gmpy2              pkgs/main/linux-64::gmpy2-2.0.8-py38hd5f6e3b_3
  graphite2          pkgs/main/linux-64::graphite2-1.3.14-h23475e2_0
  greenlet           pkgs/main/linux-64::greenlet-0.4.17-py38h7b6447c_0
  gst-plugins-base   pkgs/main/linux-64::gst-plugins-base-1.14.0-hbbd80ab_1
  gstreamer          pkgs/main/linux-64::gstreamer-1.14.0-hb31296c_0
  h5py               pkgs/main/linux-64::h5py-2.10.0-py38h7918eee_0
  harfbuzz           pkgs/main/linux-64::harfbuzz-2.4.0-hca77d97_1
  hdf5               pkgs/main/linux-64::hdf5-1.10.4-hb1b8bf9_0
  heapdict           pkgs/main/noarch::heapdict-1.0.1-py_0
  html5lib           pkgs/main/noarch::html5lib-1.1-py_0
  icu                pkgs/main/linux-64::icu-58.2-he6710b0_3
  idna               pkgs/main/noarch::idna-2.10-py_0
  imageio            pkgs/main/noarch::imageio-2.9.0-py_0
  imagesize          pkgs/main/noarch::imagesize-1.2.0-py_0
  importlib-metadata pkgs/main/noarch::importlib-metadata-2.0.0-py_1
  importlib_metadata pkgs/main/noarch::importlib_metadata-2.0.0-1
  iniconfig          pkgs/main/noarch::iniconfig-1.1.1-py_0
  intel-openmp       pkgs/main/linux-64::intel-openmp-2020.2-254
  intervaltree       pkgs/main/noarch::intervaltree-3.1.0-py_0
  ipykernel          pkgs/main/linux-64::ipykernel-5.3.4-py38h5ca1d4c_0
  ipython            pkgs/main/linux-64::ipython-7.19.0-py38hb070fc8_0
  ipython_genutils   pkgs/main/linux-64::ipython_genutils-0.2.0-py38_0
  ipywidgets         pkgs/main/noarch::ipywidgets-7.5.1-py_1
  isort              pkgs/main/noarch::isort-5.6.4-py_0
  itsdangerous       pkgs/main/noarch::itsdangerous-1.1.0-py_0
  jbig               pkgs/main/linux-64::jbig-2.1-hdba287a_0
  jdcal              pkgs/main/noarch::jdcal-1.4.1-py_0
  jedi               pkgs/main/linux-64::jedi-0.17.1-py38_0
  jeepney            pkgs/main/noarch::jeepney-0.5.0-pyhd3eb1b0_0
  jinja2             pkgs/main/noarch::jinja2-2.11.2-py_0
  joblib             pkgs/main/noarch::joblib-0.17.0-py_0
  jpeg               pkgs/main/linux-64::jpeg-9b-h024ee3a_2
  json5              pkgs/main/noarch::json5-0.9.5-py_0
  jsonschema         pkgs/main/noarch::jsonschema-3.2.0-py_2
  jupyter            pkgs/main/linux-64::jupyter-1.0.0-py38_7
  jupyter_client     pkgs/main/noarch::jupyter_client-6.1.7-py_0
  jupyter_console    pkgs/main/noarch::jupyter_console-6.2.0-py_0
  jupyter_core       pkgs/main/linux-64::jupyter_core-4.6.3-py38_0
  jupyterlab         pkgs/main/noarch::jupyterlab-2.2.6-py_0
  jupyterlab_pygmen~ pkgs/main/noarch::jupyterlab_pygments-0.1.2-py_0
  jupyterlab_server  pkgs/main/noarch::jupyterlab_server-1.2.0-py_0
  keyring            pkgs/main/linux-64::keyring-21.4.0-py38_1
  kiwisolver         pkgs/main/linux-64::kiwisolver-1.3.0-py38h2531618_0
  krb5               pkgs/main/linux-64::krb5-1.18.2-h173b8e3_0
  lazy-object-proxy  pkgs/main/linux-64::lazy-object-proxy-1.4.3-py38h7b6447c_0
  lcms2              pkgs/main/linux-64::lcms2-2.11-h396b838_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.33.1-h53a641e_7
  libarchive         pkgs/main/linux-64::libarchive-3.4.2-h62408e4_0
  libcurl            pkgs/main/linux-64::libcurl-7.71.1-h20c2e04_1
  libedit            pkgs/main/linux-64::libedit-3.1.20191231-h14c3975_1
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.1.0-hdf63c60_0
  libgfortran-ng     pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
  liblief            pkgs/main/linux-64::liblief-0.10.1-he6710b0_0
  libllvm10          pkgs/main/linux-64::libllvm10-10.0.1-hbcb73fb_5
  libpng             pkgs/main/linux-64::libpng-1.6.37-hbc83047_0
  libsodium          pkgs/main/linux-64::libsodium-1.0.18-h7b6447c_0
  libspatialindex    pkgs/main/linux-64::libspatialindex-1.9.3-he6710b0_0
  libssh2            pkgs/main/linux-64::libssh2-1.9.0-h1ba5d50_1
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
  libtiff            pkgs/main/linux-64::libtiff-4.1.0-h2733197_1
  libtool            pkgs/main/linux-64::libtool-2.4.6-h7b6447c_1005
  libuuid            pkgs/main/linux-64::libuuid-1.0.3-h1bed415_2
  libxcb             pkgs/main/linux-64::libxcb-1.14-h7b6447c_0
  libxml2            pkgs/main/linux-64::libxml2-2.9.10-hb55368b_3
  libxslt            pkgs/main/linux-64::libxslt-1.1.34-hc22bd24_0
  llvmlite           pkgs/main/linux-64::llvmlite-0.34.0-py38h269e1b5_4
  locket             pkgs/main/linux-64::locket-0.2.0-py38_1
  lxml               pkgs/main/linux-64::lxml-4.6.1-py38hefd8a0e_0
  lz4-c              pkgs/main/linux-64::lz4-c-1.9.2-heb0550a_3
  lzo                pkgs/main/linux-64::lzo-2.10-h7b6447c_2
  markupsafe         pkgs/main/linux-64::markupsafe-1.1.1-py38h7b6447c_0
  matplotlib         pkgs/main/linux-64::matplotlib-3.3.2-0
  matplotlib-base    pkgs/main/linux-64::matplotlib-base-3.3.2-py38h817c723_0
  mccabe             pkgs/main/linux-64::mccabe-0.6.1-py38_1
  mistune            pkgs/main/linux-64::mistune-0.8.4-py38h7b6447c_1000
  mkl                pkgs/main/linux-64::mkl-2020.2-256
  mkl-service        pkgs/main/linux-64::mkl-service-2.3.0-py38he904b0f_0
  mkl_fft            pkgs/main/linux-64::mkl_fft-1.2.0-py38h23d657b_0
  mkl_random         pkgs/main/linux-64::mkl_random-1.1.1-py38h0573a6f_0
  mock               pkgs/main/noarch::mock-4.0.2-py_0
  more-itertools     pkgs/main/noarch::more-itertools-8.6.0-pyhd3eb1b0_0
  mpc                pkgs/main/linux-64::mpc-1.1.0-h10f8cd9_1
  mpfr               pkgs/main/linux-64::mpfr-4.0.2-hb69a4c5_1
  mpmath             pkgs/main/linux-64::mpmath-1.1.0-py38_0
  msgpack-python     pkgs/main/linux-64::msgpack-python-1.0.0-py38hfd86e86_1
  multipledispatch   pkgs/main/linux-64::multipledispatch-0.6.0-py38_0
  navigator-updater  pkgs/main/linux-64::navigator-updater-0.2.1-py38_0
  nbclient           pkgs/main/noarch::nbclient-0.5.1-py_0
  nbconvert          pkgs/main/linux-64::nbconvert-6.0.7-py38_0
  nbformat           pkgs/main/noarch::nbformat-5.0.8-py_0
  ncurses            pkgs/main/linux-64::ncurses-6.2-he6710b0_1
  nest-asyncio       pkgs/main/noarch::nest-asyncio-1.4.2-pyhd3eb1b0_0
  networkx           pkgs/main/noarch::networkx-2.5-py_0
  nltk               pkgs/main/noarch::nltk-3.5-py_0
  nose               pkgs/main/linux-64::nose-1.3.7-py38_2
  notebook           pkgs/main/linux-64::notebook-6.1.4-py38_0
  numba              pkgs/main/linux-64::numba-0.51.2-py38h0573a6f_1
  numexpr            pkgs/main/linux-64::numexpr-2.7.1-py38h423224d_0
  numpy              pkgs/main/linux-64::numpy-1.19.2-py38h54aff64_0
  numpy-base         pkgs/main/linux-64::numpy-base-1.19.2-py38hfa32c7d_0
  numpydoc           pkgs/main/noarch::numpydoc-1.1.0-pyhd3eb1b0_1
  olefile            pkgs/main/noarch::olefile-0.46-py_0
  openpyxl           pkgs/main/noarch::openpyxl-3.0.5-py_0
  openssl            pkgs/main/linux-64::openssl-1.1.1h-h7b6447c_0
  packaging          pkgs/main/noarch::packaging-20.4-py_0
  pandas             pkgs/main/linux-64::pandas-1.1.3-py38he6710b0_0
  pandoc             pkgs/main/linux-64::pandoc-2.11-hb0f4dca_0
  pandocfilters      pkgs/main/linux-64::pandocfilters-1.4.3-py38h06a4308_1
  pango              pkgs/main/linux-64::pango-1.45.3-hd140c19_0
  parso              pkgs/main/noarch::parso-0.7.0-py_0
  partd              pkgs/main/noarch::partd-1.1.0-py_0
  patchelf           pkgs/main/linux-64::patchelf-0.12-he6710b0_0
  path               pkgs/main/linux-64::path-15.0.0-py38_0
  path.py            pkgs/main/noarch::path.py-12.5.0-0
  pathlib2           pkgs/main/linux-64::pathlib2-2.3.5-py38_0
  pathtools          pkgs/main/noarch::pathtools-0.1.2-py_1
  patsy              pkgs/main/linux-64::patsy-0.5.1-py38_0
  pcre               pkgs/main/linux-64::pcre-8.44-he6710b0_0
  pep8               pkgs/main/linux-64::pep8-1.7.1-py38_0
  pexpect            pkgs/main/linux-64::pexpect-4.8.0-py38_0
  pickleshare        pkgs/main/linux-64::pickleshare-0.7.5-py38_1000
  pillow             pkgs/main/linux-64::pillow-8.0.1-py38he98fc37_0
  pip                pkgs/main/linux-64::pip-20.2.4-py38h06a4308_0
  pixman             pkgs/main/linux-64::pixman-0.40.0-h7b6447c_0
  pkginfo            pkgs/main/linux-64::pkginfo-1.6.1-py38h06a4308_0
  pluggy             pkgs/main/linux-64::pluggy-0.13.1-py38_0
  ply                pkgs/main/linux-64::ply-3.11-py38_0
  prometheus_client  pkgs/main/noarch::prometheus_client-0.8.0-py_0
  prompt-toolkit     pkgs/main/noarch::prompt-toolkit-3.0.8-py_0
  prompt_toolkit     pkgs/main/noarch::prompt_toolkit-3.0.8-0
  psutil             pkgs/main/linux-64::psutil-5.7.2-py38h7b6447c_0
  ptyprocess         pkgs/main/linux-64::ptyprocess-0.6.0-py38_0
  py                 pkgs/main/noarch::py-1.9.0-py_0
  py-lief            pkgs/main/linux-64::py-lief-0.10.1-py38h403a769_0
  pycodestyle        pkgs/main/noarch::pycodestyle-2.6.0-py_0
  pycosat            pkgs/main/linux-64::pycosat-0.6.3-py38h7b6447c_1
  pycparser          pkgs/main/noarch::pycparser-2.20-py_2
  pycurl             pkgs/main/linux-64::pycurl-7.43.0.6-py38h1ba5d50_0
  pydocstyle         pkgs/main/noarch::pydocstyle-5.1.1-py_0
  pyflakes           pkgs/main/noarch::pyflakes-2.2.0-py_0
  pygments           pkgs/main/noarch::pygments-2.7.2-pyhd3eb1b0_0
  pylint             pkgs/main/linux-64::pylint-2.6.0-py38_0
  pyodbc             pkgs/main/linux-64::pyodbc-4.0.30-py38he6710b0_0
  pyopenssl          pkgs/main/noarch::pyopenssl-19.1.0-py_1
  pyparsing          pkgs/main/noarch::pyparsing-2.4.7-py_0
  pyqt               pkgs/main/linux-64::pyqt-5.9.2-py38h05f1152_4
  pyrsistent         pkgs/main/linux-64::pyrsistent-0.17.3-py38h7b6447c_0
  pysocks            pkgs/main/linux-64::pysocks-1.7.1-py38_0
  pytables           pkgs/main/linux-64::pytables-3.6.1-py38h9fd0a39_0
  pytest             pkgs/main/linux-64::pytest-6.1.1-py38_0
  python             pkgs/main/linux-64::python-3.8.5-h7579374_1
  python-dateutil    pkgs/main/noarch::python-dateutil-2.8.1-py_0
  python-jsonrpc-se~ pkgs/main/noarch::python-jsonrpc-server-0.4.0-py_0
  python-language-s~ pkgs/main/noarch::python-language-server-0.35.1-py_0
  python-libarchive~ pkgs/main/noarch::python-libarchive-c-2.9-py_0
  pytz               pkgs/main/noarch::pytz-2020.1-py_0
  pywavelets         pkgs/main/linux-64::pywavelets-1.1.1-py38h7b6447c_2
  pyxdg              pkgs/main/noarch::pyxdg-0.27-pyhd3eb1b0_0
  pyyaml             pkgs/main/linux-64::pyyaml-5.3.1-py38h7b6447c_1
  pyzmq              pkgs/main/linux-64::pyzmq-19.0.2-py38he6710b0_1
  qdarkstyle         pkgs/main/noarch::qdarkstyle-2.8.1-py_0
  qt                 pkgs/main/linux-64::qt-5.9.7-h5867ecd_1
  qtawesome          pkgs/main/noarch::qtawesome-1.0.1-py_0
  qtconsole          pkgs/main/noarch::qtconsole-4.7.7-py_0
  qtpy               pkgs/main/noarch::qtpy-1.9.0-py_0
  readline           pkgs/main/linux-64::readline-8.0-h7b6447c_0
  regex              pkgs/main/linux-64::regex-2020.10.15-py38h7b6447c_0
  requests           pkgs/main/noarch::requests-2.24.0-py_0
  ripgrep            pkgs/main/linux-64::ripgrep-12.1.1-0
  rope               pkgs/main/noarch::rope-0.18.0-py_0
  rtree              pkgs/main/linux-64::rtree-0.9.4-py38_1
  ruamel_yaml        pkgs/main/linux-64::ruamel_yaml-0.15.87-py38h7b6447c_1
  scikit-image       pkgs/main/linux-64::scikit-image-0.17.2-py38hdf5156a_0
  scikit-learn       pkgs/main/linux-64::scikit-learn-0.23.2-py38h0573a6f_0
  scipy              pkgs/main/linux-64::scipy-1.5.2-py38h0b6359f_0
  seaborn            pkgs/main/noarch::seaborn-0.11.0-py_0
  secretstorage      pkgs/main/linux-64::secretstorage-3.1.2-py38_0
  send2trash         pkgs/main/linux-64::send2trash-1.5.0-py38_0
  setuptools         pkgs/main/linux-64::setuptools-50.3.1-py38h06a4308_1
  simplegeneric      pkgs/main/linux-64::simplegeneric-0.8.1-py38_2
  singledispatch     pkgs/main/noarch::singledispatch-3.4.0.3-py_1001
  sip                pkgs/main/linux-64::sip-4.19.13-py38he6710b0_0
  six                pkgs/main/linux-64::six-1.15.0-py38h06a4308_0
  snowballstemmer    pkgs/main/noarch::snowballstemmer-2.0.0-py_0
  sortedcollections  pkgs/main/noarch::sortedcollections-1.2.1-py_0
  sortedcontainers   pkgs/main/noarch::sortedcontainers-2.2.2-py_0
  soupsieve          pkgs/main/noarch::soupsieve-2.0.1-py_0
  sphinx             pkgs/main/noarch::sphinx-3.2.1-py_0
  sphinxcontrib      pkgs/main/linux-64::sphinxcontrib-1.0-py38_1
  sphinxcontrib-app~ pkgs/main/noarch::sphinxcontrib-applehelp-1.0.2-py_0
  sphinxcontrib-dev~ pkgs/main/noarch::sphinxcontrib-devhelp-1.0.2-py_0
  sphinxcontrib-htm~ pkgs/main/noarch::sphinxcontrib-htmlhelp-1.0.3-py_0
  sphinxcontrib-jsm~ pkgs/main/noarch::sphinxcontrib-jsmath-1.0.1-py_0
  sphinxcontrib-qth~ pkgs/main/noarch::sphinxcontrib-qthelp-1.0.3-py_0
  sphinxcontrib-ser~ pkgs/main/noarch::sphinxcontrib-serializinghtml-1.1.4-py_0
  sphinxcontrib-web~ pkgs/main/noarch::sphinxcontrib-websupport-1.2.4-py_0
  spyder             pkgs/main/linux-64::spyder-4.1.5-py38_0
  spyder-kernels     pkgs/main/linux-64::spyder-kernels-1.9.4-py38_0
  sqlalchemy         pkgs/main/linux-64::sqlalchemy-1.3.20-py38h7b6447c_0
  sqlite             pkgs/main/linux-64::sqlite-3.33.0-h62c20be_0
  statsmodels        pkgs/main/linux-64::statsmodels-0.12.0-py38h7b6447c_0
  sympy              pkgs/main/linux-64::sympy-1.6.2-py38h06a4308_1
  tbb                pkgs/main/linux-64::tbb-2020.3-hfd86e86_0
  tblib              pkgs/main/noarch::tblib-1.7.0-py_0
  terminado          pkgs/main/linux-64::terminado-0.9.1-py38_0
  testpath           pkgs/main/noarch::testpath-0.4.4-py_0
  threadpoolctl      pkgs/main/noarch::threadpoolctl-2.1.0-pyh5ca1d4c_0
  tifffile           pkgs/main/linux-64::tifffile-2020.10.1-py38hdd07704_2
  tk                 pkgs/main/linux-64::tk-8.6.10-hbc83047_0
  toml               pkgs/main/noarch::toml-0.10.1-py_0
  toolz              pkgs/main/noarch::toolz-0.11.1-py_0
  tornado            pkgs/main/linux-64::tornado-6.0.4-py38h7b6447c_1
  tqdm               pkgs/main/noarch::tqdm-4.50.2-py_0
  traitlets          pkgs/main/noarch::traitlets-5.0.5-py_0
  typing_extensions  pkgs/main/noarch::typing_extensions-3.7.4.3-py_0
  ujson              pkgs/main/linux-64::ujson-4.0.1-py38he6710b0_0
  unicodecsv         pkgs/main/linux-64::unicodecsv-0.14.1-py38_0
  unixodbc           pkgs/main/linux-64::unixodbc-2.3.9-h7b6447c_0
  urllib3            pkgs/main/noarch::urllib3-1.25.11-py_0
  watchdog           pkgs/main/linux-64::watchdog-0.10.3-py38_0
  wcwidth            pkgs/main/noarch::wcwidth-0.2.5-py_0
  webencodings       pkgs/main/linux-64::webencodings-0.5.1-py38_1
  werkzeug           pkgs/main/noarch::werkzeug-1.0.1-py_0
  wheel              pkgs/main/noarch::wheel-0.35.1-py_0
  widgetsnbextension pkgs/main/linux-64::widgetsnbextension-3.5.1-py38_0
  wrapt              pkgs/main/linux-64::wrapt-1.11.2-py38h7b6447c_0
  wurlitzer          pkgs/main/linux-64::wurlitzer-2.0.1-py38_0
  xlrd               pkgs/main/noarch::xlrd-1.2.0-py_0
  xlsxwriter         pkgs/main/noarch::xlsxwriter-1.3.7-py_0
  xlwt               pkgs/main/linux-64::xlwt-1.3.0-py38_0
  xmltodict          pkgs/main/noarch::xmltodict-0.12.0-py_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
  yaml               pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
  yapf               pkgs/main/noarch::yapf-0.30.0-py_0
  zeromq             pkgs/main/linux-64::zeromq-4.3.3-he6710b0_3
  zict               pkgs/main/noarch::zict-2.0.0-py_0
  zipp               pkgs/main/noarch::zipp-3.4.0-pyhd3eb1b0_0
  zlib               pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
  zope               pkgs/main/linux-64::zope-1.0-py38_1
  zope.event         pkgs/main/linux-64::zope.event-4.5.0-py38_0
  zope.interface     pkgs/main/linux-64::zope.interface-5.1.2-py38h7b6447c_0
  zstd               pkgs/main/linux-64::zstd-1.4.5-h9ceee32_0


Preparing transaction: done
Executing transaction: done
installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
no change     /home/soloelectronicos/anaconda3/condabin/conda
no change     /home/soloelectronicos/anaconda3/bin/conda
no change     /home/soloelectronicos/anaconda3/bin/conda-env
no change     /home/soloelectronicos/anaconda3/bin/activate
no change     /home/soloelectronicos/anaconda3/bin/deactivate
no change     /home/soloelectronicos/anaconda3/etc/profile.d/conda.sh
no change     /home/soloelectronicos/anaconda3/etc/fish/conf.d/conda.fish
no change     /home/soloelectronicos/anaconda3/shell/condabin/Conda.psm1
no change     /home/soloelectronicos/anaconda3/shell/condabin/conda-hook.ps1
no change     /home/soloelectronicos/anaconda3/lib/python3.8/site-packages/xontrib/conda.xsh
no change     /home/soloelectronicos/anaconda3/etc/profile.d/conda.csh
modified      /home/soloelectronicos/.bashrc

==> For changes to take effect, close and re-open your current shell. <==

If you'd prefer that conda's base environment not be activated on startup, 
   set the auto_activate_base parameter to false: 

conda config --set auto_activate_base false

Thank you for installing Anaconda3!

===========================================================================

Working with Python and Jupyter notebooks is a breeze with PyCharm Pro,
designed to be used with Anaconda. Download now and have the best data
tools at your fingertips.

PyCharm Pro for Anaconda is available at: https://www.anaconda.com/pycharm

[email protected]:~/Descargas$ source ~/.bashrc
(base) [email protected]:~/Descargas$ conda info

     active environment : base
    active env location : /home/soloelectronicos/anaconda3
            shell level : 1
       user config file : /home/soloelectronicos/.condarc
 populated config files : 
          conda version : 4.9.2
    conda-build version : 3.20.5
         python version : 3.8.5.final.0
       virtual packages : __glibc=2.31=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/soloelectronicos/anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/soloelectronicos/anaconda3/pkgs
                          /home/soloelectronicos/.conda/pkgs
       envs directories : /home/soloelectronicos/anaconda3/envs
                          /home/soloelectronicos/.conda/envs
               platform : linux-64
             user-agent : conda/4.9.2 requests/2.24.0 CPython/3.8.5 Linux/5.11.0-27-generic ubuntu/20.04.3 glibc/2.31
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False

(base) [email protected]:~/Descargas$ conda update conda
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - conda


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    backports.functools_lru_cache-1.6.4|     pyhd3eb1b0_0           9 KB
    backports.tempfile-1.0     |     pyhd3eb1b0_1          11 KB
    conda-4.10.3               |   py38h06a4308_0         2.9 MB
    conda-package-handling-1.7.3|   py38h27cfd23_1         884 KB
    ------------------------------------------------------------
                                           Total:         3.8 MB

The following packages will be UPDATED:

  backports.functoo~                             1.6.1-py_0 --> 1.6.4-pyhd3eb1b0_0
  conda                                4.9.2-py38h06a4308_0 --> 4.10.3-py38h06a4308_0
  conda-package-han~                   1.7.2-py38h03888b9_0 --> 1.7.3-py38h27cfd23_1

The following packages will be DOWNGRADED:

  backports.tempfile                               1.0-py_1 --> 1.0-pyhd3eb1b0_1


Proceed ([y]/n)? y


Downloading and Extracting Packages
backports.tempfile-1 | 11 KB     | ##################################### | 100% 
backports.functools_ | 9 KB      | ##################################### | 100% 
conda-4.10.3         | 2.9 MB    | ##################################### | 100% 
conda-package-handli | 884 KB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) [email protected]:~/Descargas$ conda update anaconda
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3

  added / updated specs:
    - anaconda


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _anaconda_depends-2020.07  |           py38_0           6 KB
    _openmp_mutex-4.5          |            1_gnu          22 KB
    alabaster-0.7.12           |     pyhd3eb1b0_0          16 KB
    anaconda-custom            |           py38_1          35 KB
    anaconda-client-1.8.0      |   py38h06a4308_0         152 KB
    anaconda-project-0.10.1    |     pyhd3eb1b0_0         218 KB
    anyio-2.2.0                |   py38h06a4308_1         125 KB
    appdirs-1.4.4              |             py_0          13 KB
    argon2-cffi-20.1.0         |   py38h27cfd23_1          46 KB
    astroid-2.6.6              |   py38h06a4308_0         309 KB
    astropy-4.3.1              |   py38h09021b7_0         6.4 MB
    async_generator-1.10       |     pyhd3eb1b0_0          23 KB
    attrs-21.2.0               |     pyhd3eb1b0_0          46 KB
    babel-2.9.1                |     pyhd3eb1b0_0         5.5 MB
    backcall-0.2.0             |     pyhd3eb1b0_0          13 KB
    backports-1.0              |     pyhd3eb1b0_2         210 KB
    backports.shutil_get_terminal_size-1.0.0|     pyhd3eb1b0_3          10 KB
    beautifulsoup4-4.9.3       |     pyha847dfd_0          86 KB
    bitarray-2.3.0             |   py38h7f8727e_1         139 KB
    black-19.10b0              |             py_0          86 KB
    bleach-4.0.0               |     pyhd3eb1b0_0         113 KB
    blosc-1.21.0               |       h8c45485_0          64 KB
    bokeh-2.3.3                |   py38h06a4308_0         5.9 MB
    brotli-1.0.9               |       he6710b0_2         375 KB
    brotlipy-0.7.0             |py38h27cfd23_1003         323 KB
    c-ares-1.17.1              |       h27cfd23_0         108 KB
    ca-certificates-2021.7.5   |       h06a4308_1         113 KB
    cairo-1.16.0               |       hf32fb01_1         1.0 MB
    certifi-2021.5.30          |   py38h06a4308_0         138 KB
    cffi-1.14.6                |   py38h400218f_0         224 KB
    chardet-4.0.0              |py38h06a4308_1003         194 KB
    charset-normalizer-2.0.4   |     pyhd3eb1b0_0          35 KB
    click-8.0.1                |     pyhd3eb1b0_0          79 KB
    colorama-0.4.4             |     pyhd3eb1b0_0          21 KB
    conda-pack-0.6.0           |     pyhd3eb1b0_0          29 KB
    cryptography-3.4.7         |   py38hd23ed53_0         913 KB
    curl-7.78.0                |       h1ccaba5_0          94 KB
    cython-0.29.24             |   py38h295c915_0         2.0 MB
    dask-2021.8.1              |     pyhd3eb1b0_0          18 KB
    dask-core-2021.8.1         |     pyhd3eb1b0_0         715 KB
    debugpy-1.4.1              |   py38h295c915_0         1.7 MB
    decorator-5.0.9            |     pyhd3eb1b0_0          12 KB
    defusedxml-0.7.1           |     pyhd3eb1b0_0          23 KB
    distributed-2021.8.1       |   py38h06a4308_0         970 KB
    docutils-0.17.1            |   py38h06a4308_1         686 KB
    et_xmlfile-1.1.0           |   py38h06a4308_0          10 KB
    expat-2.4.1                |       h2531618_2         168 KB
    filelock-3.0.12            |     pyhd3eb1b0_1          10 KB
    flask-1.1.2                |     pyhd3eb1b0_0          70 KB
    fontconfig-2.13.1          |       h6c09931_0         250 KB
    fonttools-4.25.0           |     pyhd3eb1b0_0         632 KB
    fsspec-2021.7.0            |     pyhd3eb1b0_0          91 KB
    gevent-21.8.0              |   py38h7f8727e_1         1.5 MB
    glib-2.69.1                |       h5202010_0         1.7 MB
    glob2-0.7                  |     pyhd3eb1b0_0          12 KB
    gmp-6.2.1                  |       h2531618_2         539 KB
    greenlet-1.1.1             |   py38h295c915_0          82 KB
    gst-plugins-base-1.14.0    |       h8213a91_2         4.9 MB
    gstreamer-1.14.0           |       h28cd5cc_2         3.2 MB
    harfbuzz-2.8.1             |       h6f93f22_0         1.1 MB
    idna-3.2                   |     pyhd3eb1b0_0          48 KB
    imageio-2.9.0              |     pyhd3eb1b0_0         3.0 MB
    imagesize-1.2.0            |     pyhd3eb1b0_0           9 KB
    importlib-metadata-3.10.0  |   py38h06a4308_0          33 KB
    importlib_metadata-3.10.0  |       hd3eb1b0_0          11 KB
    iniconfig-1.1.1            |     pyhd3eb1b0_0           8 KB
    intel-openmp-2021.3.0      |    h06a4308_3350         1.4 MB
    ipykernel-6.2.0            |   py38h06a4308_1         192 KB
    ipython-7.26.0             |   py38hb070fc8_0         994 KB
    ipython_genutils-0.2.0     |     pyhd3eb1b0_1          27 KB
    ipywidgets-7.6.3           |     pyhd3eb1b0_1         105 KB
    isort-5.9.3                |     pyhd3eb1b0_0          83 KB
    itsdangerous-2.0.1         |     pyhd3eb1b0_0          18 KB
    jedi-0.17.2                |   py38h06a4308_1         924 KB
    jeepney-0.7.1              |     pyhd3eb1b0_0          38 KB
    jinja2-3.0.1               |     pyhd3eb1b0_0         110 KB
    joblib-1.0.1               |     pyhd3eb1b0_0         208 KB
    json5-0.9.6                |     pyhd3eb1b0_0          21 KB
    jupyter_client-6.1.12      |     pyhd3eb1b0_0          88 KB
    jupyter_console-6.4.0      |     pyhd3eb1b0_0          23 KB
    jupyter_core-4.7.1         |   py38h06a4308_0          68 KB
    jupyter_server-1.4.1       |   py38h06a4308_0         317 KB
    jupyterlab-3.1.7           |     pyhd3eb1b0_0         3.6 MB
    jupyterlab_server-2.7.1    |     pyhd3eb1b0_0          44 KB
    jupyterlab_widgets-1.0.0   |     pyhd3eb1b0_1         109 KB
    keyring-23.0.1             |   py38h06a4308_0          54 KB
    kiwisolver-1.3.1           |   py38h2531618_0          80 KB
    krb5-1.19.2                |       hac12032_0         1.2 MB
    lazy-object-proxy-1.6.0    |   py38h27cfd23_0          30 KB
    lcms2-2.12                 |       h3be6417_0         312 KB
    ld_impl_linux-64-2.35.1    |       h7274673_9         586 KB
    libcurl-7.78.0             |       h0b77cf5_0         338 KB
    libedit-3.1.20210714       |       h7f8727e_0         165 KB
    libev-4.33                 |       h7b6447c_0         112 KB
    libgcc-ng-9.3.0            |      h5101ec6_17         4.8 MB
    libgfortran-ng-7.5.0       |      ha8ba4b0_17          22 KB
    libgfortran4-7.5.0         |      ha8ba4b0_17         995 KB
    libgomp-9.3.0              |      h5101ec6_17         311 KB
    libllvm9-9.0.1             |       h4a3c616_1        21.0 MB
    libnghttp2-1.41.0          |       hf8bcb03_2         667 KB
    libspatialindex-1.9.3      |       h2531618_0         2.1 MB
    libstdcxx-ng-9.3.0         |      hd4cf53a_17         3.1 MB
    libtiff-4.2.0              |       h85742a9_0         502 KB
    libuv-1.40.0               |       h7b6447c_0         736 KB
    libwebp-base-1.2.0         |       h27cfd23_0         437 KB
    libxml2-2.9.12             |       h03d6c58_0         1.2 MB
    llvmlite-0.36.0            |   py38h612dafd_4         396 KB
    locket-0.2.1               |   py38h06a4308_1          10 KB
    lxml-4.6.3                 |   py38h9120a33_0         1.3 MB
    lz4-c-1.9.3                |       h295c915_1         185 KB
    markupsafe-2.0.1           |   py38h27cfd23_0          22 KB
    matplotlib-3.4.2           |   py38h06a4308_0          26 KB
    matplotlib-base-3.4.2      |   py38hab158f2_0         5.6 MB
    matplotlib-inline-0.1.2    |     pyhd3eb1b0_2          12 KB
    mkl-2021.3.0               |     h06a4308_520       141.2 MB
    mkl-service-2.4.0          |   py38h7f8727e_0          59 KB
    mkl_fft-1.3.0              |   py38h42c9631_2         180 KB
    mkl_random-1.2.2           |   py38h51133e4_0         308 KB
    mock-4.0.3                 |     pyhd3eb1b0_0          29 KB
    more-itertools-8.8.0       |     pyhd3eb1b0_0          42 KB
    mpmath-1.2.1               |   py38h06a4308_0         766 KB
    msgpack-python-1.0.2       |   py38hff7bd54_1          83 KB
    munkres-1.1.4              |             py_0          13 KB
    mypy_extensions-0.4.3      |           py38_0           9 KB
    nbclassic-0.2.6            |     pyhd3eb1b0_0          19 KB
    nbclient-0.5.3             |     pyhd3eb1b0_0          62 KB
    nbconvert-6.1.0            |   py38h06a4308_0         481 KB
    nbformat-5.1.3             |     pyhd3eb1b0_0          44 KB
    nest-asyncio-1.5.1         |     pyhd3eb1b0_0          10 KB
    networkx-2.6.2             |     pyhd3eb1b0_0         1.3 MB
    nltk-3.6.2                 |     pyhd3eb1b0_0         988 KB
    nose-1.3.7                 |  pyhd3eb1b0_1006         128 KB
    notebook-6.4.3             |   py38h06a4308_0         4.2 MB
    numba-0.53.1               |   py38ha9443f7_0         3.3 MB
    numexpr-2.7.3              |   py38h22e1b3c_1         188 KB
    numpy-1.20.3               |   py38hf144106_0          23 KB
    numpy-base-1.20.3          |   py38h74d4b33_0         4.5 MB
    openjpeg-2.4.0             |       h3ad879b_0         331 KB
    openpyxl-3.0.7             |     pyhd3eb1b0_0         159 KB
    openssl-1.1.1l             |       h7f8727e_0         2.5 MB
    packaging-21.0             |     pyhd3eb1b0_0          36 KB
    pandas-1.3.2               |   py38h8c16a72_0         9.6 MB
    pandoc-2.12                |       h06a4308_0         9.5 MB
    partd-1.2.0                |     pyhd3eb1b0_0          19 KB
    patchelf-0.12              |       h2531618_1          88 KB
    path-16.0.0                |   py38h06a4308_0          37 KB
    pathlib2-2.3.6             |   py38h06a4308_2          36 KB
    pathspec-0.7.0             |             py_0          26 KB
    pcre-8.45                  |       h295c915_0         207 KB
    pexpect-4.8.0              |     pyhd3eb1b0_3          53 KB
    pickleshare-0.7.5          |  pyhd3eb1b0_1003          13 KB
    pillow-8.3.1               |   py38h2c7a002_0         638 KB
    pip-21.0.1                 |   py38h06a4308_0         1.8 MB
    pkginfo-1.7.1              |   py38h06a4308_0          43 KB
    pluggy-0.13.1              |   py38h06a4308_0          33 KB
    prometheus_client-0.11.0   |     pyhd3eb1b0_0          47 KB
    prompt-toolkit-3.0.17      |     pyh06a4308_0         256 KB
    prompt_toolkit-3.0.17      |       hd3eb1b0_0          12 KB
    psutil-5.8.0               |   py38h27cfd23_1         327 KB
    ptyprocess-0.7.0           |     pyhd3eb1b0_2          17 KB
    py-1.10.0                  |     pyhd3eb1b0_0          76 KB
    pycodestyle-2.6.0          |     pyhd3eb1b0_0          38 KB
    pydocstyle-6.1.1           |     pyhd3eb1b0_0          36 KB
    pyerfa-2.0.0               |   py38h27cfd23_0         345 KB
    pyflakes-2.2.0             |     pyhd3eb1b0_0          56 KB
    pygments-2.10.0            |     pyhd3eb1b0_0         725 KB
    pylint-2.9.6               |   py38h06a4308_1         488 KB
    pyls-black-0.4.6           |       hd3eb1b0_0           9 KB
    pyls-spyder-0.3.2          |     pyhd3eb1b0_0          10 KB
    pyodbc-4.0.31              |   py38h295c915_0          71 KB
    pyopenssl-20.0.1           |     pyhd3eb1b0_1          49 KB
    pyparsing-2.4.7            |     pyhd3eb1b0_0          59 KB
    pysocks-1.7.1              |   py38h06a4308_0          31 KB
    pytest-6.2.4               |   py38h06a4308_2         423 KB
    python-dateutil-2.8.2      |     pyhd3eb1b0_0         233 KB
    python-language-server-0.36.2|     pyhd3eb1b0_0          41 KB
    python-libarchive-c-2.9    |     pyhd3eb1b0_1          47 KB
    pytz-2021.1                |     pyhd3eb1b0_0         181 KB
    pyyaml-5.4.1               |   py38h27cfd23_1         174 KB
    pyzmq-22.2.1               |   py38h295c915_1         465 KB
    qtawesome-1.0.2            |     pyhd3eb1b0_0         760 KB
    qtconsole-5.1.0            |     pyhd3eb1b0_0          98 KB
    qtpy-1.10.0                |     pyhd3eb1b0_0          35 KB
    readline-8.1               |       h27cfd23_0         362 KB
    regex-2021.8.3             |   py38h7f8727e_0         319 KB
    requests-2.26.0            |     pyhd3eb1b0_0          59 KB
    rope-0.19.0                |     pyhd3eb1b0_0         126 KB
    rtree-0.9.7                |   py38h06a4308_1          48 KB
    ruamel_yaml-0.15.100       |   py38h27cfd23_0         258 KB
    scikit-image-0.18.1        |   py38ha9443f7_0         9.5 MB
    scikit-learn-0.24.2        |   py38ha9443f7_0         5.4 MB
    scipy-1.6.2                |   py38had2a1c9_1        15.6 MB
    seaborn-0.11.2             |     pyhd3eb1b0_0         218 KB
    secretstorage-3.3.1        |   py38h06a4308_0          24 KB
    send2trash-1.5.0           |     pyhd3eb1b0_1          14 KB
    setuptools-52.0.0          |   py38h06a4308_0         714 KB
    singledispatch-3.7.0       |  pyhd3eb1b0_1001          12 KB
    six-1.16.0                 |     pyhd3eb1b0_0          18 KB
    snappy-1.1.8               |       he6710b0_0          40 KB
    sniffio-1.2.0              |   py38h06a4308_1          15 KB
    snowballstemmer-2.1.0      |     pyhd3eb1b0_0          62 KB
    sortedcollections-2.1.0    |     pyhd3eb1b0_0          12 KB
    sortedcontainers-2.4.0     |     pyhd3eb1b0_0          26 KB
    soupsieve-2.2.1            |     pyhd3eb1b0_0          32 KB
    sphinx-4.0.2               |     pyhd3eb1b0_0         1.2 MB
    sphinxcontrib-applehelp-1.0.2|     pyhd3eb1b0_0          29 KB
    sphinxcontrib-devhelp-1.0.2|     pyhd3eb1b0_0          23 KB
    sphinxcontrib-htmlhelp-2.0.0|     pyhd3eb1b0_0          32 KB
    sphinxcontrib-jsmath-1.0.1 |     pyhd3eb1b0_0           8 KB
    sphinxcontrib-qthelp-1.0.3 |     pyhd3eb1b0_0          26 KB
    sphinxcontrib-serializinghtml-1.1.5|     pyhd3eb1b0_0          25 KB
    spyder-4.2.5               |   py38h06a4308_0         5.4 MB
    spyder-kernels-1.10.2      |   py38h06a4308_0         102 KB
    sqlalchemy-1.4.22          |   py38h7f8727e_0         1.8 MB
    sqlite-3.36.0              |       hc218d9a_0         990 KB
    statsmodels-0.12.2         |   py38h27cfd23_0         8.5 MB
    sympy-1.8                  |   py38h06a4308_0         9.1 MB
    terminado-0.9.4            |   py38h06a4308_0          25 KB
    testpath-0.5.0             |     pyhd3eb1b0_0          81 KB
    textdistance-4.2.1         |     pyhd3eb1b0_0          29 KB
    threadpoolctl-2.2.0        |     pyhbf3da8f_0          16 KB
    three-merge-0.1.1          |     pyhd3eb1b0_0          10 KB
    toml-0.10.2                |     pyhd3eb1b0_0          20 KB
    toolz-0.11.1               |     pyhd3eb1b0_0          46 KB
    tornado-6.1                |   py38h27cfd23_0         588 KB
    tqdm-4.62.1                |     pyhd3eb1b0_1          84 KB
    traitlets-5.0.5            |     pyhd3eb1b0_0          81 KB
    typed-ast-1.4.3            |   py38h7f8727e_1         185 KB
    typing_extensions-3.10.0.0 |     pyh06a4308_0          27 KB
    ujson-4.0.2                |   py38h2531618_0          45 KB
    urllib3-1.26.6             |     pyhd3eb1b0_1         112 KB
    watchdog-1.0.2             |   py38h06a4308_1          89 KB
    werkzeug-1.0.1             |     pyhd3eb1b0_0         239 KB
    wheel-0.37.0               |     pyhd3eb1b0_0          32 KB
    wrapt-1.12.1               |   py38h7b6447c_1          50 KB
    wurlitzer-2.1.1            |   py38h06a4308_0          13 KB
    xlrd-2.0.1                 |     pyhd3eb1b0_0          90 KB
    xlsxwriter-3.0.1           |     pyhd3eb1b0_0         111 KB
    yapf-0.31.0                |     pyhd3eb1b0_0         126 KB
    zeromq-4.3.4               |       h2531618_0         331 KB
    zict-2.0.0                 |     pyhd3eb1b0_0          10 KB
    zipp-3.5.0                 |     pyhd3eb1b0_0          13 KB
    zope.interface-5.4.0       |   py38h7f8727e_0         301 KB
    zstd-1.4.9                 |       haebb681_0         480 KB
    ------------------------------------------------------------
                                           Total:       352.0 MB

The following NEW packages will be INSTALLED:

  _anaconda_depends  pkgs/main/linux-64::_anaconda_depends-2020.07-py38_0
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
  anyio              pkgs/main/linux-64::anyio-2.2.0-py38h06a4308_1
  appdirs            pkgs/main/noarch::appdirs-1.4.4-py_0
  black              pkgs/main/noarch::black-19.10b0-py_0
  brotli             pkgs/main/linux-64::brotli-1.0.9-he6710b0_2
  c-ares             pkgs/main/linux-64::c-ares-1.17.1-h27cfd23_0
  charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0
  conda-pack         pkgs/main/noarch::conda-pack-0.6.0-pyhd3eb1b0_0
  debugpy            pkgs/main/linux-64::debugpy-1.4.1-py38h295c915_0
  fonttools          pkgs/main/noarch::fonttools-4.25.0-pyhd3eb1b0_0
  jupyter_server     pkgs/main/linux-64::jupyter_server-1.4.1-py38h06a4308_0
  jupyterlab_widgets pkgs/main/noarch::jupyterlab_widgets-1.0.0-pyhd3eb1b0_1
  libev              pkgs/main/linux-64::libev-4.33-h7b6447c_0
  libgfortran4       pkgs/main/linux-64::libgfortran4-7.5.0-ha8ba4b0_17
  libgomp            pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
  libllvm9           pkgs/main/linux-64::libllvm9-9.0.1-h4a3c616_1
  libnghttp2         pkgs/main/linux-64::libnghttp2-1.41.0-hf8bcb03_2
  libuv              pkgs/main/linux-64::libuv-1.40.0-h7b6447c_0
  libwebp-base       pkgs/main/linux-64::libwebp-base-1.2.0-h27cfd23_0
  matplotlib-inline  pkgs/main/noarch::matplotlib-inline-0.1.2-pyhd3eb1b0_2
  munkres            pkgs/main/noarch::munkres-1.1.4-py_0
  mypy_extensions    pkgs/main/linux-64::mypy_extensions-0.4.3-py38_0
  nbclassic          pkgs/main/noarch::nbclassic-0.2.6-pyhd3eb1b0_0
  openjpeg           pkgs/main/linux-64::openjpeg-2.4.0-h3ad879b_0
  pathspec           pkgs/main/noarch::pathspec-0.7.0-py_0
  pyerfa             pkgs/main/linux-64::pyerfa-2.0.0-py38h27cfd23_0
  pyls-black         pkgs/main/noarch::pyls-black-0.4.6-hd3eb1b0_0
  pyls-spyder        pkgs/main/noarch::pyls-spyder-0.3.2-pyhd3eb1b0_0
  snappy             pkgs/main/linux-64::snappy-1.1.8-he6710b0_0
  sniffio            pkgs/main/linux-64::sniffio-1.2.0-py38h06a4308_1
  textdistance       pkgs/main/noarch::textdistance-4.2.1-pyhd3eb1b0_0
  three-merge        pkgs/main/noarch::three-merge-0.1.1-pyhd3eb1b0_0
  typed-ast          pkgs/main/linux-64::typed-ast-1.4.3-py38h7f8727e_1

The following packages will be UPDATED:

  anaconda-client                              1.7.2-py38_0 --> 1.8.0-py38h06a4308_0
  anaconda-project                               0.8.4-py_0 --> 0.10.1-pyhd3eb1b0_0
  astroid                                      2.4.2-py38_0 --> 2.6.6-py38h06a4308_0
  astropy                              4.0.2-py38h7b6447c_0 --> 4.3.1-py38h09021b7_0
  attrs                                 20.3.0-pyhd3eb1b0_0 --> 21.2.0-pyhd3eb1b0_0
  babel                                  2.8.1-pyhd3eb1b0_0 --> 2.9.1-pyhd3eb1b0_0
  backports.shutil_~ pkgs/main/linux-64::backports.shutil_~ --> pkgs/main/noarch::backports.shutil_get_terminal_size-1.0.0-pyhd3eb1b0_3
  bitarray                             1.6.1-py38h27cfd23_0 --> 2.3.0-py38h7f8727e_1
  bleach                                         3.2.1-py_0 --> 4.0.0-pyhd3eb1b0_0
  blosc                                   1.20.1-hd408876_0 --> 1.21.0-h8c45485_0
  bokeh                                        2.2.3-py38_0 --> 2.3.3-py38h06a4308_0
  brotlipy                          0.7.0-py38h7b6447c_1000 --> 0.7.0-py38h27cfd23_1003
  ca-certificates                              2020.10.14-0 --> 2021.7.5-h06a4308_1
  cairo                                  1.14.12-h8948797_3 --> 1.16.0-hf32fb01_1
  certifi            pkgs/main/noarch::certifi-2020.6.20-p~ --> pkgs/main/linux-64::certifi-2021.5.30-py38h06a4308_0
  cffi                                1.14.3-py38he30daa8_0 --> 1.14.6-py38h400218f_0
  chardet                                   3.0.4-py38_1003 --> 4.0.0-py38h06a4308_1003
  click                                          7.1.2-py_0 --> 8.0.1-pyhd3eb1b0_0
  cryptography                         3.1.1-py38h1ba5d50_0 --> 3.4.7-py38hd23ed53_0
  curl                                    7.71.1-hbc83047_1 --> 7.78.0-h1ccaba5_0
  cython                             0.29.21-py38he6710b0_0 --> 0.29.24-py38h295c915_0
  dask                                          2.30.0-py_0 --> 2021.8.1-pyhd3eb1b0_0
  dask-core                                     2.30.0-py_0 --> 2021.8.1-pyhd3eb1b0_0
  decorator                                      4.4.2-py_0 --> 5.0.9-pyhd3eb1b0_0
  defusedxml                                     0.6.0-py_0 --> 0.7.1-pyhd3eb1b0_0
  distributed                         2.30.1-py38h06a4308_0 --> 2021.8.1-py38h06a4308_0
  docutils                                      0.16-py38_1 --> 0.17.1-py38h06a4308_1
  et_xmlfile         pkgs/main/noarch::et_xmlfile-1.0.1-py~ --> pkgs/main/linux-64::et_xmlfile-1.1.0-py38h06a4308_0
  expat                                   2.2.10-he6710b0_2 --> 2.4.1-h2531618_2
  filelock                                      3.0.12-py_0 --> 3.0.12-pyhd3eb1b0_1
  fontconfig                              2.13.0-h9420a91_0 --> 2.13.1-h6c09931_0
  fsspec                                         0.8.3-py_0 --> 2021.7.0-pyhd3eb1b0_0
  gevent                              20.9.0-py38h7b6447c_0 --> 21.8.0-py38h7f8727e_1
  glib                                    2.66.1-h92f7085_0 --> 2.69.1-h5202010_0
  gmp                                      6.1.2-h6c8ec71_1 --> 6.2.1-h2531618_2
  greenlet                            0.4.17-py38h7b6447c_0 --> 1.1.1-py38h295c915_0
  gst-plugins-base                        1.14.0-hbbd80ab_1 --> 1.14.0-h8213a91_2
  gstreamer                               1.14.0-hb31296c_0 --> 1.14.0-h28cd5cc_2
  harfbuzz                                 2.4.0-hca77d97_1 --> 2.8.1-h6f93f22_0
  idna                                            2.10-py_0 --> 3.2-pyhd3eb1b0_0
  importlib-metadata pkgs/main/noarch::importlib-metadata-~ --> pkgs/main/linux-64::importlib-metadata-3.10.0-py38h06a4308_0
  importlib_metadata                                2.0.0-1 --> 3.10.0-hd3eb1b0_0
  intel-openmp                                   2020.2-254 --> 2021.3.0-h06a4308_3350
  ipykernel                            5.3.4-py38h5ca1d4c_0 --> 6.2.0-py38h06a4308_1
  ipython                             7.19.0-py38hb070fc8_0 --> 7.26.0-py38hb070fc8_0
  ipython_genutils   pkgs/main/linux-64::ipython_genutils-~ --> pkgs/main/noarch::ipython_genutils-0.2.0-pyhd3eb1b0_1
  ipywidgets                                     7.5.1-py_1 --> 7.6.3-pyhd3eb1b0_1
  isort                                          5.6.4-py_0 --> 5.9.3-pyhd3eb1b0_0
  itsdangerous                                   1.1.0-py_0 --> 2.0.1-pyhd3eb1b0_0
  jedi                                        0.17.1-py38_0 --> 0.17.2-py38h06a4308_1
  jeepney                                0.5.0-pyhd3eb1b0_0 --> 0.7.1-pyhd3eb1b0_0
  jinja2                                        2.11.2-py_0 --> 3.0.1-pyhd3eb1b0_0
  joblib                                        0.17.0-py_0 --> 1.0.1-pyhd3eb1b0_0
  json5                                          0.9.5-py_0 --> 0.9.6-pyhd3eb1b0_0
  jupyter_client                                 6.1.7-py_0 --> 6.1.12-pyhd3eb1b0_0
  jupyter_console                                6.2.0-py_0 --> 6.4.0-pyhd3eb1b0_0
  jupyter_core                                 4.6.3-py38_0 --> 4.7.1-py38h06a4308_0
  jupyterlab                                     2.2.6-py_0 --> 3.1.7-pyhd3eb1b0_0
  jupyterlab_server                              1.2.0-py_0 --> 2.7.1-pyhd3eb1b0_0
  keyring                                     21.4.0-py38_1 --> 23.0.1-py38h06a4308_0
  kiwisolver                           1.3.0-py38h2531618_0 --> 1.3.1-py38h2531618_0
  krb5                                    1.18.2-h173b8e3_0 --> 1.19.2-hac12032_0
  lazy-object-proxy                    1.4.3-py38h7b6447c_0 --> 1.6.0-py38h27cfd23_0
  lcms2                                     2.11-h396b838_0 --> 2.12-h3be6417_0
  ld_impl_linux-64                        2.33.1-h53a641e_7 --> 2.35.1-h7274673_9
  libcurl                                 7.71.1-h20c2e04_1 --> 7.78.0-h0b77cf5_0
  libedit                           3.1.20191231-h14c3975_1 --> 3.1.20210714-h7f8727e_0
  libgcc-ng                                9.1.0-hdf63c60_0 --> 9.3.0-h5101ec6_17
  libgfortran-ng                           7.3.0-hdf63c60_0 --> 7.5.0-ha8ba4b0_17
  libstdcxx-ng                             9.1.0-hdf63c60_0 --> 9.3.0-hd4cf53a_17
  libtiff                                  4.1.0-h2733197_1 --> 4.2.0-h85742a9_0
  libxml2                                 2.9.10-hb55368b_3 --> 2.9.12-h03d6c58_0
  llvmlite                            0.34.0-py38h269e1b5_4 --> 0.36.0-py38h612dafd_4
  locket                                       0.2.0-py38_1 --> 0.2.1-py38h06a4308_1
  lxml                                 4.6.1-py38hefd8a0e_0 --> 4.6.3-py38h9120a33_0
  lz4-c                                    1.9.2-heb0550a_3 --> 1.9.3-h295c915_1
  markupsafe                           1.1.1-py38h7b6447c_0 --> 2.0.1-py38h27cfd23_0
  matplotlib                                        3.3.2-0 --> 3.4.2-py38h06a4308_0
  matplotlib-base                      3.3.2-py38h817c723_0 --> 3.4.2-py38hab158f2_0
  mkl                                            2020.2-256 --> 2021.3.0-h06a4308_520
  mkl-service                          2.3.0-py38he904b0f_0 --> 2.4.0-py38h7f8727e_0
  mkl_fft                              1.2.0-py38h23d657b_0 --> 1.3.0-py38h42c9631_2
  mkl_random                           1.1.1-py38h0573a6f_0 --> 1.2.2-py38h51133e4_0
  mock                                           4.0.2-py_0 --> 4.0.3-pyhd3eb1b0_0
  more-itertools                         8.6.0-pyhd3eb1b0_0 --> 8.8.0-pyhd3eb1b0_0
  mpmath                                       1.1.0-py38_0 --> 1.2.1-py38h06a4308_0
  msgpack-python                       1.0.0-py38hfd86e86_1 --> 1.0.2-py38hff7bd54_1
  nbclient                                       0.5.1-py_0 --> 0.5.3-pyhd3eb1b0_0
  nbconvert                                    6.0.7-py38_0 --> 6.1.0-py38h06a4308_0
  nbformat                                       5.0.8-py_0 --> 5.1.3-pyhd3eb1b0_0
  nest-asyncio                           1.4.2-pyhd3eb1b0_0 --> 1.5.1-pyhd3eb1b0_0
  networkx                                         2.5-py_0 --> 2.6.2-pyhd3eb1b0_0
  nltk                                             3.5-py_0 --> 3.6.2-pyhd3eb1b0_0
  nose                pkgs/main/linux-64::nose-1.3.7-py38_2 --> pkgs/main/noarch::nose-1.3.7-pyhd3eb1b0_1006
  notebook                                     6.1.4-py38_0 --> 6.4.3-py38h06a4308_0
  numba                               0.51.2-py38h0573a6f_1 --> 0.53.1-py38ha9443f7_0
  numexpr                              2.7.1-py38h423224d_0 --> 2.7.3-py38h22e1b3c_1
  numpy                               1.19.2-py38h54aff64_0 --> 1.20.3-py38hf144106_0
  numpy-base                          1.19.2-py38hfa32c7d_0 --> 1.20.3-py38h74d4b33_0
  openpyxl                                       3.0.5-py_0 --> 3.0.7-pyhd3eb1b0_0
  openssl                                 1.1.1h-h7b6447c_0 --> 1.1.1l-h7f8727e_0
  packaging                                       20.4-py_0 --> 21.0-pyhd3eb1b0_0
  pandas                               1.1.3-py38he6710b0_0 --> 1.3.2-py38h8c16a72_0
  pandoc                                    2.11-hb0f4dca_0 --> 2.12-h06a4308_0
  partd                                          1.1.0-py_0 --> 1.2.0-pyhd3eb1b0_0
  patchelf                                  0.12-he6710b0_0 --> 0.12-h2531618_1
  path                                        15.0.0-py38_0 --> 16.0.0-py38h06a4308_0
  pathlib2                                     2.3.5-py38_0 --> 2.3.6-py38h06a4308_2
  pcre                                      8.44-he6710b0_0 --> 8.45-h295c915_0
  pexpect            pkgs/main/linux-64::pexpect-4.8.0-py3~ --> pkgs/main/noarch::pexpect-4.8.0-pyhd3eb1b0_3
  pickleshare        pkgs/main/linux-64::pickleshare-0.7.5~ --> pkgs/main/noarch::pickleshare-0.7.5-pyhd3eb1b0_1003
  pillow                               8.0.1-py38he98fc37_0 --> 8.3.1-py38h2c7a002_0
  pip                                 20.2.4-py38h06a4308_0 --> 21.0.1-py38h06a4308_0
  pkginfo                              1.6.1-py38h06a4308_0 --> 1.7.1-py38h06a4308_0
  prometheus_client                              0.8.0-py_0 --> 0.11.0-pyhd3eb1b0_0
  prompt-toolkit                                 3.0.8-py_0 --> 3.0.17-pyh06a4308_0
  prompt_toolkit                                    3.0.8-0 --> 3.0.17-hd3eb1b0_0
  psutil                               5.7.2-py38h7b6447c_0 --> 5.8.0-py38h27cfd23_1
  ptyprocess         pkgs/main/linux-64::ptyprocess-0.6.0-~ --> pkgs/main/noarch::ptyprocess-0.7.0-pyhd3eb1b0_2
  py                                             1.9.0-py_0 --> 1.10.0-pyhd3eb1b0_0
  pydocstyle                                     5.1.1-py_0 --> 6.1.1-pyhd3eb1b0_0
  pygments                               2.7.2-pyhd3eb1b0_0 --> 2.10.0-pyhd3eb1b0_0
  pylint                                       2.6.0-py38_0 --> 2.9.6-py38h06a4308_1
  pyodbc                              4.0.30-py38he6710b0_0 --> 4.0.31-py38h295c915_0
  pyopenssl                                     19.1.0-py_1 --> 20.0.1-pyhd3eb1b0_1
  pytest                                       6.1.1-py38_0 --> 6.2.4-py38h06a4308_2
  python-dateutil                                2.8.1-py_0 --> 2.8.2-pyhd3eb1b0_0
  python-language-s~                            0.35.1-py_0 --> 0.36.2-pyhd3eb1b0_0
  python-libarchive~                               2.9-py_0 --> 2.9-pyhd3eb1b0_1
  pytz                                          2020.1-py_0 --> 2021.1-pyhd3eb1b0_0
  pyyaml                               5.3.1-py38h7b6447c_1 --> 5.4.1-py38h27cfd23_1
  pyzmq                               19.0.2-py38he6710b0_1 --> 22.2.1-py38h295c915_1
  qtawesome                                      1.0.1-py_0 --> 1.0.2-pyhd3eb1b0_0
  qtconsole                                      4.7.7-py_0 --> 5.1.0-pyhd3eb1b0_0
  qtpy                                           1.9.0-py_0 --> 1.10.0-pyhd3eb1b0_0
  readline                                   8.0-h7b6447c_0 --> 8.1-h27cfd23_0
  regex                           2020.10.15-py38h7b6447c_0 --> 2021.8.3-py38h7f8727e_0
  requests                                      2.24.0-py_0 --> 2.26.0-pyhd3eb1b0_0
  rope                                          0.18.0-py_0 --> 0.19.0-pyhd3eb1b0_0
  rtree                                        0.9.4-py38_1 --> 0.9.7-py38h06a4308_1
  ruamel_yaml                        0.15.87-py38h7b6447c_1 --> 0.15.100-py38h27cfd23_0
  scikit-image                        0.17.2-py38hdf5156a_0 --> 0.18.1-py38ha9443f7_0
  scikit-learn                        0.23.2-py38h0573a6f_0 --> 0.24.2-py38ha9443f7_0
  scipy                                1.5.2-py38h0b6359f_0 --> 1.6.2-py38had2a1c9_1
  seaborn                                       0.11.0-py_0 --> 0.11.2-pyhd3eb1b0_0
  secretstorage                                3.1.2-py38_0 --> 3.3.1-py38h06a4308_0
  send2trash         pkgs/main/linux-64::send2trash-1.5.0-~ --> pkgs/main/noarch::send2trash-1.5.0-pyhd3eb1b0_1
  setuptools                          50.3.1-py38h06a4308_1 --> 52.0.0-py38h06a4308_0
  singledispatch                            3.4.0.3-py_1001 --> 3.7.0-pyhd3eb1b0_1001
  six                pkgs/main/linux-64::six-1.15.0-py38h0~ --> pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
  snowballstemmer                                2.0.0-py_0 --> 2.1.0-pyhd3eb1b0_0
  sortedcollections                              1.2.1-py_0 --> 2.1.0-pyhd3eb1b0_0
  sortedcontainers                               2.2.2-py_0 --> 2.4.0-pyhd3eb1b0_0
  soupsieve                                      2.0.1-py_0 --> 2.2.1-pyhd3eb1b0_0
  sphinx                                         3.2.1-py_0 --> 4.0.2-pyhd3eb1b0_0
  sphinxcontrib-htm~                             1.0.3-py_0 --> 2.0.0-pyhd3eb1b0_0
  sphinxcontrib-ser~                             1.1.4-py_0 --> 1.1.5-pyhd3eb1b0_0
  spyder                                       4.1.5-py38_0 --> 4.2.5-py38h06a4308_0
  spyder-kernels                               1.9.4-py38_0 --> 1.10.2-py38h06a4308_0
  sqlalchemy                          1.3.20-py38h7b6447c_0 --> 1.4.22-py38h7f8727e_0
  sqlite                                  3.33.0-h62c20be_0 --> 3.36.0-hc218d9a_0
  statsmodels                         0.12.0-py38h7b6447c_0 --> 0.12.2-py38h27cfd23_0
  sympy                                1.6.2-py38h06a4308_1 --> 1.8-py38h06a4308_0
  terminado                                    0.9.1-py38_0 --> 0.9.4-py38h06a4308_0
  testpath                                       0.4.4-py_0 --> 0.5.0-pyhd3eb1b0_0
  threadpoolctl                          2.1.0-pyh5ca1d4c_0 --> 2.2.0-pyhbf3da8f_0
  toml                                          0.10.1-py_0 --> 0.10.2-pyhd3eb1b0_0
  tornado                              6.0.4-py38h7b6447c_1 --> 6.1-py38h27cfd23_0
  tqdm                                          4.50.2-py_0 --> 4.62.1-pyhd3eb1b0_1
  typing_extensions                            3.7.4.3-py_0 --> 3.10.0.0-pyh06a4308_0
  ujson                                4.0.1-py38he6710b0_0 --> 4.0.2-py38h2531618_0
  urllib3                                      1.25.11-py_0 --> 1.26.6-pyhd3eb1b0_1
  watchdog                                    0.10.3-py38_0 --> 1.0.2-py38h06a4308_1
  wheel                                         0.35.1-py_0 --> 0.37.0-pyhd3eb1b0_0
  wrapt                               1.11.2-py38h7b6447c_0 --> 1.12.1-py38h7b6447c_1
  wurlitzer                                    2.0.1-py38_0 --> 2.1.1-py38h06a4308_0
  xlrd                                           1.2.0-py_0 --> 2.0.1-pyhd3eb1b0_0
  xlsxwriter                                     1.3.7-py_0 --> 3.0.1-pyhd3eb1b0_0
  yapf                                          0.30.0-py_0 --> 0.31.0-pyhd3eb1b0_0
  zeromq                                   4.3.3-he6710b0_3 --> 4.3.4-h2531618_0
  zipp                                   3.4.0-pyhd3eb1b0_0 --> 3.5.0-pyhd3eb1b0_0
  zope.interface                       5.1.2-py38h7b6447c_0 --> 5.4.0-py38h7f8727e_0
  zstd                                     1.4.5-h9ceee32_0 --> 1.4.9-haebb681_0

The following packages will be DOWNGRADED:

  alabaster                                     0.7.12-py_0 --> 0.7.12-pyhd3eb1b0_0
  anaconda                                   2020.11-py38_0 --> custom-py38_1
  argon2-cffi                         20.1.0-py38h7b6447c_1 --> 20.1.0-py38h27cfd23_1
  async_generator                                 1.10-py_0 --> 1.10-pyhd3eb1b0_0
  backcall                                       0.2.0-py_0 --> 0.2.0-pyhd3eb1b0_0
  backports                                        1.0-py_2 --> 1.0-pyhd3eb1b0_2
  beautifulsoup4                         4.9.3-pyhb0f4dca_0 --> 4.9.3-pyha847dfd_0
  colorama                                       0.4.4-py_0 --> 0.4.4-pyhd3eb1b0_0
  flask                                          1.1.2-py_0 --> 1.1.2-pyhd3eb1b0_0
  glob2                                            0.7-py_0 --> 0.7-pyhd3eb1b0_0
  imageio                                        2.9.0-py_0 --> 2.9.0-pyhd3eb1b0_0
  imagesize                                      1.2.0-py_0 --> 1.2.0-pyhd3eb1b0_0
  iniconfig                                      1.1.1-py_0 --> 1.1.1-pyhd3eb1b0_0
  libspatialindex                          1.9.3-he6710b0_0 --> 1.9.3-h2531618_0
  pluggy                                      0.13.1-py38_0 --> 0.13.1-py38h06a4308_0
  pycodestyle                                    2.6.0-py_0 --> 2.6.0-pyhd3eb1b0_0
  pyflakes                                       2.2.0-py_0 --> 2.2.0-pyhd3eb1b0_0
  pyparsing                                      2.4.7-py_0 --> 2.4.7-pyhd3eb1b0_0
  pysocks                                      1.7.1-py38_0 --> 1.7.1-py38h06a4308_0
  sphinxcontrib-app~                             1.0.2-py_0 --> 1.0.2-pyhd3eb1b0_0
  sphinxcontrib-dev~                             1.0.2-py_0 --> 1.0.2-pyhd3eb1b0_0
  sphinxcontrib-jsm~                             1.0.1-py_0 --> 1.0.1-pyhd3eb1b0_0
  sphinxcontrib-qth~                             1.0.3-py_0 --> 1.0.3-pyhd3eb1b0_0
  toolz                                         0.11.1-py_0 --> 0.11.1-pyhd3eb1b0_0
  traitlets                                      5.0.5-py_0 --> 5.0.5-pyhd3eb1b0_0
  werkzeug                                       1.0.1-py_0 --> 1.0.1-pyhd3eb1b0_0
  zict                                           2.0.0-py_0 --> 2.0.0-pyhd3eb1b0_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
anyio-2.2.0          | 125 KB    | ##################################### | 100% 
rtree-0.9.7          | 48 KB     | ##################################### | 100% 
libev-4.33           | 112 KB    | ##################################### | 100% 
libgomp-9.3.0        | 311 KB    | ##################################### | 100% 
iniconfig-1.1.1      | 8 KB      | ##################################### | 100% 
typing_extensions-3. | 27 KB     | ##################################### | 100% 
pathspec-0.7.0       | 26 KB     | ##################################### | 100% 
sphinxcontrib-devhel | 23 KB     | ##################################### | 100% 
soupsieve-2.2.1      | 32 KB     | ##################################### | 100% 
setuptools-52.0.0    | 714 KB    | ##################################### | 100% 
readline-8.1         | 362 KB    | ##################################### | 100% 
astropy-4.3.1        | 6.4 MB    | ##################################### | 100% 
jedi-0.17.2          | 924 KB    | ##################################### | 100% 
argon2-cffi-20.1.0   | 46 KB     | ##################################### | 100% 
brotli-1.0.9         | 375 KB    | ##################################### | 100% 
openpyxl-3.0.7       | 159 KB    | ##################################### | 100% 
python-language-serv | 41 KB     | ##################################### | 100% 
zstd-1.4.9           | 480 KB    | ##################################### | 100% 
pathlib2-2.3.6       | 36 KB     | ##################################### | 100% 
numba-0.53.1         | 3.3 MB    | ##################################### | 100% 
secretstorage-3.3.1  | 24 KB     | ##################################### | 100% 
sphinxcontrib-htmlhe | 32 KB     | ##################################### | 100% 
libgfortran-ng-7.5.0 | 22 KB     | ##################################### | 100% 
wurlitzer-2.1.1      | 13 KB     | ##################################### | 100% 
_openmp_mutex-4.5    | 22 KB     | ##################################### | 100% 
docutils-0.17.1      | 686 KB    | ##################################### | 100% 
pytz-2021.1          | 181 KB    | ##################################### | 100% 
pcre-8.45            | 207 KB    | ##################################### | 100% 
tornado-6.1          | 588 KB    | ##################################### | 100% 
networkx-2.6.2       | 1.3 MB    | ##################################### | 100% 
isort-5.9.3          | 83 KB     | ##################################### | 100% 
regex-2021.8.3       | 319 KB    | ##################################### | 100% 
six-1.16.0           | 18 KB     | ##################################### | 100% 
pyopenssl-20.0.1     | 49 KB     | ##################################### | 100% 
idna-3.2             | 48 KB     | ##################################### | 100% 
libspatialindex-1.9. | 2.1 MB    | ##################################### | 100% 
ujson-4.0.2          | 45 KB     | ##################################### | 100% 
pluggy-0.13.1        | 33 KB     | ##################################### | 100% 
yapf-0.31.0          | 126 KB    | ##################################### | 100% 
prompt-toolkit-3.0.1 | 256 KB    | ##################################### | 100% 
scikit-learn-0.24.2  | 5.4 MB    | ##################################### | 100% 
python-libarchive-c- | 47 KB     | ##################################### | 100% 
appdirs-1.4.4        | 13 KB     | ##################################### | 100% 
werkzeug-1.0.1       | 239 KB    | ##################################### | 100% 
gevent-21.8.0        | 1.5 MB    | ##################################### | 100% 
nbclassic-0.2.6      | 19 KB     | ##################################### | 100% 
terminado-0.9.4      | 25 KB     | ##################################### | 100% 
lxml-4.6.3           | 1.3 MB    | ##################################### | 100% 
pyls-spyder-0.3.2    | 10 KB     | ##################################### | 100% 
urllib3-1.26.6       | 112 KB    | ##################################### | 100% 
sphinxcontrib-qthelp | 26 KB     | ##################################### | 100% 
cffi-1.14.6          | 224 KB    | ##################################### | 100% 
keyring-23.0.1       | 54 KB     | ##################################### | 100% 
libedit-3.1.20210714 | 165 KB    | ##################################### | 100% 
colorama-0.4.4       | 21 KB     | ##################################### | 100% 
cryptography-3.4.7   | 913 KB    | ##################################### | 100% 
msgpack-python-1.0.2 | 83 KB     | ##################################### | 100% 
jupyterlab_widgets-1 | 109 KB    | ##################################### | 100% 
anaconda-project-0.1 | 218 KB    | ##################################### | 100% 
pyparsing-2.4.7      | 59 KB     | ##################################### | 100% 
watchdog-1.0.2       | 89 KB     | ##################################### | 100% 
importlib_metadata-3 | 11 KB     | ##################################### | 100% 
prompt_toolkit-3.0.1 | 12 KB     | ##################################### | 100% 
qtconsole-5.1.0      | 98 KB     | ##################################### | 100% 
ipykernel-6.2.0      | 192 KB    | ##################################### | 100% 
fontconfig-2.13.1    | 250 KB    | ##################################### | 100% 
path-16.0.0          | 37 KB     | ##################################### | 100% 
pydocstyle-6.1.1     | 36 KB     | ##################################### | 100% 
libllvm9-9.0.1       | 21.0 MB   | ##################################### | 100% 
mkl_fft-1.3.0        | 180 KB    | ##################################### | 100% 
expat-2.4.1          | 168 KB    | ##################################### | 100% 
bokeh-2.3.3          | 5.9 MB    | ##################################### | 100% 
mkl-service-2.4.0    | 59 KB     | ##################################### | 100% 
babel-2.9.1          | 5.5 MB    | ##################################### | 100% 
psutil-5.8.0         | 327 KB    | ##################################### | 100% 
markupsafe-2.0.1     | 22 KB     | ##################################### | 100% 
tqdm-4.62.1          | 84 KB     | ##################################### | 100% 
pexpect-4.8.0        | 53 KB     | ##################################### | 100% 
jupyter_server-1.4.1 | 317 KB    | ##################################### | 100% 
pkginfo-1.7.1        | 43 KB     | ##################################### | 100% 
krb5-1.19.2          | 1.2 MB    | ##################################### | 100% 
more-itertools-8.8.0 | 42 KB     | ##################################### | 100% 
spyder-kernels-1.10. | 102 KB    | ##################################### | 100% 
chardet-4.0.0        | 194 KB    | ##################################### | 100% 
curl-7.78.0          | 94 KB     | ##################################### | 100% 
kiwisolver-1.3.1     | 80 KB     | ##################################### | 100% 
pyerfa-2.0.0         | 345 KB    | ##################################### | 100% 
cairo-1.16.0         | 1.0 MB    | ##################################### | 100% 
greenlet-1.1.1       | 82 KB     | ##################################### | 100% 
patchelf-0.12        | 88 KB     | ##################################### | 100% 
munkres-1.1.4        | 13 KB     | ##################################### | 100% 
nltk-3.6.2           | 988 KB    | ##################################### | 100% 
glob2-0.7            | 12 KB     | ##################################### | 100% 
anaconda-custom      | 35 KB     | ##################################### | 100% 
numexpr-2.7.3        | 188 KB    | ##################################### | 100% 
numpy-1.20.3         | 23 KB     | ##################################### | 100% 
libtiff-4.2.0        | 502 KB    | ##################################### | 100% 
imagesize-1.2.0      | 9 KB      | ##################################### | 100% 
_anaconda_depends-20 | 6 KB      | ##################################### | 100% 
typed-ast-1.4.3      | 185 KB    | ##################################### | 100% 
libnghttp2-1.41.0    | 667 KB    | ##################################### | 100% 
ruamel_yaml-0.15.100 | 258 KB    | ##################################### | 100% 
decorator-5.0.9      | 12 KB     | ##################################### | 100% 
backcall-0.2.0       | 13 KB     | ##################################### | 100% 
sniffio-1.2.0        | 15 KB     | ##################################### | 100% 
qtawesome-1.0.2      | 760 KB    | ##################################### | 100% 
sphinx-4.0.2         | 1.2 MB    | ##################################### | 100% 
libuv-1.40.0         | 736 KB    | ##################################### | 100% 
openssl-1.1.1l       | 2.5 MB    | ##################################### | 100% 
ipython_genutils-0.2 | 27 KB     | ##################################### | 100% 
lcms2-2.12           | 312 KB    | ##################################### | 100% 
pyls-black-0.4.6     | 9 KB      | ##################################### | 100% 
bleach-4.0.0         | 113 KB    | ##################################### | 100% 
pandas-1.3.2         | 9.6 MB    | ##################################### | 100% 
jupyterlab_server-2. | 44 KB     | ##################################### | 100% 
imageio-2.9.0        | 3.0 MB    | ##################################### | 100% 
pyodbc-4.0.31        | 71 KB     | ##################################### | 100% 
charset-normalizer-2 | 35 KB     | ##################################### | 100% 
gmp-6.2.1            | 539 KB    | ##################################### | 100% 
requests-2.26.0      | 59 KB     | ##################################### | 100% 
wheel-0.37.0         | 32 KB     | ##################################### | 100% 
async_generator-1.10 | 23 KB     | ##################################### | 100% 
wrapt-1.12.1         | 50 KB     | ##################################### | 100% 
bitarray-2.3.0       | 139 KB    | ##################################### | 100% 
anaconda-client-1.8. | 152 KB    | ##################################### | 100% 
jupyterlab-3.1.7     | 3.6 MB    | ##################################### | 100% 
c-ares-1.17.1        | 108 KB    | ##################################### | 100% 
gst-plugins-base-1.1 | 4.9 MB    | ##################################### | 100% 
lazy-object-proxy-1. | 30 KB     | ##################################### | 100% 
packaging-21.0       | 36 KB     | ##################################### | 100% 
gstreamer-1.14.0     | 3.2 MB    | ##################################### | 100% 
scikit-image-0.18.1  | 9.5 MB    | ##################################### | 100% 
mypy_extensions-0.4. | 9 KB      | ##################################### | 100% 
itsdangerous-2.0.1   | 18 KB     | ##################################### | 100% 
xlsxwriter-3.0.1     | 111 KB    | ##################################### | 100% 
llvmlite-0.36.0      | 396 KB    | ##################################### | 100% 
astroid-2.6.6        | 309 KB    | ##################################### | 100% 
three-merge-0.1.1    | 10 KB     | ##################################### | 100% 
notebook-6.4.3       | 4.2 MB    | ##################################### | 100% 
mock-4.0.3           | 29 KB     | ##################################### | 100% 
fsspec-2021.7.0      | 91 KB     | ##################################### | 100% 
ipywidgets-7.6.3     | 105 KB    | ##################################### | 100% 
pip-21.0.1           | 1.8 MB    | ##################################### | 100% 
blosc-1.21.0         | 64 KB     | ##################################### | 100% 
qtpy-1.10.0          | 35 KB     | ##################################### | 100% 
beautifulsoup4-4.9.3 | 86 KB     | ##################################### | 100% 
openjpeg-2.4.0       | 331 KB    | ##################################### | 100% 
nbconvert-6.1.0      | 481 KB    | ##################################### | 100% 
json5-0.9.6          | 21 KB     | ##################################### | 100% 
jupyter_console-6.4. | 23 KB     | ##################################### | 100% 
scipy-1.6.2          | 15.6 MB   | ##################################### | 100% 
libwebp-base-1.2.0   | 437 KB    | ##################################### | 100% 
sphinxcontrib-jsmath | 8 KB      | ##################################### | 100% 
libgcc-ng-9.3.0      | 4.8 MB    | ##################################### | 100% 
defusedxml-0.7.1     | 23 KB     | ##################################### | 100% 
backports.shutil_get | 10 KB     | ##################################### | 100% 
dask-2021.8.1        | 18 KB     | ##################################### | 100% 
zipp-3.5.0           | 13 KB     | ##################################### | 100% 
ca-certificates-2021 | 113 KB    | ##################################### | 100% 
libstdcxx-ng-9.3.0   | 3.1 MB    | ##################################### | 100% 
toml-0.10.2          | 20 KB     | ##################################### | 100% 
harfbuzz-2.8.1       | 1.1 MB    | ##################################### | 100% 
backports-1.0        | 210 KB    | ##################################### | 100% 
sortedcontainers-2.4 | 26 KB     | ##################################### | 100% 
testpath-0.5.0       | 81 KB     | ##################################### | 100% 
pyflakes-2.2.0       | 56 KB     | ##################################### | 100% 
pyzmq-22.2.1         | 465 KB    | ##################################### | 100% 
singledispatch-3.7.0 | 12 KB     | ##################################### | 100% 
matplotlib-base-3.4. | 5.6 MB    | ##################################### | 100% 
pandoc-2.12          | 9.5 MB    | ##################################### | 100% 
xlrd-2.0.1           | 90 KB     | ##################################### | 100% 
nose-1.3.7           | 128 KB    | ##################################### | 100% 
statsmodels-0.12.2   | 8.5 MB    | ##################################### | 100% 
flask-1.1.2          | 70 KB     | ##################################### | 100% 
importlib-metadata-3 | 33 KB     | ##################################### | 100% 
alabaster-0.7.12     | 16 KB     | ##################################### | 100% 
sqlite-3.36.0        | 990 KB    | ##################################### | 100% 
rope-0.19.0          | 126 KB    | ##################################### | 100% 
send2trash-1.5.0     | 14 KB     | ##################################### | 100% 
cython-0.29.24       | 2.0 MB    | ##################################### | 100% 
nbformat-5.1.3       | 44 KB     | ##################################### | 100% 
libcurl-7.78.0       | 338 KB    | ##################################### | 100% 
threadpoolctl-2.2.0  | 16 KB     | ##################################### | 100% 
pytest-6.2.4         | 423 KB    | ##################################### | 100% 
pysocks-1.7.1        | 31 KB     | ##################################### | 100% 
distributed-2021.8.1 | 970 KB    | ##################################### | 100% 
pyyaml-5.4.1         | 174 KB    | ##################################### | 100% 
libgfortran4-7.5.0   | 995 KB    | ##################################### | 100% 
mkl_random-1.2.2     | 308 KB    | ##################################### | 100% 
seaborn-0.11.2       | 218 KB    | ##################################### | 100% 
prometheus_client-0. | 47 KB     | ##################################### | 100% 
debugpy-1.4.1        | 1.7 MB    | ##################################### | 100% 
pylint-2.9.6         | 488 KB    | ##################################### | 100% 
black-19.10b0        | 86 KB     | ##################################### | 100% 
glib-2.69.1          | 1.7 MB    | ##################################### | 100% 
fonttools-4.25.0     | 632 KB    | ##################################### | 100% 
partd-1.2.0          | 19 KB     | ##################################### | 100% 
jupyter_client-6.1.1 | 88 KB     | ##################################### | 100% 
matplotlib-3.4.2     | 26 KB     | ##################################### | 100% 
sortedcollections-2. | 12 KB     | ##################################### | 100% 
sphinxcontrib-serial | 25 KB     | ##################################### | 100% 
et_xmlfile-1.1.0     | 10 KB     | ##################################### | 100% 
dask-core-2021.8.1   | 715 KB    | ##################################### | 100% 
zeromq-4.3.4         | 331 KB    | ##################################### | 100% 
snappy-1.1.8         | 40 KB     | ##################################### | 100% 
sqlalchemy-1.4.22    | 1.8 MB    | ##################################### | 100% 
pygments-2.10.0      | 725 KB    | ##################################### | 100% 
nest-asyncio-1.5.1   | 10 KB     | ##################################### | 100% 
joblib-1.0.1         | 208 KB    | ##################################### | 100% 
traitlets-5.0.5      | 81 KB     | ##################################### | 100% 
mpmath-1.2.1         | 766 KB    | ##################################### | 100% 
lz4-c-1.9.3          | 185 KB    | ##################################### | 100% 
pillow-8.3.1         | 638 KB    | ##################################### | 100% 
ipython-7.26.0       | 994 KB    | ##################################### | 100% 
python-dateutil-2.8. | 233 KB    | ##################################### | 100% 
spyder-4.2.5         | 5.4 MB    | ##################################### | 100% 
pickleshare-0.7.5    | 13 KB     | ##################################### | 100% 
locket-0.2.1         | 10 KB     | ##################################### | 100% 
ld_impl_linux-64-2.3 | 586 KB    | ##################################### | 100% 
zope.interface-5.4.0 | 301 KB    | ##################################### | 100% 
textdistance-4.2.1   | 29 KB     | ##################################### | 100% 
numpy-base-1.20.3    | 4.5 MB    | ##################################### | 100% 
click-8.0.1          | 79 KB     | ##################################### | 100% 
sphinxcontrib-appleh | 29 KB     | ##################################### | 100% 
snowballstemmer-2.1. | 62 KB     | ##################################### | 100% 
zict-2.0.0           | 10 KB     | ##################################### | 100% 
py-1.10.0            | 76 KB     | ##################################### | 100% 
pycodestyle-2.6.0    | 38 KB     | ##################################### | 100% 
toolz-0.11.1         | 46 KB     | ##################################### | 100% 
brotlipy-0.7.0       | 323 KB    | ##################################### | 100% 
matplotlib-inline-0. | 12 KB     | ##################################### | 100% 
nbclient-0.5.3       | 62 KB     | ##################################### | 100% 
libxml2-2.9.12       | 1.2 MB    | ##################################### | 100% 
jeepney-0.7.1        | 38 KB     | ##################################### | 100% 
sympy-1.8            | 9.1 MB    | ##################################### | 100% 
certifi-2021.5.30    | 138 KB    | ##################################### | 100% 
conda-pack-0.6.0     | 29 KB     | ##################################### | 100% 
filelock-3.0.12      | 10 KB     | ##################################### | 100% 
mkl-2021.3.0         | 141.2 MB  | ##################################### | 100% 
ptyprocess-0.7.0     | 17 KB     | ##################################### | 100% 
jupyter_core-4.7.1   | 68 KB     | ##################################### | 100% 
jinja2-3.0.1         | 110 KB    | ##################################### | 100% 
attrs-21.2.0         | 46 KB     | ##################################### | 100% 
intel-openmp-2021.3. | 1.4 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: | 

    Installed package of scikit-learn can be accelerated using scikit-learn-intelex.
    More details are available here: https://intel.github.io/scikit-learn-intelex

    For example:

        $ conda install scikit-learn-intelex
        $ python -m sklearnex my_application.py

    

done
(base) [email protected]:~/Descargas$ conda create --name my_env
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /home/soloelectronicos/anaconda3/envs/my_env



Proceed ([y]/n)? y

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate my_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) [email protected]:~/Descargas$ conda activate my_env
(my_env) [email protected]:~/Descargas$ ls
Anaconda3-2020.11-Linux-x86_64.sh  Anaconda3-2021.05-Linux-x86_64.sh
(my_env) [email protected]:~/Descargas$ sudo conda activate my_env
[sudo] contraseña para soloelectronicos: 
sudo: conda: orden no encontrada
(my_env) [email protected]:~/Descargas$ conda activate my_env

Desinstalación de Anaconda

Para desinstalar Anaconda de su sistema, deberá instalar la utilidad de eliminación de Anaconda en su sistema.

Primero, instale la utilidad anaconda-clean con el siguiente comando:

conda instalar anaconda-clean

Una vez completada la instalación, elimine Anaconda con el siguiente comando:

anaconda-clean --sí

Debería obtener el siguiente resultado:

Directorio de respaldo: /root/.anaconda_backup/2021-01-07T084617

Primeros pasos con Jupyter Notebook


¿Qué es Jupyter Notebook?

Jupyter Notebook es una herramienta increíblemente poderosa para desarrollar y presentar proyectos de ciencia de datos de forma interactiva. Este post intentara guiarle de cómo usar Jupyter Notebooks para proyectos de ciencia de datos y cómo configurarlo en su máquina local.

jupyter-notebook las mejores herramientas gratuitas de ciencia de datos

Pero primero: ¿qué es un “cuaderno”?

Un cuaderno integra código y su salida en un solo documento que combina visualizaciones, texto narrativo, ecuaciones matemáticas y otros medios enriquecidos. En otras palabras: es un documento único en el que puede ejecutar código, mostrar el resultado y también agregar explicaciones, fórmulas, gráficos y hacer que su trabajo sea más transparente, comprensible, repetible y compartible. 

El uso de Notebooks es ahora una parte importante del flujo de trabajo de la ciencia de datos en empresas de todo el mundo. Si su objetivo es trabajar con datos, el uso de una computadora portátil acelerará su flujo de trabajo y facilitará la comunicación y el intercambio de resultados. 

Lo mejor de todo es que, como parte del proyecto de código abierto  Jupyter , los cuadernos de Jupyter son completamente gratuitos. Puede descargar el software  solo o como parte del kit de herramientas de ciencia de datos de Anaconda .

Aunque es posible utilizar muchos lenguajes de programación diferentes en Jupyter Notebooks, este artículo se centrará en Python, ya que es el caso de uso más común. (Entre los usuarios de R, R Studio  tiende a ser una opción más popular).Jupyter Notebooks también puede actuar como una plataforma flexible para familiarizarse con los pandas e incluso con Python, como se verá en este tutorial.

Algunas cosas que se veran en este post:

  • Cubrir los conceptos básicos de la instalación de Jupyter y la creación de su primer cuaderno
  • Profundizar y aprender toda la terminología importante
  • Explorear la facilidad con la que se pueden compartir y publicar en línea los blocs de notas.

Ejemplo de análisis de datos en un cuaderno Jupyter

Primero, recorreremos la configuración y un análisis de muestra para responder una pregunta de la vida real. Esto demostrará cómo el flujo de una computadora portátil hace que las tareas de ciencia de datos sean más intuitivas para nosotros mientras trabajamos y para otros una vez que llega el momento de compartir nuestro trabajo.

Entonces, digamos que es analista de datos y se le ha encomendado la tarea de averiguar cómo cambiaron históricamente las ganancias de las empresas más grandes de los EE. UU. Encontrará un conjunto de datos de compañías Fortune 500 que abarcan más de 50 años desde la primera publicación de la lista en 1955, reunidos a partir del archivo público de  Fortune . Seguimos adelante y creamos un CSV de los datos que puede usar  aquí .

Como demostraremos, los cuadernos de Jupyter son perfectamente adecuados para esta investigación. Primero, sigamos e instalemos Jupyter.

Instalación

La forma más fácil para que un principiante comience con Jupyter Notebooks es instalando  Anaconda .

Anaconda es la distribución de Python más utilizada para la ciencia de datos y viene precargada con todas las bibliotecas y herramientas más populares. 

Algunas de las bibliotecas de Python más grandes incluidas en Anaconda incluyen NumPy ,  pandas y  Matplotlib , aunque la  lista completa de más de 1000 es exhaustiva.

Por lo tanto, Anaconda nos permite comenzar con un taller de ciencia de datos completamente equipado sin la molestia de administrar innumerables instalaciones o preocuparse por las dependencias y los problemas de instalación específicos del sistema operativo (léase: específicos de Windows).

Para obtener Anaconda, simplemente:

  1. Descargue la última versión de Anaconda para Python 3.8.
  2. Instale Anaconda siguiendo las instrucciones en la página de descarga y / o en el ejecutable.

Si es un usuario más avanzado con Python ya instalado y prefiere administrar sus paquetes manualmente, puede usar pip :

pip3 install jupyter

Creación de su primer cuaderno

En esta sección, aprenderemos a ejecutar y guardar blocs de notas, a familiarizarnos con su estructura y a comprender la interfaz. Nos familiarizaremos con alguna terminología básica que lo guiará hacia una comprensión práctica de cómo usar Jupyter Notebooks por su cuenta y nos preparará para la siguiente sección, que recorre un ejemplo de análisis de datos y da vida a todo lo que aprendemos aquí.

Ejecutando Jupyter

En Windows, puede ejecutar Jupyter a través del acceso directo que Anaconda agrega a su menú de inicio, que abrirá una nueva pestaña en su navegador web predeterminado que debería parecerse a la siguiente captura de pantalla.

Panel de control de Jupyter

Este no es un cuaderno por el momento, ¡pero que no cunda el pánico! No hay mucho que hacer. Este es el panel de control del portátil, diseñado específicamente para administrar sus portátiles Jupyter. Piense en ello como la plataforma de lanzamiento para explorar, editar y crear sus cuadernos.

Tenga en cuenta que el panel le dará acceso solo a los archivos y subcarpetas que se encuentran dentro del directorio de inicio de Jupyter (es decir, donde está instalado Jupyter o Anaconda). Sin embargo, el directorio de inicio se puede cambiar .

También es posible iniciar el tablero en cualquier sistema a través del símbolo del sistema (o terminal en sistemas Unix) ingresando el comando jupyter notebook; en este caso, el directorio de trabajo actual será el directorio de inicio.

Con Jupyter Notebook abierto en su navegador, es posible que haya notado que la URL del panel de control es algo así como https://localhost:8888/tree. Localhost no es un sitio web, pero indica que el contenido se sirve desde su   máquina local : su propia computadora.

Los cuadernos y el tablero de Jupyter son aplicaciones web, y Jupyter inicia un servidor Python local para servir estas aplicaciones en su navegador web, lo que lo hace esencialmente independiente de la plataforma y abre la puerta para compartir más fácilmente en la web.

(Si aún no comprende esto, no se preocupe; el punto importante es que, aunque Jupyter Notebooks se abre en su navegador, está alojado y se ejecuta en su máquina local. Sus blocs de notas no están realmente en la web hasta que decide compartirlos.)

La interfaz del tablero se explica por sí misma, aunque volveremos a ella brevemente más adelante. entonces que estamos esperando ‘ Busque la carpeta en la que le gustaría crear su primer cuaderno, haga clic en el botón desplegable «Nuevo» en la parte superior derecha y seleccione «Python 3»:

Nuevo menú de cuaderno

¡Oye presto, aquí estamos! Su primer cuaderno de Jupyter se abrirá en una nueva pestaña; cada cuaderno usa su propia pestaña porque puede abrir varios cuadernos simultáneamente.

Si regresa al tablero, verá el nuevo archivo Untitled.ipynb y debería ver un texto verde que le indica que su computadora portátil se está ejecutando.

¿Qué es un archivo ipynb?

La respuesta corta: cada  archivo .ipynb es un cuaderno, por lo que cada vez que cree un nuevo cuaderno, se creará un nuevo   archivo .ipynb.  

La respuesta más larga: cada .ipynb archivo es un archivo de texto que describe el contenido de su cuaderno en un formato llamado  JSON . Cada celda y su contenido, incluidos los archivos adjuntos de imágenes que se han convertido en cadenas de texto, se enumeran allí junto con algunos  metadatos .

Puede editarlo usted mismo, ¡si sabe lo que está haciendo! – seleccionando «Editar> Editar metadatos del cuaderno» en la barra de menú del cuaderno. También puede ver el contenido de los archivos de su cuaderno seleccionando «Editar» en los controles del panel.

Sin embargo, la palabra clave puede. En la mayoría de los casos, no hay ninguna razón por la que deba editar manualmente los metadatos de su cuaderno.

La interfaz del portátil

Ahora que tiene un cuaderno abierto frente a usted, es de esperar que su interfaz no se vea del todo extraña. Después de todo, Jupyter es esencialmente un procesador de texto avanzado.

¿Por qué no echar un vistazo? Consulte los menús para familiarizarse con ellos, especialmente tómese unos minutos para desplazarse hacia abajo en la lista de comandos en la paleta de comandos, que es el botón pequeño con el ícono del teclado (o Ctrl + Shift + P).

Nuevo cuaderno de Jupyter

Hay dos términos bastante prominentes que debe notar, que probablemente sean nuevos para usted: las  células  y los  núcleos  son clave tanto para comprender Jupyter como para lo que lo convierte en algo más que un procesador de texto. Afortunadamente, estos conceptos no son difíciles de entender.

  • Un kernel es un «motor computacional» que ejecuta el código contenido en un documento de cuaderno.
  • Una celda es un contenedor para el texto que se mostrará en el cuaderno o el código que ejecutará el kernel del cuaderno.

Celdas

Regresaremos a los núcleos un poco más tarde, pero primero hablemos de las celdas. Las células forman el cuerpo de un cuaderno. En la captura de pantalla de un nuevo cuaderno en la sección anterior, ese cuadro con el contorno verde es una celda vacía. Hay dos tipos de células principales que cubriremos:

  • Una  celda de código contiene código que se ejecutará en el kernel. Cuando se ejecuta el código, el portátil muestra el resultado debajo de la celda de código que lo generó.
  • Una  celda de Markdown contiene texto formateado con Markdown y muestra su salida en el lugar cuando se ejecuta la celda de Markdown.

La primera celda de un cuaderno nuevo es siempre una celda de código.

Probémoslo con un ejemplo clásico de Hello World: escriba print('Hello World!') en la celda y haga clic en el botón Ejecutar  Botón de ejecución del cuaderno en la barra de herramientas de arriba o presione  Ctrl + Enter.

El resultado debería verse así:

print('Hello World!')
Hello World!

Cuando ejecutamos la celda, su salida se muestra a continuación y la etiqueta a su izquierda habrá cambiado de In [ ] a  In [1].

La salida de una celda de código también forma parte del documento, por lo que puede verla en este artículo. Siempre puede notar la diferencia entre el código y las celdas de Markdown porque las celdas de código tienen esa etiqueta a la izquierda y las celdas de Markdown no.

La parte «En» de la etiqueta es simplemente la abreviatura de «Entrada», mientras que el número de etiqueta indica cuándo se ejecutó la celda en el kernel; en este caso, la celda se ejecutó primero.

Ejecute la celda nuevamente y la etiqueta cambiará a In [2] porque ahora la celda fue la segunda en ejecutarse en el kernel. Será más claro por qué esto es tan útil más adelante cuando echemos un vistazo más de cerca a los núcleos.

En la barra de menú, haga clic en  Insertar  y seleccione  Insertar celda debajo  para crear una nueva celda de código debajo de la primera y pruebe el siguiente código para ver qué sucede. ¿Notas algo diferente?

import time
time.sleep(3)

Esta celda no produce ningún resultado, pero tarda tres segundos en ejecutarse. Observe cómo Jupyter significa cuando la celda se está ejecutando actualmente cambiando su etiqueta a In [*]

En general, la salida de una celda proviene de cualquier dato de texto impreso específicamente durante la ejecución de la celda, así como del valor de la última línea de la celda, ya sea una variable solitaria, una llamada de función u otra cosa. Por ejemplo:

def say_hello(recipient):
    return 'Hello, {}!'.format(recipient)

say_hello('Tim')
'Hello, Tim!'

Te encontrarás usando esto casi constantemente en tus propios proyectos, y veremos más de eso más adelante.

Atajos de teclado

Una última cosa que puede haber observado al ejecutar sus celdas es que su borde se vuelve azul, mientras que era verde mientras estaba editando. En un Jupyter Notebook, siempre hay una celda «activa» resaltada con un borde cuyo color denota su modo actual:

  • Contorno verde : la celda está en «modo de edición»
  • Contorno azul : la celda está en «modo de comando»

Entonces, ¿qué podemos hacer con una celda cuando está en modo comando? Hasta ahora, hemos visto cómo ejecutar una celda  Ctrl + Enter, pero hay muchos otros comandos que podemos usar. La mejor manera de usarlos es con atajos de teclado.

Los atajos de teclado son un aspecto muy popular del entorno de Jupyter porque facilitan un flujo de trabajo rápido basado en celdas. Muchas de estas son acciones que puede realizar en la celda activa cuando está en modo de comando.

A continuación, encontrará una lista de algunos de los atajos de teclado de Jupyter. No es necesario que los memorice todos de inmediato, pero esta lista debería darle una buena idea de lo que es posible.

  • Alternar entre los modos de edición y comando con  Esc y  Enter, respectivamente.
  • Una vez en el modo de comando:
    • Desplácese hacia arriba y hacia abajo en sus celdas con las   teclas Up y  Down.
    • Presione  A o  B para insertar una nueva celda encima o debajo de la celda activa.
    • M transformará la celda activa en una celda de Markdown.
    • Y establecerá la celda activa en una celda de código.
    • D + D ( D dos veces) eliminará la celda activa.
    • Z deshará la eliminación de la celda.
    • Mantenga  Shift presionado y presione  Up o  Downpara seleccionar varias celdas a la vez. Con varias celdas seleccionadas, Shift + M fusionará su selección.
  • Ctrl + Shift + -, en el modo de edición, dividirá la celda activa en el cursor.
  • También puede hacer clic Shift + Click en y  en el margen a la izquierda de sus celdas para seleccionarlas.

Continúe y pruébelos en su propio cuaderno. Una vez que esté listo, cree una nueva celda de Markdown y aprenderemos a formatear el texto en nuestros cuadernos.

Reducción

Markdown es un lenguaje de marcado ligero y fácil de aprender para formatear texto sin formato. Su sintaxis tiene una correspondencia uno a uno con las etiquetas HTML, por lo que algunos conocimientos previos aquí serían útiles, pero definitivamente no son un requisito previo.

Recuerda que este artículo fue escrito en un cuaderno de Jupyter, por lo que todo el texto narrativo y las imágenes que has visto hasta ahora se lograron escribiendo en Markdown. Cubramos los conceptos básicos con un ejemplo rápido:

# This is a level 1 heading

## This is a level 2 heading

This is some plain text that forms a paragraph. Add emphasis via **bold** and __bold__, or *italic* and _italic_. 

Paragraphs must be separated by an empty line. 

* Sometimes we want to include lists. 
* Which can be bulleted using asterisks. 

1. Lists can also be numbered. 
2. If we want an ordered list.

[It is possible to include hyperlinks](https://www.example.com)

Inline code uses single backticks: `foo()`, and code blocks use triple backticks: 
```
bar()
``` 
Or can be indented by 4 spaces: 

    foo()
    
And finally, adding images is easy: ![Alt text](https://www.example.com/image.jpg)

Así es como se vería Markdown una vez que ejecute la celda para renderizarlo:

(Tenga en cuenta que el texto alternativo de la imagen se muestra aquí porque en realidad no usamos una URL de imagen válida en nuestro ejemplo)

Al adjuntar imágenes, tiene tres opciones:

  • Utilice una URL para una imagen en la web.
  • Use una URL local para una imagen que mantendrá junto a su cuaderno, como en el mismo repositorio de git.
  • Agregue un archivo adjunto a través de «Editar> Insertar imagen»; esto convertirá la imagen en una cadena y la almacenará dentro de su .ipynbarchivo de cuaderno  . ¡Tenga en cuenta que esto hará que su .ipynb archivo sea mucho más grande!

Hay mucho más en Markdown, especialmente en torno a los hipervínculos, y también es posible incluir simplemente HTML simple. Una vez que se encuentre superando los límites de los conceptos básicos anteriores, puede consultar la guía oficial  del creador de Markdown, John Gruber, en su sitio web.

Granos

Detrás de cada portátil hay un kernel. Cuando ejecuta una celda de código, ese código se ejecuta dentro del kernel. Cualquier salida se devuelve a la celda para que se muestre. El estado del kernel persiste a lo largo del tiempo y entre celdas; pertenece al documento como un todo y no a celdas individuales.

Por ejemplo, si importa bibliotecas o declara variables en una celda, estarán disponibles en otra. Probemos esto para sentirlo. Primero, importaremos un paquete de Python y definiremos una función:

import numpy as np
def square(x):
    return x * x

Una vez que hayamos ejecutado la celda de arriba, podemos hacer referencia a np y  squareen cualquier otra celda. 

x = np.random.randint(1, 10)
y = square(x)
print('%d squared is %d' % (x, y))
1 squared is 1

Esto funcionará independientemente del orden de las celdas de su cuaderno. Siempre que se haya ejecutado una celda, las variables que declaró o las bibliotecas que importó estarán disponibles en otras celdas.

Puede probarlo usted mismo, imprimamos nuestras variables nuevamente.

print('Is %d squared %d?' % (x, y))
Is 1 squared 1?

¡No hay sorpresas aquí! Pero, ¿qué pasa si cambiamos el valor de  y?

y = 10
print('Is %d squared is %d?' % (x, y))

Si ejecutamos la celda de arriba, ¿qué crees que pasaría?

Obtendremos una salida como:  Is 4 squared 10?. Esto se debe a que una vez que hemos ejecutado la  y = 10celda de código, yya no es igual al cuadrado de x en el kernel. 

La mayoría de las veces, cuando crea un cuaderno, el flujo será de arriba hacia abajo. Pero es común volver atrás para realizar cambios. Cuando necesitamos realizar cambios en una celda anterior, el orden de ejecución que podemos ver a la izquierda de cada celda, por ejemplo In [6], puede ayudarnos a diagnosticar problemas al ver en qué orden se han ejecutado las celdas. 

Y si alguna vez deseamos restablecer las cosas, hay varias opciones increíblemente útiles en el menú Kernel:

  • Reiniciar: reinicia el kernel, borrando así todas las variables, etc.que fueron definidas.
  • Reiniciar y borrar la salida: igual que el anterior, pero también borrará la salida que se muestra debajo de las celdas de código.
  • Reiniciar y ejecutar todo: igual que el anterior, pero también ejecutará todas sus celdas en orden de la primera a la última.

Si su kernel se atasca alguna vez en un cálculo y desea detenerlo, puede elegir la opción Interrumpir.

Elegir un kernel

Es posible que haya notado que Jupyter le brinda la opción de cambiar el kernel y, de hecho, hay muchas opciones diferentes para elegir. Cuando creó un nuevo cuaderno desde el panel de control seleccionando una versión de Python, en realidad estaba eligiendo qué kernel usar.

Hay kernels para diferentes versiones de Python, y también para más de 100 lenguajes,  incluidos Java, C e incluso Fortran. Los científicos de datos pueden estar particularmente interesados ​​en los núcleos para  R  y  Julia , así como en  imatlab  y  Calysto MATLAB Kernel  para Matlab.

El kernel de SoS  proporciona compatibilidad con varios idiomas en un solo portátil.

Cada kernel tiene sus propias instrucciones de instalación, pero probablemente requiera que ejecute algunos comandos en su computadora.

¿Aprendiendo Python para la ciencia de datos?

¡Prueba una de nuestras más de 60 misiones gratuitas hoy!Empiece >>

Análisis de ejemplo

Ahora que hemos visto  qué es  un Jupyter Notebook, es hora de ver  cómo se utilizan en la práctica, lo que debería darnos una comprensión más clara de por  qué son tan populares.

Finalmente es hora de comenzar con ese conjunto de datos de Fortune 500 mencionado anteriormente. Recuerde, nuestro objetivo es averiguar cómo han cambiado históricamente las ganancias de las empresas más grandes de EE . UU .

Vale la pena señalar que todos desarrollarán sus propias preferencias y estilo, pero los principios generales aún se aplican. Si lo desea, puede seguir esta sección en su propio cuaderno o utilizarla como guía para crear su propio enfoque.

Nombrar sus cuadernos

Antes de comenzar a escribir su proyecto, probablemente querrá darle un nombre significativo. nombre de archivo Untitleden la parte superior izquierda de la pantalla para ingresar un nuevo nombre de archivo, y presione el icono Guardar (que parece un disquete) debajo de él para guardar.

Tenga en cuenta que cerrar la pestaña del cuaderno en su navegador no “cerrará” su cuaderno de la forma en que lo haría cerrar un documento en una aplicación tradicional. El kernel del portátil seguirá ejecutándose en segundo plano y debe cerrarse antes de que se «cierre» realmente, aunque esto es muy útil si cierra accidentalmente la pestaña o el navegador.

Si el kernel se apaga, puede cerrar la pestaña sin preocuparse de si todavía se está ejecutando o no. 

La forma más sencilla de hacerlo es seleccionar «Archivo> Cerrar y detener» en el menú de la libreta. Sin embargo, también puede apagar el kernel yendo a «Kernel> Shutdown» desde la aplicación de la computadora portátil o seleccionando la computadora portátil en el panel de control y haciendo clic en «Apagar» (vea la imagen a continuación).

Un cuaderno para correr

Configuración

Es común comenzar con una celda de código específicamente para las importaciones y la configuración, de modo que si elige agregar o cambiar algo, simplemente puede editar y volver a ejecutar la celda sin causar efectos secundarios.

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns sns.set(style="darkgrid")

Importaremos pandas  para trabajar con nuestros datos,  Matplotlib  para trazar gráficos y  Seaborn  para hacer que nuestros gráficos sean más bonitos. También es común importar  NumPy, pero en este caso, pandas lo importa por nosotros.

Esa primera línea no es un comando de Python, pero usa algo llamado magia de línea para indicarle a Jupyter que capture los diagramas de Matplotlib y los represente en la salida de la celda. Hablaremos un poco más sobre la magia de líneas más adelante, y también se tratan en nuestro tutorial avanzado de Jupyter Notebooks .

Por ahora, sigamos adelante y carguemos nuestros datos.

df = pd.read_csv('fortune500.csv')

Es sensato hacer esto también en una sola celda, en caso de que necesitemos recargarlo en algún momento.

Guardar y comprobar

Ahora que hemos comenzado, lo mejor es ahorrar con regularidad. Al presionar  Ctrl + Sguardará nuestro cuaderno llamando al comando «Guardar y punto de control», pero ¿qué es este punto de control?

Cada vez que creamos un nuevo cuaderno, se crea un archivo de punto de control junto con el archivo del cuaderno. Se encuentra dentro de un subdirectorio oculto de su ubicación de guardado llamado .ipynb_checkpoints y también es un  .ipynb archivo.

De forma predeterminada, Jupyter guardará automáticamente su cuaderno cada 120 segundos en este archivo de punto de control sin alterar el archivo de su cuaderno principal. Cuando «Guardar y punto de control», se actualizan tanto el cuaderno como los archivos del punto de control. Por lo tanto, el punto de control le permite recuperar su trabajo no guardado en caso de un problema inesperado.

Puede volver al punto de control desde el menú a través de «Archivo> Volver al punto de control».

Investigando nuestro conjunto de datos

¡Ahora estamos realmente rodando! Nuestro cuaderno se guarda de forma segura y hemos cargado nuestro conjunto de datos  df en la estructura de datos de pandas más utilizada, que se llama  DataFrame ay básicamente se parece a una tabla. ¿Qué aspecto tiene el nuestro?

df.head()
AñoRangoEmpresaIngresos (en millones)Beneficio (en millones)
019551Motores generales9823.5806
119552Exxon Mobil5661.4584,8
219553Acero de EE. UU.3250,4195,4
319554Energia General2959,1212,6
419555Esmark2510,819,1
df.tail()
AñoRangoEmpresaIngresos (en millones)Beneficio (en millones)
254952005496Wm. Wrigley Jr.3648,6493
254962005497Energía Peabody3631,6175,4
254972005498Wendy’s internacional3630,457,8
254982005499Kindred Healthcare3616,670,6
254992005500Cincinnati Financial3614.0584

Luciendo bien. Tenemos las columnas que necesitamos y cada fila corresponde a una sola empresa en un solo año.

Cambiemos el nombre de esas columnas para poder consultarlas más adelante.

df.columns = ['year', 'rank', 'company', 'revenue', 'profit']

A continuación, necesitamos explorar nuestro conjunto de datos. Esta completo? ¿Lo leyeron los pandas como se esperaba? ¿Falta algún valor?

len(df)
25500

De acuerdo, eso se ve bien, son 500 filas por cada año desde 1955 hasta 2005, inclusive.

Comprobemos si nuestro conjunto de datos se ha importado como era de esperar. Una simple verificación es ver si los tipos de datos (o dtypes) se han interpretado correctamente.

df.dtypes
year int64 rank int64 company object revenue float64 profit object dtype: object

UH oh. Parece que hay algún problema con la columna de ganancias; esperaríamos que fuera  float64 similar a la columna de ingresos. Esto indica que probablemente contiene algunos valores que no son enteros, así que echemos un vistazo.

non_numberic_profits = df.profit.str.contains('[^0-9.-]')
df.loc[non_numberic_profits].head()
añorangoempresaingresoslucro
2281955229Norton135,0N / A
2901955291Elaboración de cerveza Schlitz100,0N / A
2941955295Aceite vegetal del Pacífico97,9N / A
2961955297Cervecerías Liebmann96,0N / A
3521955353Minneapolis-Moline77,4N / A

¡Tal como sospechábamos! Algunos de los valores son cadenas, que se han utilizado para indicar datos faltantes. ¿Hay otros valores que se hayan infiltrado?

set(df.profit[non_numberic_profits])
{'N.A.'}

Eso hace que sea fácil de interpretar, pero ¿qué debemos hacer? Bueno, eso depende de cuántos valores falten.

len(df.profit[non_numberic_profits])
369

Es una pequeña fracción de nuestro conjunto de datos, aunque no del todo intrascendente, ya que todavía está en torno al 1,5%.

Si las filas que contienen N.A. están distribuidas de manera aproximada y uniforme a lo largo de los años, la solución más sencilla sería eliminarlas. Así que echemos un vistazo rápido a la distribución.

bin_sizes, _, _ = plt.hist(df.year[non_numberic_profits], bins=range(1955, 2006))
Falta distribución de valor

De un vistazo, podemos ver que los valores más inválidos en un solo año son menos de 25, y como hay 500 puntos de datos por año, eliminar estos valores representaría menos del 4% de los datos de los peores años. De hecho, aparte de un aumento en torno a los 90, la mayoría de los años tienen menos de la mitad de los valores faltantes del pico.

Para nuestros propósitos, digamos que esto es aceptable y continúe y elimine estas filas.

df = df.loc[~non_numberic_profits]
df.profit = df.profit.apply(pd.to_numeric)

Deberíamos comprobar que funcionó.

len(df)
25131
df.dtypes
year int64 rank int64 company object revenue float64 profit float64 dtype: object

¡Estupendo! Hemos terminado la configuración de nuestro conjunto de datos.

Si tuviéramos que presentar su cuaderno como un informe, podríamos deshacernos de las celdas de investigación que creamos, que se incluyen aquí como una demostración del flujo de trabajo con los cuadernos, y fusionar las celdas relevantes (consulte la sección Funcionalidad avanzada a continuación para más sobre esto) para crear una celda de configuración de un solo conjunto de datos.

Esto significaría que si alguna vez estropeamos nuestro conjunto de datos en otro lugar, podemos simplemente volver a ejecutar la celda de configuración para restaurarlo.

Trazando con matplotlib

A continuación, podemos llegar a abordar la cuestión en cuestión trazando el beneficio promedio por año. También podríamos trazar los ingresos, así que primero podemos definir algunas variables y un método para reducir nuestro código.

group_by_year = df.loc[:, ['year', 'revenue', 'profit']].groupby('year')
avgs = group_by_year.mean()
x = avgs.index
y1 = avgs.profit
def plot(x, y, ax, title, y_label):
    ax.set_title(title)
    ax.set_ylabel(y_label)
    ax.plot(x, y)
    ax.margins(x=0, y=0)

¡Ahora tramemos!

fig, ax = plt.subplots()
plot(x, y1, ax, 'Increase in mean Fortune 500 company profits from 1955 to 2005', 'Profit (millions)')
Aumento de las ganancias medias de las empresas incluidas en la lista Fortune 500 de 1955 a 2005

Vaya, eso parece exponencial, pero tiene algunas caídas enormes. Deben corresponder a la recesión de principios de la  década de 1990  y a la  burbuja de las puntocom . Es bastante interesante ver eso en los datos. Pero, ¿cómo es que las ganancias se recuperaron a niveles aún más altos después de cada recesión?

Quizás los ingresos puedan decirnos más.

y2 = avgs.revenue
fig, ax = plt.subplots()
plot(x, y2, ax, 'Increase in mean Fortune 500 company revenues from 1955 to 2005', 'Revenue (millions)')
Aumento de los ingresos medios de las empresas incluidas en la lista Fortune 500 de 1955 a 2005

Eso agrega otro lado a la historia. Los ingresos no se vieron tan afectados; ese es un gran trabajo contable de los departamentos de finanzas.

Con un poco de ayuda  de Stack Overflow , podemos superponer estos gráficos con +/- sus desviaciones estándar.

def plot_with_std(x, y, stds, ax, title, y_label):
    ax.fill_between(x, y - stds, y + stds, alpha=0.2)
    plot(x, y, ax, title, y_label)
fig, (ax1, ax2) = plt.subplots(ncols=2)
title = 'Increase in mean and std Fortune 500 company %s from 1955 to 2005'
stds1 = group_by_year.std().profit.values
stds2 = group_by_year.std().revenue.values
plot_with_std(x, y1.values, stds1, ax1, title % 'profits', 'Profit (millions)')
plot_with_std(x, y2.values, stds2, ax2, title % 'revenues', 'Revenue (millions)')
fig.set_size_inches(14, 4)
fig.tight_layout()
jupyter-notebook-tutorial_48_0

Eso es asombroso, ¡las desviaciones estándar son enormes! Algunas empresas de Fortune 500 ganan miles de millones mientras que otras pierden miles de millones, y el riesgo ha aumentado junto con el aumento de las ganancias a lo largo de los años.

Quizás algunas empresas se desempeñen mejor que otras; ¿Son las ganancias del 10% superior más o menos volátiles que las del 10% inferior?

Hay muchas preguntas que podríamos analizar a continuación, y es fácil ver cómo el flujo de trabajo en un cuaderno puede coincidir con el propio proceso de pensamiento. Para los propósitos de este tutorial, detendremos nuestro análisis aquí, ¡pero siéntase libre de continuar investigando los datos por su cuenta!

Este flujo nos ayudó a investigar fácilmente nuestro conjunto de datos en un solo lugar sin cambiar de contexto entre aplicaciones, y nuestro trabajo se puede compartir y reproducir de inmediato. Si quisiéramos crear un informe más conciso para una audiencia en particular, podríamos refactorizar rápidamente nuestro trabajo fusionando celdas y eliminando el código intermediario.

Compartir sus cuadernos

Cuando la gente habla de compartir sus cuadernos, generalmente hay dos paradigmas que pueden estar considerando.

La mayoría de las veces, las personas comparten el resultado final de su trabajo, al igual que este artículo, lo que significa compartir versiones no interactivas y pre-renderizadas de sus cuadernos. Sin embargo, también es posible colaborar en portátiles con la ayuda de sistemas de control de versiones como Git o plataformas online como Google Colab .

Antes de compartir

Un cuaderno compartido aparecerá exactamente en el estado en el que se encontraba cuando lo exporta o lo guarda, incluida la salida de las celdas de código. Por lo tanto, para asegurarse de que su computadora portátil esté lista para compartir, por así decirlo, hay algunos pasos que debe seguir antes de compartir:

  1. Haga clic en «Celda> Todos los resultados> Borrar».
  2. Haga clic en «Kernel> Reiniciar y ejecutar todo».
  3. Espere a que las celdas de su código terminen de ejecutarse y verifique que se haya ejecutado como se esperaba

Esto asegurará que sus cuadernos no contengan salida intermedia, tengan un estado obsoleto y se ejecuten en orden en el momento de compartir.

Exportación de sus cuadernos

Jupyter tiene soporte integrado para exportar a HTML y PDF, así como a varios otros formatos, que puede encontrar en el menú en «Archivo> Descargar como».

Si desea compartir sus cuadernos con un pequeño grupo privado, esta funcionalidad puede ser todo lo que necesite. De hecho, como a muchos investigadores de instituciones académicas se les proporciona un espacio web público o interno, y debido a que puede exportar un cuaderno a un archivo HTML, Jupyter Notebooks puede ser una forma especialmente conveniente para que los investigadores compartan sus resultados con sus pares.

Pero si compartir archivos exportados no es suficiente para usted, también existen algunos métodos inmensamente populares para compartir  .ipynb archivos más directamente en la web.

GitHub

Con la  cantidad de cuadernos públicos en GitHub que  excedieron los 1.8 millones a principios de 2018, seguramente es la plataforma independiente más popular para compartir proyectos de Jupyter con el mundo. GitHub tiene soporte integrado para renderizar  .ipynb archivos directamente tanto en repositorios como en esencias en su sitio web. Si aún no lo sabe,  GitHub  es una plataforma de alojamiento de código para el control de versiones y la colaboración para repositorios creados con  Git. . Necesitará una cuenta para utilizar sus servicios, pero las cuentas estándar son gratuitas.

Una vez que tenga una cuenta de GitHub, la forma más fácil de compartir un cuaderno en GitHub no requiere Git en absoluto. Desde 2008, GitHub ha proporcionado su servicio Gist para alojar y compartir fragmentos de código, cada uno de los cuales tiene su propio repositorio. Para compartir un cuaderno usando Gists:

  1. Inicie sesión y navegue hasta gist.github.com .
  2. Abra su  .ipynb archivo en un editor de texto, seleccione todo y copie el JSON dentro.
  3. Pegue el JSON del cuaderno en la esencia.
  4. Dale a tu Gist un nombre de archivo, recordando agregarlo  .iypnb o esto no funcionará.
  5. Haga clic en «Crear esencia secreta» o «Crear esencia pública».

Esto debería tener un aspecto similar al siguiente:

Creando una esencia

Si creó un Gist público, ahora podrá compartir su URL con cualquier persona, y otros podrán  bifurcar y clonar  su trabajo.

Crear tu propio repositorio de Git y compartirlo en GitHub está más allá del alcance de este tutorial, pero  GitHub proporciona muchas guías  para que comiences por tu cuenta.

Un consejo adicional para aquellos que usan git es  agregar una excepción  a su  .gitignore para los .ipynb_checkpoints directorios ocultos que  crea Jupyter, para no enviar archivos de puntos de control innecesariamente a su repositorio.

Nbviewer

Después de haber crecido hasta renderizar  cientos de miles  de cuadernos cada semana en 2015, NBViewer es el renderizador de cuadernos más popular en la web. Si ya tiene un lugar para alojar sus cuadernos de Jupyter en línea, ya sea en GitHub o en otro lugar, NBViewer renderizará su cuaderno y proporcionará una URL para compartir junto con él. Se proporciona como un servicio gratuito como parte del Proyecto Jupyter y está disponible en  nbviewer.jupyter.org .

Desarrollado inicialmente antes de la integración de Jupyter Notebook de GitHub, NBViewer permite que cualquier persona ingrese una URL, ID de Gist o nombre de usuario / repositorio / archivo de GitHub y mostrará el cuaderno como una página web. La ID de un Gist es el número único al final de su URL; por ejemplo, la cadena de caracteres después de la última barra invertida  https://gist.github.com/username/50896401c23e0bf417e89cd57e89e1de. Si ingresa un nombre de usuario o nombre de usuario / repositorio de GitHub, verá un explorador de archivos mínimo que le permite explorar los repositorios de un usuario y su contenido.

La URL que se muestra en NBViewer cuando se muestra un cuaderno es una constante basada en la URL del cuaderno que se está procesando, por lo que puede compartirla con cualquier persona y funcionará siempre que los archivos originales permanezcan en línea; NBViewer no almacena en caché los archivos durante mucho tiempo. largo.

Si no le gusta Nbviewer, existen otras opciones similares: aquí hay un hilo con algunos para considerar de nuestra comunidad.

Extras: Extensiones de Jupyter Notebook

Ya hemos cubierto todo lo que necesita para empezar a trabajar en Jupyter Notebooks.

¿Qué son las extensiones?

Las extensiones son precisamente lo que parecen: características adicionales que amplían la funcionalidad de Jupyter Notebooks. Si bien un Jupyter Notebook básico puede hacer mucho, las extensiones ofrecen algunas características adicionales que pueden ayudar con flujos de trabajo específicos o que simplemente mejoran la experiencia del usuario.

Por ejemplo, una extensión llamada «Tabla de contenido» genera una tabla de contenido para su cuaderno, para que los cuadernos grandes sean más fáciles de visualizar y navegar. 

Otro, llamado Inspector de variables, le mostrará el valor, el tipo, el tamaño y la forma de cada variable en su cuaderno para una fácil referencia rápida y depuración. 

Otro, llamado ExecuteTime, le permite saber cuándo y durante cuánto tiempo se ejecutó cada celda; esto puede ser particularmente conveniente si está tratando de acelerar un fragmento de su código.

Estos son solo la punta del iceberg; hay muchas extensiones disponibles.

¿Dónde puede obtener extensiones?

Para obtener las extensiones, debe instalar Nbextensions. Puede hacer esto usando pip y la línea de comando. Si tiene Anaconda, puede ser mejor hacerlo a través de Anaconda Prompt en lugar de la línea de comandos normal.

Cerrar Jupyter cuadernos, abierta Anaconda Prompt y ejecute el siguiente comando: pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install.

Una vez que haya hecho eso, inicie un cuaderno y debería ver una pestaña Nbextensions. Al hacer clic en esta pestaña, se le mostrará una lista de extensiones disponibles. Simplemente marque las casillas de las extensiones que desea habilitar y ¡listo para las carreras!

Instalación de extensiones

Una vez que se ha instalado Nbextensions, no es necesario realizar una instalación adicional de cada extensión. Sin embargo, si ya instaló Nbextensons pero no ve la pestaña, no está solo. Este hilo en Github detalla algunos problemas y soluciones comunes.

Extras: Line Magics en Jupyter

Anteriormente mencionamos los comandos mágicos cuando solíamos %matplotlib inlinehacer que los gráficos de Matplotlib se renderizaran directamente en nuestro cuaderno. También hay muchas otras magias que podemos usar.

Cómo usar magia en Jupyter

Un buen primer paso es abrir un Jupyter Notebook, escribir %lsmagicen una celda y ejecutar la celda. Esto generará una lista de las magias de línea y de celda disponibles, y también te dirá si «automagic» está activado. 

  • Las magias de línea operan en una sola línea de una celda de código
  • La magia celular opera en toda la celda de código en la que se llaman

Si automagic está activado, puede ejecutar una magia simplemente escribiéndola en su propia línea en una celda de código y ejecutando la celda. Si está desactivado, deberá poner   %antes de las magias de línea y   %%  antes de las magias de células para usarlas.

Muchas magias requieren información adicional (al igual que una función requiere un argumento) para decirles cómo operar. Veremos un ejemplo en la siguiente sección, pero puede ver la documentación de cualquier magia ejecutándola con un signo de interrogación, así:

%matplotlib?

Cuando ejecute la celda anterior en un cuaderno, aparecerá una larga cadena de documentos en la pantalla con detalles sobre cómo puede usar la magia.

Algunos comandos mágicos útiles

Cubrimos más en el tutorial avanzado de Jupyter , pero aquí hay algunos para comenzar:

Mando mágicoQue hace
%correrEjecuta un archivo de secuencia de comandos externo como parte de la celda que se está ejecutando.
Por ejemplo, si aparece % run myscript.py en una celda de código, el kernel ejecutará myscript.py como parte de esa celda.
%cronométraloCuenta bucles, mide e informa cuánto tiempo tarda en ejecutarse una celda de código.
% archivo de escrituraGuarde el contenido de una celda en un archivo.
Por ejemplo,  % savefile myscript.py guardaría la celda de código como un archivo externo llamado myscript.py.
%TiendaGuarde una variable para usarla en un cuaderno diferente.
% pwdImprima la ruta del directorio en el que está trabajando actualmente.
%% javascriptEjecuta la celda como código JavaScript.

Hay mucho más de donde vino eso. Ingrese a Jupyter Notebooks y comience a explorar usando%lsmagic !

Pensamientos finales

Comenzando desde cero, nos hemos familiarizado con el flujo de trabajo natural de Jupyter Notebooks, profundizamos en las funciones más avanzadas de IPython y finalmente aprendimos cómo compartir nuestro trabajo con amigos, colegas y el mundo. ¡Y logramos todo esto desde un propio cuaderno!

Debe quedar claro cómo los cuadernos promueven una experiencia de trabajo productiva al reducir el cambio de contexto y emular un desarrollo natural de pensamientos durante un proyecto. El poder de usar Jupyter Notebooks también debería ser evidente, y cubrimos muchos clientes potenciales para que comience a explorar más funciones avanzadas en sus propios proyectos.

Si desea obtener más inspiración para sus propios cuadernos, Jupyter ha creado  una galería de cuadernos de Jupyter interesantes  que pueden resultarle útiles y la  página de inicio de Nbviewer.  enlaces a algunos ejemplos realmente elegantes de cuadernos de calidad.

Estimación de máxima verosimilitud en Python


¿Qué pasa si una relación lineal no es un supuesto apropiado para nuestro modelo?

Una alternativa ampliamente propuesta por Thomas J. Sargent y John Stachurski es la estimación de máxima verosimilitud, que implica especificar una clase de distribuciones, indexadas por parámetros desconocidos, y luego usar los datos para precisar los valores de estos parámetros.

El beneficio relativo a la regresión lineal es que permite una mayor flexibilidad en las relaciones probabilísticas entre variables.

Aquí ilustramos la máxima probabilidad replicando el artículo de Daniel Treisman (2016) sobre los multimillonarios de Rusia , que conecta la cantidad de multimillonarios en un país con sus características económicas concluyendo que Rusia tiene una mayor cantidad de multimillonarios de lo que predicen factores económicos como el tamaño del mercado y la tasa impositiva.

Requeriremos las siguientes importaciones:

%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (11, 5)  #set default figure size
import numpy as np
from numpy import exp
from scipy.special import factorial
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
import statsmodels.api as sm
from statsmodels.api import Poisson
from scipy import stats
from scipy.stats import norm
from statsmodels.iolib.summary2 import summary_col

 Configuración y suposiciones 

Consideremos los pasos que debemos seguir en la estimación de máxima verosimilitud y cómo pertenecen a este estudio.

Flujo de ideas 

El primer paso con la estimación de máxima verosimilitud es elegir la distribución de probabilidad que se cree que genera los datos.

Más precisamente, necesitamos suponer qué clase de distribución paramétrica está generando los datos.

  • por ejemplo, la clase de todas las distribuciones normales o la clase de todas las distribuciones gamma.

Cada una de estas clases es una familia de distribuciones indexadas por un número finito de parámetros.

  • Por ejemplo, la clase de distribuciones normales es una familia de distribuciones indexadas por su media. μ∈(−∞,∞) y desviación estándar σ∈(0,∞).

Dejaremos que los datos seleccionen un elemento particular de la clase definiendo los parámetros.

Las estimaciones de parámetros así producidas se denominarán estimaciones de máxima verosimilitud .

 Contando multimillonarios 

Treisman está interesado en estimar el número de multimillonarios en diferentes países.El número de multimillonarios se valora en números enteros.Por lo tanto, consideramos distribuciones que toman valores solo en los enteros no negativos.

(Esta es una de las razones por las que la regresión por mínimos cuadrados no es la mejor herramienta para el problema actual, ya que la variable dependiente en la regresión lineal no está restringida a valores enteros)

Una distribución entera es la distribución de Poisson , cuya función de masa de probabilidad (pmf) esf(y)=μyy!e−μ,y=0,1,2,…,∞

Podemos trazar la distribución de Poisson sobre y para diferentes valores de μ como sigue

poisson_pmf = lambda y, μ: μ**y / factorial(y) * exp(-μ)
y_values = range(0, 25)

fig, ax = plt.subplots(figsize=(12, 8))

for μ in [1, 5, 10]:
    distribution = []
    for y_i in y_values:
        distribution.append(poisson_pmf(y_i, μ))
    ax.plot(y_values,
            distribution,
            label=f'$\mu$={μ}',
            alpha=0.5,
            marker='o',
            markersize=8)

ax.grid()
ax.set_xlabel('$y$', fontsize=14)
ax.set_ylabel('$f(y \mid \mu)$', fontsize=14)
ax.axis(xmin=0, ymin=0)
ax.legend(fontsize=14)

plt.show()

_images / mle_3_0.png

Observe que la distribución de Poisson comienza a parecerse a una distribución normal como la media de y aumenta.

Echemos un vistazo a la distribución de los datos con los que trabajaremos en esta conferencia.

La principal fuente de datos de Treisman son las clasificaciones anuales de multimillonarios de Forbes y su patrimonio neto estimado.

El conjunto de datos mle/fp.dtase puede descargar desde aquí o desde su página AER .

pd.options.display.max_columns = 10

# Load in data and view
df = pd.read_stata('https://github.com/QuantEcon/lecture-python/blob/master/source/_static/lecture_specific/mle/fp.dta?raw=true')
df.head()

paísccodeañoañoentumecidotopint08rintrnoyrsroflawnrrents
0Estados Unidos2.01990.021990.0Yaya39.7999994.98840520,01,61Yaya
1Estados Unidos2.01991.021991.0Yaya39.7999994.98840520,01,61Yaya
2Estados Unidos2.01992,021992.0Yaya39.7999994.98840520,01,61Yaya
3Estados Unidos2.01993.021993.0Yaya39.7999994.98840520,01,61Yaya
4Estados Unidos2.01994.021994.0Yaya39.7999994.98840520,01,61Yaya

5 filas × 36 columnas

Usando un histograma, podemos ver la distribución del número de multimillonarios por país numbil0, en 2008 (los Estados Unidos se descartan para fines de trazado)

numbil0_2008 = df[(df['year'] == 2008) & (
    df['country'] != 'United States')].loc[:, 'numbil0']

plt.subplots(figsize=(12, 8))
plt.hist(numbil0_2008, bins=30)
plt.xlim(left=0)
plt.grid()
plt.xlabel('Number of billionaires in 2008')
plt.ylabel('Count')
plt.show()

_images / mle_7_0.png

A partir del histograma, parece que la suposición de Poisson no es irrazonable (aunque con un valor muy bajo μ y algunos valores atípicos).

Distribuciones condicionales 

En el artículo de Treisman, la variable dependiente: el número de multimillonarios yi en el pais i – se modela en función del PIB per cápita, el tamaño de la población y los años de pertenencia al GATT y la OMC.

Por tanto, la distribución de yi necesita estar condicionado al vector de variables explicativas xi.

La formulación estándar, el llamado modelo de regresión de Poisson , es la siguiente:(58.1)f(yi∣xi)=μiyiyi!e−μi;yi=0,1,2,…,∞.where μi=exp⁡(xi′β)=exp⁡(β0+β1xi1+…+βkxik)

Para ilustrar la idea de que la distribución de yi depende de xi ejecutemos una simulación simple.

Usamos nuestra poisson_pmffunción de arriba y valores arbitrarios para β y xi

y_values = range(0, 20)

# Define a parameter vector with estimates
β = np.array([0.26, 0.18, 0.25, -0.1, -0.22])

# Create some observations X
datasets = [np.array([0, 1, 1, 1, 2]),
            np.array([2, 3, 2, 4, 0]),
            np.array([3, 4, 5, 3, 2]),
            np.array([6, 5, 4, 4, 7])]


fig, ax = plt.subplots(figsize=(12, 8))

for X in datasets:
    μ = exp(X @ β)
    distribution = []
    for y_i in y_values:
        distribution.append(poisson_pmf(y_i, μ))
    ax.plot(y_values,
            distribution,
            label=f'$\mu_i$={μ:.1}',
            marker='o',
            markersize=8,
            alpha=0.5)

ax.grid()
ax.legend()
ax.set_xlabel('$y \mid x_i$')
ax.set_ylabel(r'$f(y \mid x_i; \beta )$')
ax.axis(xmin=0, ymin=0)
plt.show()

_images / mle_9_0.png

Podemos ver que la distribución de yi está condicionado a xi (μi ya no es constante).

Estimación de máxima verosimilitud 

En nuestro modelo para el número de multimillonarios, la distribución condicional contiene 4 (k=4) parámetros que necesitamos estimar.

Etiquetaremos todo nuestro vector de parámetros como β dóndeβ=[β0β1β2β3]

Para estimar el modelo usando MLE, queremos maximizar la probabilidad de que nuestra estimación β^ es el verdadero parámetro β.

Intuitivamente, queremos encontrar el β^ que mejor se adapte a nuestros datos.

Primero, necesitamos construir la función de verosimilitud L(β), que es similar a una función de densidad de probabilidad conjunta.

Supongamos que tenemos algunos datos yi={y1,y2} y yi∼f(yi).

Si y1 y y2 son independientes, la PMF conjunta de estos datos es f(y1,y2)=f(y1)⋅f(y2).

Si yi sigue una distribución de Poisson con λ=7, podemos visualizar el PMF conjunto así

def plot_joint_poisson(μ=7, y_n=20):
    yi_values = np.arange(0, y_n, 1)

    # Create coordinate points of X and Y
    X, Y = np.meshgrid(yi_values, yi_values)

    # Multiply distributions together
    Z = poisson_pmf(X, μ) * poisson_pmf(Y, μ)

    fig = plt.figure(figsize=(12, 8))
    ax = fig.add_subplot(111, projection='3d')
    ax.plot_surface(X, Y, Z.T, cmap='terrain', alpha=0.6)
    ax.scatter(X, Y, Z.T, color='black', alpha=0.5, linewidths=1)
    ax.set(xlabel='$y_1$', ylabel='$y_2$')
    ax.set_zlabel('$f(y_1, y_2)$', labelpad=10)
    plt.show()

plot_joint_poisson(μ=7, y_n=20)

_images / mle_11_0.png

De manera similar, la pmf conjunta de nuestros datos (que se distribuye como una distribución condicional de Poisson) se puede escribir comof(y1,y2,…,yn∣x1,x2,…,xn;β)=∏i=1nμiyiyi!e−μi

yi está condicionado a ambos valores de xi y los parámetros β.

La función de verosimilitud es la misma que la pmf conjunta, pero trata el parámetro β como una variable aleatoria y toma las observaciones (yi,xi) como se indicaL(β∣y1,y2,…,yn ; x1,x2,…,xn)=∏i=1nμiyiyi!e−μi=f(y1,y2,…,yn∣ x1,x2,…,xn;β)

Ahora que tenemos nuestra función de verosimilitud, queremos encontrar el β^ que produce el valor de máxima verosimilitudmaxβL(β)

Al hacerlo, generalmente es más fácil maximizar la probabilidad logarítmica (considere diferenciar f(x)=xexp⁡(x) vs. f(x)=log⁡(x)+x).

Dado que tomar un logaritmo es una transformación creciente monótona, un maximizador de la función de verosimilitud también será un maximizador de la función logarítmica de verosimilitud.

En nuestro caso, la probabilidad logarítmica eslog⁡L(β)= log⁡(f(y1;β)⋅f(y2;β)⋅…⋅f(yn;β))=∑i=1nlog⁡f(yi;β)=∑i=1nlog⁡(μiyiyi!e−μi)=∑i=1nyilog⁡μi−∑i=1nμi−∑i=1nlog⁡y!

El MLE del Poisson al Poisson para β^ se puede obtener resolviendomaxβ(∑i=1nyilog⁡μi−∑i=1nμi−∑i=1nlog⁡y!)

Sin embargo, no existe una solución analítica para el problema anterior: para encontrar el MLE necesitamos usar métodos numéricos.

 MLE con métodos numéricos 

Muchas distribuciones no tienen buenas soluciones analíticas y, por lo tanto, requieren métodos numéricos para resolver las estimaciones de los parámetros.

Uno de esos métodos numéricos es el algoritmo de Newton-Raphson.

Nuestro objetivo es encontrar la estimación de máxima verosimilitud β^.

A β^, la primera derivada de la función logarítmica de verosimilitud será igual a 0.

Ilustremos esto suponiendolog⁡L(β)=−(β−10)2−10

β = np.linspace(1, 20)
logL = -(β - 10) ** 2 - 10
dlogL = -2 * β + 20

fig, (ax1, ax2) = plt.subplots(2, sharex=True, figsize=(12, 8))

ax1.plot(β, logL, lw=2)
ax2.plot(β, dlogL, lw=2)

ax1.set_ylabel(r'$log \mathcal{L(\beta)}$',
               rotation=0,
               labelpad=35,
               fontsize=15)
ax2.set_ylabel(r'$\frac{dlog \mathcal{L(\beta)}}{d \beta}$ ',
               rotation=0,
               labelpad=35,
               fontsize=19)
ax2.set_xlabel(r'$\beta$', fontsize=15)
ax1.grid(), ax2.grid()
plt.axhline(c='black')
plt.show()

_images / mle_13_0.png

La gráfica muestra que el valor de máxima verosimilitud (la gráfica superior) ocurre cuando dlog⁡L(β)dβ=0 (la trama inferior).

Por lo tanto, la probabilidad se maximiza cuando β=10.

También podemos asegurarnos de que este valor sea un máximo (en lugar de un mínimo) comprobando que la segunda derivada (pendiente del gráfico inferior) sea negativa.

El algoritmo de Newton-Raphson encuentra un punto donde la primera derivada es 0.

Para usar el algoritmo, hacemos una estimación inicial del valor máximo, β0 (las estimaciones de los parámetros de MCO pueden ser una suposición razonable), entonces

  1. Utilice la regla de actualización para iterar el algoritmoβ(k+1)=β(k)−H−1(β(k))G(β(k))dónde:G(β(k))=dlog⁡L(β(k))dβ(k)H(β(k))=d2log⁡L(β(k))dβ(k)dβ(k)′
  2. Compruebe si β(k+1)−β(k)<tol
    • Si es verdadero, deje de iterar y configure β^=β(k+1)
    • Si es falso, actualice β(k+1)

Como puede verse en la ecuación de actualización, β(k+1)=β(k) sólo cuando G(β(k))=0es decir. donde la primera derivada es igual a 0.

(En la práctica, dejamos de iterar cuando la diferencia está por debajo de un pequeño umbral de tolerancia)

Intentemos implementar el algoritmo de Newton-Raphson.

Primero, crearemos una clase llamada PoissonRegressionpara que podamos volver a calcular fácilmente los valores de probabilidad de registro, gradiente y hessiano para cada iteración.

class PoissonRegression:

    def __init__(self, y, X, β):
        self.X = X
        self.n, self.k = X.shape
        # Reshape y as a n_by_1 column vector
        self.y = y.reshape(self.n,1)
        # Reshape β as a k_by_1 column vector
        self.β = β.reshape(self.k,1)

    def μ(self):
        return np.exp(self.X @ self.β)

    def logL(self):
        y = self.y
        μ = self.μ()
        return np.sum(y * np.log(μ) - μ - np.log(factorial(y)))

    def G(self):
        y = self.y
        μ = self.μ()
        return X.T @ (y - μ)

    def H(self):
        X = self.X
        μ = self.μ()
        return -(X.T @ (μ * X))

Nuestra función newton_raphsontomará un PoissonRegressionobjeto que tiene una suposición inicial del vector de parámetrosβ0.

El algoritmo actualizará el vector de parámetros de acuerdo con la regla de actualización y volverá a calcular el gradiente y las matrices hessianas en las estimaciones de los nuevos parámetros.

La iteración terminará cuando:

  • La diferencia entre el parámetro y el parámetro actualizado está por debajo de un nivel de tolerancia.
  • Se ha alcanzado el número máximo de iteraciones (lo que significa que no se logra la convergencia).

Para que podamos tener una idea de lo que sucede mientras se ejecuta el algoritmo, display=Truese agrega una opción para imprimir valores en cada iteración.

def newton_raphson(model, tol=1e-3, max_iter=1000, display=True):

    i = 0
    error = 100  # Initial error value

    # Print header of output
    if display:
        header = f'{"Iteration_k":<13}{"Log-likelihood":<16}{"θ":<60}'
        print(header)
        print("-" * len(header))

    # While loop runs while any value in error is greater
    # than the tolerance until max iterations are reached
    while np.any(error > tol) and i < max_iter:
        H, G = model.H(), model.G()
        β_new = model.β - (np.linalg.inv(H) @ G)
        error = β_new - model.β
        model.β = β_new

        # Print iterations
        if display:
            β_list = [f'{t:.3}' for t in list(model.β.flatten())]
            update = f'{i:<13}{model.logL():<16.8}{β_list}'
            print(update)

        i += 1

    print(f'Number of iterations: {i}')
    print(f'β_hat = {model.β.flatten()}')

    # Return a flat array for β (instead of a k_by_1 column vector)
    return model.β.flatten()

Probemos nuestro algoritmo con un pequeño conjunto de datos de 5 observaciones y 3 variables en X.

X = np.array([[1, 2, 5],
              [1, 1, 3],
              [1, 4, 2],
              [1, 5, 2],
              [1, 3, 1]])

y = np.array([1, 0, 1, 1, 0])

# Take a guess at initial βs
init_β = np.array([0.1, 0.1, 0.1])

# Create an object with Poisson model values
poi = PoissonRegression(y, X, β=init_β)

# Use newton_raphson to find the MLE
β_hat = newton_raphson(poi, display=True)

Iteration_k  Log-likelihood  θ                                                           
-----------------------------------------------------------------------------------------
0            -4.3447622      ['-1.49', '0.265', '0.244']
1            -3.5742413      ['-3.38', '0.528', '0.474']
2            -3.3999526      ['-5.06', '0.782', '0.702']
3            -3.3788646      ['-5.92', '0.909', '0.82']
4            -3.3783559      ['-6.07', '0.933', '0.843']
5            -3.3783555      ['-6.08', '0.933', '0.843']
Number of iterations: 6
β_hat = [-6.07848205  0.93340226  0.84329625]

Como se trataba de un modelo simple con pocas observaciones, el algoritmo logró la convergencia en solo 6 iteraciones.

Puede ver que con cada iteración, el valor de probabilidad logarítmica aumentó.

Recuerde, nuestro objetivo era maximizar la función de probabilidad logarítmica, que el algoritmo ha trabajado para lograr.

Además, tenga en cuenta que el aumento en log⁡L(β(k)) se vuelve más pequeño con cada iteración.

Esto se debe a que el gradiente se acerca a 0 a medida que alcanzamos el máximo y, por lo tanto, el numerador de nuestra ecuación de actualización se hace más pequeño.

El vector de gradiente debe estar cerca de 0 en β^

poi.G()

array([[-3.95169228e-07],
       [-1.00114805e-06],
       [-7.73114562e-07]])

El proceso iterativo se puede visualizar en el siguiente diagrama, donde el máximo se encuentra en β=10

logL = lambda x: -(x - 10) ** 2 - 10

def find_tangent(β, a=0.01):
    y1 = logL(β)
    y2 = logL(β+a)
    x = np.array([[β, 1], [β+a, 1]])
    m, c = np.linalg.lstsq(x, np.array([y1, y2]), rcond=None)[0]
    return m, c

β = np.linspace(2, 18)
fig, ax = plt.subplots(figsize=(12, 8))
ax.plot(β, logL(β), lw=2, c='black')

for β in [7, 8.5, 9.5, 10]:
    β_line = np.linspace(β-2, β+2)
    m, c = find_tangent(β)
    y = m * β_line + c
    ax.plot(β_line, y, '-', c='purple', alpha=0.8)
    ax.text(β+2.05, y[-1], f'$G({β}) = {abs(m):.0f}$', fontsize=12)
    ax.vlines(β, -24, logL(β), linestyles='--', alpha=0.5)
    ax.hlines(logL(β), 6, β, linestyles='--', alpha=0.5)

ax.set(ylim=(-24, -4), xlim=(6, 13))
ax.set_xlabel(r'$\beta$', fontsize=15)
ax.set_ylabel(r'$log \mathcal{L(\beta)}$',
               rotation=0,
               labelpad=25,
               fontsize=15)
ax.grid(alpha=0.3)
plt.show()

_images / mle_23_0.png

Tenga en cuenta que nuestra implementación del algoritmo de Newton-Raphson es bastante básica; para implementaciones más sólidas, consulte, por ejemplo, scipy.optimize .

Estimación de máxima verosimilitud con statsmodels

Ahora que sabemos lo que está pasando bajo el capó, podemos aplicar MLE a una aplicación interesante.

Usaremos el modelo de regresión de Poisson statsmodelspara obtener una salida más rica con errores estándar, valores de prueba y más.

statsmodels utiliza el mismo algoritmo anterior para encontrar las estimaciones de máxima verosimilitud.

Antes de comenzar, volvamos a estimar nuestro modelo simple con statsmodels para confirmar que obtenemos los mismos coeficientes y valor logarítmico de verosimilitud.

X = np.array([[1, 2, 5],
              [1, 1, 3],
              [1, 4, 2],
              [1, 5, 2],
              [1, 3, 1]])

y = np.array([1, 0, 1, 1, 0])

stats_poisson = Poisson(y, X).fit()
print(stats_poisson.summary())

Optimization terminated successfully.
         Current function value: 0.675671
         Iterations 7
                          Poisson Regression Results                          
==============================================================================
Dep. Variable:                      y   No. Observations:                    5
Model:                        Poisson   Df Residuals:                        2
Method:                           MLE   Df Model:                            2
Date:                Thu, 15 Jul 2021   Pseudo R-squ.:                  0.2546
Time:                        00:14:01   Log-Likelihood:                -3.3784
converged:                       True   LL-Null:                       -4.5325
Covariance Type:            nonrobust   LLR p-value:                    0.3153
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const         -6.0785      5.279     -1.151      0.250     -16.425       4.268
x1             0.9334      0.829      1.126      0.260      -0.691       2.558
x2             0.8433      0.798      1.057      0.291      -0.720       2.407
==============================================================================

Ahora repliquemos los resultados del artículo de Daniel Treisman, Los multimillonarios de Rusia , mencionado anteriormente en la conferencia.

Treisman comienza estimando la ecuación (58.1) , donde:

  • yi es number of billionairesi
  • xi1 es log⁡GDP per capitai
  • xi2 es log⁡populationi
  • xi3 es years in GATTi – años de membresía en el GATT y la OMC (para poder acceder a los mercados internacionales)

El documento solo considera el año 2008 para la estimación.

Configuraremos nuestras variables para la estimación de esa manera (debe tener los datos asignados dfdesde antes en la lección)

# Keep only year 2008
df = df[df['year'] == 2008]

# Add a constant
df['const'] = 1

# Variable sets
reg1 = ['const', 'lngdppc', 'lnpop', 'gattwto08']
reg2 = ['const', 'lngdppc', 'lnpop',
        'gattwto08', 'lnmcap08', 'rintr', 'topint08']
reg3 = ['const', 'lngdppc', 'lnpop', 'gattwto08', 'lnmcap08',
        'rintr', 'topint08', 'nrrents', 'roflaw']

Entonces podemos usar la Poissonfunción de statsmodelspara ajustar el modelo.

Usaremos errores estándar robustos como en el artículo del autor.

# Specify model
poisson_reg = sm.Poisson(df[['numbil0']], df[reg1],
                         missing='drop').fit(cov_type='HC0')
print(poisson_reg.summary())

Optimization terminated successfully.
         Current function value: 2.226090
         Iterations 9
                          Poisson Regression Results                          
==============================================================================
Dep. Variable:                numbil0   No. Observations:                  197
Model:                        Poisson   Df Residuals:                      193
Method:                           MLE   Df Model:                            3
Date:                Thu, 15 Jul 2021   Pseudo R-squ.:                  0.8574
Time:                        00:14:01   Log-Likelihood:                -438.54
converged:                       True   LL-Null:                       -3074.7
Covariance Type:                  HC0   LLR p-value:                     0.000
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const        -29.0495      2.578    -11.268      0.000     -34.103     -23.997
lngdppc        1.0839      0.138      7.834      0.000       0.813       1.355
lnpop          1.1714      0.097     12.024      0.000       0.980       1.362
gattwto08      0.0060      0.007      0.868      0.386      -0.008       0.019
==============================================================================

¡Éxito! El algoritmo pudo lograr la convergencia en 9 iteraciones.

Nuestro resultado indica que el PIB per cápita, la población y los años de membresía en el Acuerdo General sobre Aranceles Aduaneros y Comercio (GATT) están relacionados positivamente con la cantidad de multimillonarios que tiene un país, como se esperaba.

Estimemos también los modelos más completos del autor y los mostraremos en una sola tabla.

regs = [reg1, reg2, reg3]
reg_names = ['Model 1', 'Model 2', 'Model 3']
info_dict = {'Pseudo R-squared': lambda x: f"{x.prsquared:.2f}",
             'No. observations': lambda x: f"{int(x.nobs):d}"}
regressor_order = ['const',
                   'lngdppc',
                   'lnpop',
                   'gattwto08',
                   'lnmcap08',
                   'rintr',
                   'topint08',
                   'nrrents',
                   'roflaw']
results = []

for reg in regs:
    result = sm.Poisson(df[['numbil0']], df[reg],
                        missing='drop').fit(cov_type='HC0',
                                            maxiter=100, disp=0)
    results.append(result)

results_table = summary_col(results=results,
                            float_format='%0.3f',
                            stars=True,
                            model_names=reg_names,
                            info_dict=info_dict,
                            regressor_order=regressor_order)
results_table.add_title('Table 1 - Explaining the Number of Billionaires \
                        in 2008')
print(results_table)

Table 1 - Explaining the Number of Billionaires                         in 2008
=================================================
                  Model 1    Model 2    Model 3  
-------------------------------------------------
const            -29.050*** -19.444*** -20.858***
                 (2.578)    (4.820)    (4.255)   
lngdppc          1.084***   0.717***   0.737***  
                 (0.138)    (0.244)    (0.233)   
lnpop            1.171***   0.806***   0.929***  
                 (0.097)    (0.213)    (0.195)   
gattwto08        0.006      0.007      0.004     
                 (0.007)    (0.006)    (0.006)   
lnmcap08                    0.399**    0.286*    
                            (0.172)    (0.167)   
rintr                       -0.010     -0.009    
                            (0.010)    (0.010)   
topint08                    -0.051***  -0.058*** 
                            (0.011)    (0.012)   
nrrents                                -0.005    
                                       (0.010)   
roflaw                                 0.203     
                                       (0.372)   
Pseudo R-squared 0.86       0.90       0.90      
No. observations 197        131        131       
=================================================
Standard errors in parentheses.
* p<.1, ** p<.05, ***p<.01

El resultado sugiere que la frecuencia de multimillonarios se correlaciona positivamente con el PIB per cápita, el tamaño de la población, la capitalización del mercado de valores y se correlaciona negativamente con la tasa de impuesto sobre la renta marginal máxima.

Para analizar nuestros resultados por país, podemos trazar la diferencia entre los valores predichos y reales, luego ordenar de mayor a menor y trazar los primeros 15

data = ['const', 'lngdppc', 'lnpop', 'gattwto08', 'lnmcap08', 'rintr',
        'topint08', 'nrrents', 'roflaw', 'numbil0', 'country']
results_df = df[data].dropna()

# Use last model (model 3)
results_df['prediction'] = results[-1].predict()

# Calculate difference
results_df['difference'] = results_df['numbil0'] - results_df['prediction']

# Sort in descending order
results_df.sort_values('difference', ascending=False, inplace=True)

# Plot the first 15 data points
results_df[:15].plot('country', 'difference', kind='bar',
                    figsize=(12,8), legend=False)
plt.ylabel('Number of billionaires above predicted level')
plt.xlabel('Country')
plt.show()

_images / mle_33_0.png

Como podemos ver, Rusia tiene, con mucho, el mayor número de multimillonarios por encima de lo que predice el modelo (alrededor de 50 más de lo esperado).

Treisman usa este resultado empírico para discutir las posibles razones del exceso de multimillonarios de Rusia, incluido el origen de la riqueza en Rusia, el clima político y la historia de la privatización en los años posteriores a la URSS.

Fuente https://python.quantecon.org/mle.html

Introducción a python científico


Muchas áreas de carácter científico-técnico la adecuada elección del software y/o lenguaje de programación empleado es determinante, de cara a la potencia, versatilidad, facilidad de uso y acceso por parte de todos los usuarios en sus propios dispositivos, de manera generalizada y gratuita.

Dentro del software libre, uno de los que últimamente ha tenido una mejora sustancial, con la inclusión de potentes y versátiles nuevos módulos de cálculo simbólico (SymPy), numérico (NumPy, SciPy) y gráfico (PyPlot y Matplotlib) ha sido sin duda Python, y de ahí su vertiginosa evolución y expansión a nivel mundial, no sólo en el ámbito académico, sino también en el científico e industrial. De hecho, basta con echar un vistazo a las numerosas propuestas, tanto de comunidades de desarrolladores como de empresas privadas, surgidas a raíz de la versión de base inicial de Python, como por ejemplo IPython (interface interactivo de fácil uso, que gracias a Jupyter Notebook permite una versión HTML similar a los notebooks de Mathematica o Mapple) o Spyder (entorno integrado para cálculo científico parecido al de Matlab u Octave).

Por otro lado existen versiones completas de desarrollo, integrando Python como soporte de cálculo, pero con editores avanzados de texto para la programación y la depuración de código, ventanas de gráficos y datos, etc. La mayoría de estas plataformas integradas están disponibles para los distintos sistemas operativos Linux, MacOS X y Windows. Entre ellas cabría destacar Enthought Python Distribution (EPD), PyCharm y Anaconda CE (de Continuum Analytics).

Aunque no podamos abarcar todos los aspectos «básicos» del python científico, intentaremos en este resumen dar una idea de las principales librerías un funciones que podemos usar para NILM (Non-Intrusive Load Monitoring) sin olvidar los fundamentos de :Matplotlib y Numpy

Matplotlib: visualización con Python 

Matplotlib es una biblioteca completa para crear visualizaciones estáticas, animadas e interactivas en Python haciendo que las cosas fáciles sean fáciles y las difíciles posibles.

Nos permite crear :

  • Desarrollando gráficos de calidad de publicación con solo unas pocas líneas de código
  • Utilizando figuras interactivas que puedan hacer zoom, desplazarse, actualizar …

Personalizar

  • Tomando el control total de los estilos de línea, las propiedades de la fuente, las propiedades de los ejes …
  • Exportando e incrustando en varios formatos de archivo y entornos interactivos

Ampliar

  • Explorando la funcionalidad personalizada proporcionada por paquetes de terceros
  • Obteniendo más información sobre Matplotlib a través de los numerosos recursos de aprendizaje externos

Matplotlib es en resumen la librería de python para dibujar (equivalente al plot en matlab).

matplotlib

Puede encontrar mas información en el sitio oficial https://matplotlib.org/

Numpy

NumPy es una biblioteca para el lenguaje de programación Python que da soporte para crear vectores y matrices grandes multidimensionales, junto con una gran colección de funciones matemáticas de alto nivel para operar con ellas.

Numpy es pues una librería especializada para operaciones con matrices y vectores

Puede encontrar mas información en l sitio oficial https://numpy.org/

La imagen tiene un atributo ALT vacío; su nombre de archivo es image-11.png

Primeros pasos

Primero, es necesario importarlas al workspace

import numpy as np
import matplotlib.pyplot as plt

Opciones de visualizacion de matplotlib para un notebook

%matplotlib inline
plt.rcParams['figure.figsize'] = (13, 6)
plt.style.use('ggplot')

Otras importaciones:

import warnings
warnings.filterwarnings('ignore')

Crear arrays en python es muy sencillo y se puede hacer de forma nativa usando un tipo list. Sin embargo, aquí consideramos arrays del tipo numpy pues esto arrays incluyen funciones que facilitan las operaciones matemáticas y su manipulación

v=[1,2,3] # tipo list
v=np.array([1,2,3]) # array numpy
print (v)
print ("Dimensiones: " + str(v.ndim)) # numero de dimensiones
print ("Elementos: " + str(v.size)) # numero de elementos
print ("Longitud de las dimensiones: " + str(v.shape)) # longitud de cada dimensión
[1 2 3]
Dimensiones: 1
Elementos: 3
Longitud de las dimensiones: (3,)

Crear una matriz de 2 x 3:

v=np.array([[1,2,3], [4,5,6]])
print (v)
print ('Dimensiones: ' + str(v.ndim)) # numero de dimensiones
print ('Elementos: '+str(v.size)) # numero de elementos
print ('Longitud de las dimensiones: '+str(v.shape)) # longitud de cada dimensión
[[1 2 3]
 [4 5 6]]
Dimensiones: 2
Elementos: 6
Longitud de las dimensiones: (2, 3)

Crear una Matriz triple de 2 x 3 x 2 :

v=np.array([[[1,2], [3,4]],[[5,6],  [7,8]]])
print (v)
print ("Dimensiones: " + str(v.ndim)) # numero de dimensiones
print ("Elementos: "+str(v.size)) # numero de elementos
print ("Longitud de las dimensiones: "+str(v.shape) )# longitud de cada dimensión

[[[1 2], 
      [3 4]],

 [[5 6], 
      [7 8]]]
Dimensiones: 3
Elementos: 8
Longitud de las dimensiones: (2, 2, 2)

Utilizamos la función reshape para redimensionar los arrays

1 dimension

print (v.reshape(8,))
[1 2 3 4 5 6 7 8]

2 dimensiones

print (v.reshape(2,4))
[[1 2 3 4]
 [5 6 7 8]]

Matriz Identidad de 5×5

print (np.identity(5))
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

Matriz de unos de 5×5

print ( np.ones([5,5]))
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]

Matriz de ceros de 5×5:

print (np.zeros([5,5]))
[[0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0.]]

Las operaciones por definición son elementwise

a=np.arange(5)
b=10*np.ones(5)
print ("vector a: "+str(a))
print ("vector b: "+str(b))
print ("suma b+a: "+str(b-a))
print ("resta b-a: "+str(b+a))
print ("producto b*a: "+str(b*a))
vector a: [0 1 2 3 4]
vector b: [10. 10. 10. 10. 10.]
suma b+a: [10.  9.  8.  7.  6.]
resta b-a: [10. 11. 12. 13. 14.]
producto b*a: [ 0. 10. 20. 30. 40.]

El producto de los vectores es:

a.dot(b)
100.0

Para las matrices tenemos que:

a=np.identity(3)
b=np.array([[1,2,3],[4,5,6],[7,8,9]])
print ("matriz a:\n"+str(a))
print ("matriz b:\n"+str(b))
print ("producto a*b:\n"+str(a.dot(b)))
print ("producto elementwise a.*b:\n"+str(a*b))
matriz a:
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
matriz b:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
producto a*b:
[[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]
producto elementwise a.*b:
[[1. 0. 0.]
 [0. 5. 0.]
 [0. 0. 9.]]

Vector formado por un rango de valores:

print ("De 0 a 10: " + str(np.arange(10)))
print ("De 10 a 20 de paso 0.5: "+str(np.arange(10,20,0.5)))
De 0 a 10: [0 1 2 3 4 5 6 7 8 9]
De 10 a 20 de paso 0.5: [10.  10.5 11.  11.5 12.  12.5 13.  13.5 14.  14.5 15.  15.5 16.  16.5
 17.  17.5 18.  18.5 19.  19.5]

Función linspace:

np.linspace(0,2*np.pi,10) # de 0 a 2*pi en 10 puntos equidistantes
array([0.        , 0.6981317 , 1.3962634 , 2.0943951 , 2.7925268 ,
       3.4906585 , 4.1887902 , 4.88692191, 5.58505361, 6.28318531])

función random:

np.random.rand(10)
array([0.63623588, 0.83924558, 0.35833155, 0.33835148, 0.53247758,
       0.0950348 , 0.2805706 , 0.47285484, 0.8696919 , 0.78361161])

Dibujar una función seno

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t, s)
plt.xlabel('time (s)')
plt.ylabel('voltage (mV)')
plt.title('Sinusoidal')
plt.grid(True)

Dibujar una función chirp

x=np.linspace(0,3*np.pi,500)
plt.plot(x,np.sin(x**2))
plt.title("A simple chirp")
Text(0.5, 1.0, 'A simple chirp')

Definir una función en Python

En python, las funciones pueden estar definidas en cualquier parte pero siempre antes de su llamada. En python, las anidaciones (bucles, if conditions, functions, etc.) se realizan mediante indentación, no existe el statement end. Las funciones se definen así:

def funcion_suma(x): 
    suma=0
    for i in x: 
        suma=suma+i
    return suma 
v=np.arange(10)
print (funcion_suma(v))
45

Aunque, como hemos dicho antes, numpy facilita las operaciones matemáticas y ya incluye una serie de operaciones:

print (v.sum())
print (v.cumsum())
print (v.mean())
45
[ 0  1  3  6 10 15 21 28 36 45]
4.5

Para saber más sobre numpy:

https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

http://www.sam.math.ethz.ch/~raoulb/teaching/PythonTutorial/intro_numpy.html

(O simplemente «googleando»: numpy tutorial)

Pandas

Pandas (Python Data Analysis Library) es una librería de python para el análisis y manipulación de una gran cantidad de datos. También facilita el uso de «timeseries»

La llamada a la librería es:

import pandas as pd

Dado un archivo csv, la función read_csv carga los datos en un dataframe

# El parámetro parse_dates indica a pandas que al cargar este csv la primera columna [0] es de tipo datetime
df=pd.read_csv('data/events.csv',parse_dates=[0])

Las primeras N filas del dataFrame se puede visualizar de la siguiente forma

N=4
df.head(N)
timestamplabelphase
02011-10-20 12:22:01.473111A
12011-10-20 12:37:40.507111A
22011-10-20 13:23:55.390111A
32011-10-20 13:39:08.157111A

Y las N últimas columnas

df.tail(N)
timestamplabelphase
24812011-10-27 12:57:17.079111A
24822011-10-27 13:10:45.112111A
24832011-10-27 13:54:08.862111A
24842011-10-27 14:07:21.612111A

Podemos filtar por un cierto valor

df[df.phase=='B'].head()
timestamplabelphase
122011-10-20 15:45:54.590204B
132011-10-20 15:47:31.223204B
142011-10-20 16:09:00.424204B
182011-10-20 17:42:00.657155B
192011-10-20 17:42:04.407157B

Y hacer agrupaciones

df2=df.sort_values(['label','phase']).groupby(['label','phase']).count()
df2
timestamp
labelphase
101B26
102B25
103B24
108A16
111A619
1125A1
1126A1
1127A1
1200A1
1201A1

161 rows × 1 columns

Las nuevas columnas se crean fácilmente. Compatible con numpy.

df['x']=25*np.random.rand(len(df))
df['y']=100*np.sin(2*np.pi*np.linspace(0,2*np.pi,len(df)))
df['z']=df.x+df.y
df.head(5)
timestamplabelphasexyz
02011-10-20 12:22:01.473111A0.0167760.0000000.016776
12011-10-20 12:37:40.507111A5.6400571.5892417.229298
22011-10-20 13:23:55.390111A5.6322523.1780818.810333
32011-10-20 13:39:08.157111A9.2871414.76611914.053259
42011-10-20 14:25:51.473111A9.3135696.35295215.666521

Para dibujar sólo necesitamos usar la función plot

df.z.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e3ba88080>

Existen ciertas funciones predefinidas que facilitan los cálculos

df.z.cumsum().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e3b801e80>

Y se pueden concatenar

# Si integramos y derivamos obtenemos la misma señal
df.z.cumsum().diff().plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e32625320>

Unas de las herramientas más potentes de pandas es la manipulación de timeseries

df.index=df.timestamp
df.z.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e325e6518>

Podemos filtar por fechas

d1='2011-10-21'
d2='2011-10-23'
df[(df.index>d1)&(df.index<d2)].z.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e325d5588>

Existe una gran flexibilidad a la hora de resamplear un dataframe

# Cada día 
df.resample('1D',how='sum')
labelxyz
timestamp
2011-10-20233182044.60316112047.56801914092.171180
2011-10-21507894364.168081-4531.116500-166.948419
2011-10-221356456971.7315141811.9787858783.710300
2011-10-231021845445.726210-4029.5292421416.196968
2011-10-24462593554.5631237284.89716310839.460286
2011-10-25525523933.715959-4712.890577-779.174618
2011-10-26590843503.958137-7682.254604-4178.296467
2011-10-27181921325.9193697454.6146868780.534055
# Cada 6 horas
df.resample('6H',how='count')
timestamplabelphasexyz
timestamp
2011-10-20 12:00:00373737373737
2011-10-20 18:00:00135135135135135135
2011-10-21 00:00:00160160160160160160
2011-10-21 06:00:00676767676767
2011-10-21 12:00:00262626262626
2011-10-21 18:00:00828282828282
2011-10-22 00:00:00242424242424
2011-10-22 06:00:00107107107107107107
2011-10-22 12:00:00215215215215215215
2011-10-22 18:00:00203203203203203203
2011-10-23 00:00:00636363636363
2011-10-23 06:00:00646464646464
2011-10-23 12:00:00737373737373
2011-10-23 18:00:00237237237237237237
2011-10-24 00:00:00363636363636
2011-10-24 06:00:00393939393939
2011-10-24 12:00:00494949494949
2011-10-24 18:00:00162162162162162162
2011-10-25 00:00:00333333333333
2011-10-25 06:00:00919191919191
2011-10-25 12:00:00373737373737
2011-10-25 18:00:00152152152152152152
2011-10-26 00:00:00232323232323
2011-10-26 06:00:00616161616161
2011-10-26 12:00:00161616161616
2011-10-26 18:00:00196196196196196196
2011-10-27 00:00:00363636363636
2011-10-27 06:00:00555555555555
2011-10-27 12:00:00666666

Para aprender más sobre pandas:

http://pandas.pydata.org/pandas-docs/stable/tutorials.html

http://pandas.pydata.org/pandas-docs/stable/10min.html

Detector de eventos

Vamos a crear un detector de eventos.

Dado el consumo eléctrico de una vivienda (voltage y corriente) queremos detectar en que momento se produce una conexión de un dispositivo. Para ello, filtraremos la señal sinusoidal obteniendo el valor eficaz de la corriente cada cierto intervalo. Los cambios en el valor eficaz van a determinar las conexiones y desconexiones de los distintos dispositivos. Derivando este valor eficaz, obtenemos picos en los que existe un cambio en el valor eficaz y, por lo tanto, posibles candidatos a eventos de conexión/desconexión. Finalmente, usando un detector de picos filtraremos los eventos reales del resto.

Mediremos nuestros resultados usando métricas estándar de NILM.

Paso por paso

Importar pandas, numpy y matplotlib tal y como se ha visto anteriormente

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Definir una funcion llamada rms_function que devuelva un valor rms y que tenga como parámetro de entrada un vector de valores

# función rms 
def rms_function(x): 
    return np.sqrt(np.mean(np.square(x)))

Usar el siguiente path para cargar los datos en un dataframe df de pandas. Como parámetros: el índice es la columna 0 (index_col) y la fecha está en la columna 1 (parse_dates)

path='data/smart_meter_data.csv'
df= ...
path='data/smart_meter_data.csv'
df=pd.read_csv(path, parse_dates=[1],index_col=[0])

Mostrar las 5 primeras columnas del dataframe

df.head(5)
datetimeivlabelappl_namephase
02011-10-20 12:21:58.9730000.444955159.194375111RefrigeratorA
12011-10-20 12:21:58.9730830.402501160.677554111RefrigeratorA
22011-10-20 12:21:58.9731660.444955161.845163111RefrigeratorA
32011-10-20 12:21:58.9732491.102993163.107443111RefrigeratorA
42011-10-20 12:21:58.9733321.952074164.243495111RefrigeratorA

Imprimir mínimo y máximo de datetime y la diferencia de ambos

print (df.datetime.min())
print (df.datetime.max())
print (df.datetime.max()-df.datetime.min())
2011-10-20 12:21:58.973000
2011-10-20 12:23:03.713996
0 days 00:01:04.740996

Seleccionar datetime como índice del dataframe df

df.index=df.datetime

Periodo y frequencia de muestreo

# frecuencia
ts=df.datetime.diff().mean().total_seconds()
print (str(ts)+' seconds')
fs=1/ts
print ( str(fs)+' Hz')
8.3e-05 seconds
12048.192771084337 Hz

Dibujar Voltage (v) haciendo zoom en el intervalo de 100ms (6 periodos aproximadamente)

d1='2011-10-20 12:22:29.9'
d2='2011-10-20 12:22:30'
df[(df.index>d1)&(df.index<d2)].v.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e2b9f86d8>
df.i.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e2e274d30>

Resamplear mediante la función resample de pandas a 50ms (’50L’). La función rms_function se pasará como parámetro para obtener cada valor del resampleado. El resultado debe de guardarse en un dataframe nuevo llamado rms . Dibujar el resultado.

rms=pd.DataFrame(df.i.resample(....))
rms=pd.DataFrame(df.i.resample('50L',how=rms_function))
rms.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e2f8848d0>

Hacer la derivada del dataframe rms y guardar el resultado en rms_diff.

rms_diff=rms.diff()

Dibujar el resultado (rms_diff)

rms_diff.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e2f7f9fd0>

Guardar los valores de la columna «i» en una variable «y» en forma de array

y=rms_diff.i.values
Modifica los parámetros th_noise y dist de la función detect_peaks para obener los índices de los eventos y evaluar las métricas. Realizar el proceso 3 veces. ¿ Con qué valores de th_noise y dist se obtienen mejores resultados en las métricas?
th_noise=5
dist=5
from detect_peaks import detect_peaks
indexes=detect_peaks(y,mph=th_noise,mpd=dist)
dates=rms_diff.ix[indexes].index

Cuantos eventos hemos detectado

print (str(len(indexes))+' eventos detectados')
8 eventos detectados

Dibujamos los eventos y la corriente en una misma gráfica

plt.vlines(dates,-80,80)
df.i.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f6e2f79ca58>

Métricas

from IPython.display import Image
Image(filename='metricas1.png')
Image(filename='metricas2.png')

Obtener las métricas: recall, precision y F1

FP=0.
P=9.
N=len(df)-P
TN=N-FP
P=9.
N=len(df)-P
TP=8.
FP=0.
FN=1.
TN=N-FP
recall=TP/(TP+FN)
precision=TP/(TP+FP)
F1=2*precision*recall/(precision+recall)
print (recall)
print (precision)
print (F1)
0.8888888888888888
1.0
0.9411764705882353

*Parámetros optimizados: * th_noise=0.1 y dist=5

*Con esto obtenemos : * recall=1, precision=1 y F1=1;

Instalación de Anaconda en Ubuntu


Diseñado para los flujos de trabajo de ciencia de los datos y aprendizaje automático, Anaconda es un gestor de paquetes de código abierto, gestor de entornos y distribución de los lenguajes de programación Python y R.

En efecto Conda es un gestor de paquetes y un sistema de gestión de entornos de código abierto,multiplataforma y de lenguaje agnóstico publicado bajo la licencia BSD. Está escrito en el lenguaje de programación Python, pero puede gestionar proyectos que contengan código escrito en otros lenguajes, como R, así como proyecto multilenguaje. Conda puede instalar la versión de Python que se necesite en el entorno de desarrollo, al contrario que otros gestores de paquetes basados en Python, como pip o wheel.

Cuenta con «canales» (channels), que son las ubicaciones de los repositorios en los que Conda busca paquetes. Debido a que los canales se organizan jerárquicamente, al instalar un paquete Conda comprobará qué canal tiene el mayor índice de prioridad; este orden de prioridad se puede cambiar, así como también añadir nuevos canales. Los canales que se establecen por defecto son los repositorios de Continuum. Existen canales más generales, que ofrecen una amplia gama de paquetes, como conda-forge; y otros más específicos, como Bioconda, que proporciona paquetes especializados en bioinformática.

Conda está incluido en todas las versiones de Anaconda, Miniconda ​ y Anaconda Repository.

Obtención de la versión más reciente de Anaconda

Prerrequisitos

  • Una cuenta de usuario con  privilegios de sudo 
  • Acceso a una línea de comando / ventana de terminal (Ctrl-Alt-T)

Actualice el Administrador de paquetes local

Empiece por actualizar el administrador de paquetes local. Abra una ventana de terminal e ingrese lo siguiente:

sudo apt-get update

Si su sistema no tiene curl , instálelo ingresando:

sudo apt-get install curl

Descargue la última versión de Anaconda

En el momento en que se escribió este artículo, la última versión de Anaconda es 2020.02. Consulte la página de descarga del desarrollador para ver la versión más reciente.

https://www.anaconda.com/distribution/

Busque la versión más reciente para Linux y copie la secuencia de comandos bash del instalador.

Anote la URL y utilícela para descargar la versión correcta.

Cambie al directorio / tmp y use curl para descargar el instalador usando su terminal de comando:

cd /tmp
curl –O https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

Esta versión está diseñada para Python 3.7. Si está utilizando Python 2.7, utilice la URL adecuada.

Verificar la suma de comprobación de descarga

Checksum es una herramienta de seguridad que se utiliza para verificar la autenticidad e integridad de un script descargado.

Introduzca la siguiente:

sha256sum Anaconda3–2020.02–Linux–x86_64.sh

Su sistema mostrará una serie de letras y números:

69581cf739365ec7fb95608eef694ba959d7d33b36eb961953f2b82cb25bdf5a Anaconda3-2019.07-Linux-x86_64.sh

Compárelos con la suma de comprobación apropiada (o hash ) en la documentación de Anaconda . Si ha elegido una versión diferente, asegúrese de consultar la documentación para ver la suma de comprobación de esa versión.

Ejecución de la secuencia de comandos de Anaconda

Una vez que acepte la licencia, se le pedirá que seleccione la ubicación de la instalación. Puede pulsar ENTER para aceptar la ubicación predeterminada o especificar una ubicación diferente.


bash Anaconda3-2019.03-Linux-x86_64.sh

Recibirá el siguiente resultado para revisar el acuerdo de licencia pulsando ENTER hasta llegar al final.

Output
Welcome to Anaconda3 2019.03

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
...
Do you approve the license terms? [yes|no]

Cuando llegue al final de la licencia, escriba yes, si acepta la licencia, para completar la instalación.

En este momento, se procederá con la instalación. Tenga en cuenta que el proceso puede tardar un tiempo.

Cuando se complete la instalación, recibirá el siguiente resultado:

Output...
installation finished.
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/sammy/.bashrc ? [yes|no]
[no] >>> 

Se recomienda que escriba yes para usar el comando conda.

Activación de la instalación

Ahora, puede activar la instalación con el siguiente comando:

source ~/.bashrc

Instalación de prueba

Utilice el comando conda para probar la instalación y la activación:

conda list

Recibirá el resultado de todos los paquetes que tiene disponibles a través de la instalación de Anaconda.

Configuración de los entornos de Anaconda

Puede crear entornos de Anaconda con el comando conda create. Por ejemplo, se puede crear un entorno de Python 3 llamado my_envcon el siguiente comando:

conda create --name my_env python=3

Active el nuevo entorno de esta manera:

conda activate my_env

El prefijo de instrucción de su comando cambiará para reflejar que está en un entorno de Anaconda activo, y que, ahora, está listo para empezar a trabajar en un proyecto.