Estos apuntes tienen como fin ser el soporte para consultas de los alumnos de las carreras de Astronomía y Geofísica en la Facultad1 en los temas de la asignatura Computación en el área de la programación en lenguaje Python. Este lenguaje se ha convertido en la actualidad en la base del análi- sis de datos y su principal ventaja es la facilidad de la interacción en “Notebooks” con los datos. Si bien no es un lenguaje para realizar cálculos pesados ya que suele ser my lento para esta tarea. Pero como gran ventaja el Python se ha convertido en el frontend the librerías como la usadas para ajustes de Machine Learning y otras tantas. Su uso en los análisis de datos científicos ya se ha vuelto indiscutible.
Este libro se ha utilizado algunos ejemplos tomados del curso de posgrado que dictó el Dr. Christophe Morisset de la IA-UNAM en nuestra Facultad hace varios años. Más información puede encontrarse en su sitio web http://python-astro.blogspot.mx/ . Ambos cursos son diferentes y el curso de Dr. Morisset fue pensado como de posgrado (en Python2) con el fin último de calcular líneas de emisión en nebulosas. Mientras estos apuntes son diseñados para alumnos de grado (en Python 3), por los cual se encontrarán muchas diferencias de orden y temas entre ambos cursos.
Estas notas son en sí un complemento detallado de los notebooks Python que se utilizan y comentan en las clases teóricas. En este apunte discutiremos las variables, su uso como objetos y estructuras de control del lenguaje Python, así como el uso de las librerías más importantes como Pandas, Numpy, Matplotlib, etc. En el caso especial de la librería Astropy es esta es sólo de interés para los alumnos de astronomía ya que es una colección muy grande de rutinas de uso principalmente astronómico.
El lenguaje Python evoluciona muy rápidamente así que la información en este apunte podría en algún caso tener una duración probablemente corta en el tiempo y por lo tanto fecha de vencimiento. Este apunte es para el uso de las versiones Python 3, funciona parcialmente en las versiones ante- riores de este lenguaje. Ya que en el Python no hay compatibilidad con versiones previas (backwards compatibility)
Este curso se basa en el uso de python sobre un Notebook del entorno de trabajo Jupyter (aunque veremos que funciona bien en el entorno propietario de Google llamado Colaborative. Estos apuntes actualmente están en proceso de escritura y por ello llevan claramente el cartel de BORRADOR, por lo cual es conveniente que si se van utilizar para estudio o consulta se utilice la última versión. Para distinguir versiones, la portada lleva la fecha de la versión.
En un vector con la idea que se lo usa en física, con 3 componentes podemos describir la posición de una partícula en el espacio y con otro vector de 3 componentes podemos describir su velocidad. En programación orientada a objetos, un objeto es algo parecido, pero que su estructura de compo- nentes es más compleja. Imaginémonos ahora los datos que tiene la Facultad de cada alumno del Observatorio. Esos datos dan una descripción como si fuese un vector que apunta a cada alumno. Es decir, figura el DNI, la dirección de su casa, una serie de datos personales, etc. Algunos de esos datos, a su vez tiene subestructura, por ejemplo la fecha de nacimiento que se divide en tres: día, mes y año, o datos no numéricos como el nombre y el apellido.
Es decir un objeto es un vector, bastante más complejo de los que estamos acostumbrados del álgebra y de la física. La idea principal es que la programación orientada a objetos conecta los datos, sus propiedades y distintas acciones que puedo hacer con ellos. Veamos la nomenclatura y conceptos: