Un recorrido básico en Ipython

El entorno sobre el cual muestro los ejemplos es Ipython Notebook, o su versión moderna Jupyter Notebook. Pero sin problemas se pueden realizar en Ipython o en la consola de ipython Qtconsole.

Por lo cual para ejecutar los ejemplos se necesita tener instalado Ipython. En lo personal me gusta la distribución de Anaconda. Los módulos de python que se instalan son más que suficientes. En caso de no desear instalar esa distribución, se deben de instalar los módulos que no forman parte de la distribución base, lo cual es facil haciendo uso del administrador de paquetes de python, pip.

Lo primero

Estando en la terminal del sistema se ejecuta alguno de los siguientes comando:

ipython
jupyter qtconsole
jupyter notebook

Lo que se tiene es una entrada a la terminal para ejecutar python, se ve del siguiente modo:


In [1]:
print "Hello World!"


Hello World!

Todas las funcionalidades que se realizan en la termina usual de python se tienen en Ipython, este último cuenta con funcionalidades que ayudan hagilizar la escritura de código, pero además permite tener una visualización de las variables, gráficos o estructuras de datos que se van definiendo. Existen varios entornos de desarrollo para python; IDE, el que yo he usado es Spyder,en el caso de elegir un IDE depende de como se adapta cada uno al escribir código.

Las reglas de programación generales de python son las mismas, lo único que cambia es el entorno. La siguiente línea muestra la asignación de valor a una variable y en la siguiente línea se ve la salida que se tiene al consultar el valor, lo cual es igual cuando se trabaja en la terminal usual.


In [2]:
a=5

In [3]:
a


Out[3]:
5

Para cargar un módulo se realiza de manera usual.


In [4]:
from numpy.random import randn
datos={i : randn() for i in range(10)}

In [5]:
datos


Out[5]:
{0: 0.847713316249575,
 1: 0.09110735914058571,
 2: 0.02488028484149846,
 3: 1.0185838020652827,
 4: -0.45248571241849994,
 5: -0.09115218264926055,
 6: -0.2901265497099237,
 7: -0.8175856775732747,
 8: -1.8743684247383279,
 9: 1.0008286242533315}

Lo interesante resulta cuando uno va definiendo variables y algunas tienen nombres similares o inician con las mismas letras. Ejemplo, se define otro muestra de datos, que se llame datos_muestra y se consulta en la terminal con las letras iniciales 'da', la consola muestra las variables o estructuras que tienen esos caracteres como iniciales.


In [6]:
datos_muestra={i : randn() for i in range(5)}

In [7]:
datos_muestra


Out[7]:
{0: 1.0407110464823064,
 1: 1.8580581718074325,
 2: -0.22905814321887485,
 3: 0.29850817446432615,
 4: -0.42698665956613524}

Cuando se trata de elegir el diccionario se pone en la terminal da+Tabulador, después de eso se muestra la imagen

Otra opción de usar el autocompletado es cuando no se conoce todas las funciones de algún módulo. Ejemplo, si se carga el módulo Numpy se pueden saber cuales funciones forman parte de este módulo y basta usar el tabulador para ver las funciones.


In [8]:
import numpy as np

Se coloca en la línea de comandos np.Tabulador y se tienen el menú siguiente

En la consola usual de Ipython, se muestra el menú en la pantalla no como lo muestra la imagen que es tomada de Jupyter Notebook.

Para consultar información o ayuda (help), sobre las funciones, variables o módulos, se puede hacer uso de los cáracteres '?' y '*'.

Si se ejecutan en la consola alguno de las siguientes líneas de código, se muestra una descripción con la información del módulo y de la variable, respectivamente.


In [9]:
np.*z*?

In [10]:
a?

Lo que se muestra cuando se ejecuta en la consola el comando np.*z*? es un desplegado de los objetos o elementos en numpy que tienen una z en sus nombre . Tanto el '*' como ? funcionan como se trabaja con la consola de Unix o Linux.

Varios de los comandos usuales en las consolas pueden ser usados desde el entorno, ejemplo para cambiar de directorio cd, para ver la lista de archivos o directorios del lugar donde uno se encuentra ls, etc. Para hacer uso de algún comando del sistema o programa del sistema, se debe de agregar '!'. Ejemplo, si se desea ver todo el manual( o menú) de comandos en la consola de Linux se ejecuta !man man

El siguiente ejemplo muestra como se puede ver la lista de archivos y directorios.


In [11]:
!ls -la


total 1396
drwxrwxr-x 4 dlegorreta dlegorreta   4096 abr 18 00:49 .
drwxrwxr-x 4 dlegorreta dlegorreta   4096 abr 16 20:50 ..
-rw-rw-r-- 1 dlegorreta dlegorreta 233854 abr 18 00:41 Capítulo_1-Carga_Pandas.ipynb
-rw-rw-r-- 1 dlegorreta dlegorreta 215108 abr 16 19:13 Capitulo_2-Exploración.ipynb
-rw-rw-r-- 1 dlegorreta dlegorreta 465801 abr 18 00:49 Capítulo_3-Comportamiento de los puertos.ipynb
-rw-rw-r-- 1 dlegorreta dlegorreta 433140 abr 18 00:23 Capítulo_4-Eficiancia_Terminal.ipynb
-rw-rw-r-- 1 dlegorreta dlegorreta     49 abr  4 18:46 Carga_datos.py
-rw-rw-r-- 1 dlegorreta dlegorreta  16562 abr 18 00:31 Cpítulo_0-Recorrido_por_Ipython.ipynb
-rw-rw-r-- 1 dlegorreta dlegorreta    191 abr  4 13:13 ejemplo.json
drwxrwxr-x 2 dlegorreta dlegorreta   4096 abr  2 14:45 Imagenes
drwxr-xr-x 2 dlegorreta dlegorreta   4096 abr 17 03:33 .ipynb_checkpoints
-rw-rw-r-- 1 dlegorreta dlegorreta   1489 abr  5 12:33 Numpy_ex1.py
-rw-rw-r-- 1 dlegorreta dlegorreta   1532 abr  5 12:32 Numpy_ex1.py~
-rw-rw-r-- 1 dlegorreta dlegorreta   1687 abr  5 12:33 Numpy_ex1.pyc
-rw-rw-r-- 1 dlegorreta dlegorreta    112 abr  1 12:11 Script_1.py~
-rw-rw-r-- 1 dlegorreta dlegorreta    219 abr  2 14:41 Script.py
-rw-rw-r-- 1 dlegorreta dlegorreta    220 abr  2 14:41 Script.py~
-rw-rw-r-- 1 dlegorreta dlegorreta    537 abr  9 21:40 Untitled1.ipynb

Para ver una lista completa de comandos en la consola de linux se pueden consultar en intenet http://ss64.com/bash/ o para ver la lista de comandos de la consola de windows en powershell o en cmd cmd.

Magic Commands

Estos comandos son parte central para controlar, probar o ejecutrar código en el entorno. Se puede ver la lista de comandos escribiendo %magic o %quickref.

Un comando que se puede usar para ver las variables que se han definido en el entorno es %who y para ver tanto las variables, módulo e información sobre ellas se puede usar %whos


In [12]:
%whos


Variable        Type                          Data/Info
-------------------------------------------------------
a               int                           5
datos           dict                          n=10
datos_muestra   dict                          n=5
np              module                        <module 'numpy' from '/ho<...>ages/numpy/__init__.pyc'>
randn           builtin_function_or_method    <built-in method randn of<...>object at 0x7f9e766750f0>

Un ejemplo usual sobre el uso de los magic commands, es mostrar como estimar los tiempos de ejecución o detalles de la cantidad de llamadas a los módulos. El siguiente ejemplo muestra como estimar el tiempo de ejecución.


In [13]:
%time sum([i for i in range(1000)])


CPU times: user 4 ms, sys: 0 ns, total: 4 ms
Wall time: 759 µs
Out[13]:
499500

In [14]:
%timeit sum([i for i in range(1000)])


The slowest run took 4.97 times longer than the fastest. This could mean that an intermediate result is being cached.
10000 loops, best of 3: 51.5 µs per loop

Para conocer más detalles de cada magic commands, basta colocar el signo ? al final del comando para consultar. Ejemplo para conocer información de %who, se debe de introducir en la consola así %who?.

Se cuenta con varios comando importantes que tienen que ver más con el desarrollo, como el comando %run el cual permite ejecutar código y permanecer en ipython.

A modo de ejemplos escribo un script para graficar dos variables que construimos con números aleatorios, este es un ejemplo que se presenta en la galería del módulo matplotlib. El código dentro de Script.py será:

import time
import numpy as np
import matplotlib.pyplot as plt

a=np.random.randn(50)
b=np.random.randn(50)
color=np.random.rand(50)
plt.scatter(a,b,c=color,alpha=0.5)
plt.show()

Para hacer el Script se ejecuta la siguiente línea.

Nota: el módulo matplotlib es sumamente importante para constuir gráficas o interfaces con gráficos, pero otro módulo sumamente util para la exploración de datos es Seaborn.


In [15]:
!gedit Script.py

Emergerá el editor gedit y escribimos el código en el archivo.

.

Despues ejecutamos el Script desde la consola de ipython haciendo uso de %run


In [17]:
%run Script.py

Lo que regresa el Script es una gráfica como el siguiente:

Con este breve recorrido se puede empezar a trabajar sobre Ipython, para mayor información o detalles técnicas se puede consultar el sitio del módulo https://ipython.readthedocs.org/en/stable/

Desde el 2014 el shell o consola de Ipython pasó a formar parte del proyecto Jupyter, el cual de cierto modo es la versión moderna de ipython e ipython notebook, que de hecho es sobre el cual está escrito este breve tutorial. Para mayor información se puede consultar la página del proyecto Jupyter