Introducción a Python Científico

Agradecimientos

Estos notebooks fueron creados a partir de:

A todos ellos gracias por compartir su conocimiento.

Pueden ver una versión read-only estos notebooks en: http://nbviewer.ipython.org/github/hexacta/python-para-cientificos/tree/master/

Pueden descargarlos desde: https://github.com/hexacta/python-para-cientificos

Computación Científica

El científico necesita:

  1. Obtener datos
  • Manipularlos y procesarlos
  • Visualizarlos
  • Entenderlos
  • "Documentar los resultados"

De Matlab a Python

Por qué Python?

  • Libre y gratis
  • Portable
  • Lenguaje:
    • De propósito general
    • Fácil de aprender, alto nivel
    • Multiparadigma
    • Interactivo
  • Biblioteca para áreas específicas
  • Comunidad

El Zen de Python


In [1]:
import this


The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Entornos Python

Python no es sólo un lenguaje de programación, sino que a menudo se refiere a la implementación estándar del intérprete (técnicamente llamado CPython) que realmente corre el código python.

Existen también muchos entornos distintos a través de los cuales se puede usar el intérprete python. Cada entorno tiene distintas ventajas y es adecuado para diferentes rutinas de trabajo. Una fortaleza de Python es que es versátil y puede ser usado de formas complementarias, pero esto puede ser confuso para principiantes, por lo que comenzaremos con un breve vistazo de los entornos Python útiles en computación científica.

Intérprete Python

La forma estándar de usar el lenguaje de programación Python es usar el intérprete Python para ejecutar código python. El intérprete python es un programa que lee y ejecuta el código python en archivos, que son pasados como argumentos. En la consola de comandos, el comando python se usa para invocar al intérprete python.

Por ejemplo, para ejecutar un archivo mi-programa.py, que contiene código python, desde la consola de comandos, use:

$ python mi-programa.py

Podemos también iniciar el intérprete simplemente escribiendo python en la consola, y escribiendo interactivamente código en el intérprete.

Esta es la forma en que a menudo deseamos trabajar desarrollando aplicaciones científicas, o cuando se realizan pequeños cálculos. Sin embargo, el intérprete python estándar no es muy conveniente para esto tipo de trabajo, debido a múltiples limitaciones.

IPython

IPython es una shell (intérprete de comandos) interactiva que resuelve muchas de las limitaciones del intérprete de python estándar, y es una poderosa herramienta para uso científico de Python. IPython suministra una shell interactiva mucho más amigable al usuario que el intérprete Python.

Una instancia de IPython corriendo en una consola luce así:

Algunas de las características más útiles de IPython son:

  • Historia de comandos, que pueden ser navegadas con las teclas de flechas hacia arriba y abajo.
  • Auto-completado de tabs.
  • Edición de código en línea.
  • Instrospección de objetos y extracción automática de cadenas de documentación a partir de objetos python como clases y funciones.
  • Buena interacción con la línea de comandos del sistema operativo.
  • Soporte de múltiples procesos paralelos, que pueden ejecutarse en clusters o en servicios en la nube como Amazon EE2.

Fernando Perez

IPython notebook

IPython notebook es un entorno "de cuaderno'' basado en HTML para Python, similar a Mathematica o Maple. Está basado en la shell IPython, pero suministra un ambiente basado en celdas con gran interactividad, donde los cálculos pueden ser organizados y documentados en una forma estructurada.

Aunque se usa el navegador web con interface gráfica, los notebooks IPython suelen ejecutarse localmente. Para iniciar una nueva sesión de IPython notebook, ejecute el siguiente comando:

$ ipython notebook

desde una carpeta en que que desea almacenar los notebooks. Esto abrirá una nueva ventana del navegador (o una nueva pestaña en una ventana existente) con una página índice donde se muestrasn los cuadernos existentes y desde donde nuevos cuadernos pueden ser creados.

Spyder

Spyder es un IDE (entorno de desarrollo interactivo, por su sigla en inglés) similar a MATLAB para computación científica con Python. Tiene muchas de las ventajas de un IDE, por ejemplo que todo, desde la edición del código, su ejecución y depuración, es realizado en un mismo entorno, y el trabajo en diferentes cálculos puede ser organizado como proyectos en el IDE.

Algunas ventajas de Spyder:

  • Poderoso editor de código, con coloreado de sintaxis, instrospección dinámica de código, e integración con el depurador de Python.
  • Explorador de variables, prompt de comando IPython.
  • Documentación y ayuda integrada.

Dudas? Seguimos con la introducción de Python?