SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
PyConES 2013

Python + Ciencia = ♥
Juan Luis Cano, @Pybonacci
Madrid, 2013-11-23
Y este ¿quién es?
✔ Casi

ingeniero aeronáutico

✔ Fortran

90 (¿77?) y Excel (¡!)

✔ Herramientas
✔ ...conseguidas

privativas
de manera ilegítima
Respuesta: ¡Python!
El inicio de una gran amistad
✔ Python

por frustración
cuenta propia

✔ Invierno

2011:
Python Madrid

✔ Resultado:

Pybonacci
Comienzos:
«Dividing & merging»

Foto: Dina Regine (CC-BY-SA)
1995: Numeric
✔ Jim

Hugunin (MIT) et al

✔ Objeto
✔ Python

array básico

como
herramienta para
cálculo científico
1997: Travis meets Python
✔ Travis

E. Oliphant (Mayo
Clinic, Minnesota)

✔ Se

enamora de Python y
abandona MATLAB

✔ Usa

Numeric para crear lo
que será SciPy en 2001
2001: Una odisea pythonica
✔ T. Oliphant, Pearu

Peterson y Eric
Jones liberan SciPy

✔ Fernando

Pérez
inicia IPython

✔ John

Hunter † crea
matplotlib
2003: El cisma: numarray
✔ Limitaciones

Numeric

de

✔ Perry

Greenfield y otros
crean numarray

✔ Mejoras... y
✔ Confusión:

defectos

¿cuál usar?
2006
Numeric + numarray + Travis Oliphant* =

NumPy

«Dividing & merging»
*Y muchos más
Presente:
NumPy,
SciPy
y más allá

Foto: Marcingietorigie (CC-BY-SA)
NumPy
✔
✔

✔

✔

Arrays multidimensionales
Funciones rápidas y eficientes para operar con
ellos
Otros: álgebra lineal, FFTs, números aleatorios,
funciones financieras
Motivación: «make [Python] equivalent to a basic
scientific calculator»
Arrays
>>> import numpy as np
>>> np.array([
... [1, 2, 3],
... [4, 5, 6]
... ])
array([[1, 2, 3],
[4, 5, 6]])
Universal functions
>>> a = np.arange(6).reshape(2, 3)
>>> np.sin(a)
array([[ 0.

,

0.8415,

0.9093],

[ 0.1411, -0.7568, -0.9589]])
Ventajas

✔

Datos homogéneos y dimensiones fijas: almacenamiento en
memoria eficiente

✔

Los bucles en Python son lentos: vectorización

✔

Operaciones sobre los datos en bloque: expansión (broadcasting)
matplotlib

✔

El estándar de facto para visualización con Python

✔

Basado en la API de MATLAB

✔

Gráficas de alta calidad (publication-quality)

✔

Fundamentalmente para 2D
Visualización rápida
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 10)
>>> plt.plot(np.sin(x))
[<matplotlib.lines.Line2D object at
0x7f2107caa9d0>]
>>> plt.show()
Visualización rápida
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(0, 10)
>>> plt.plot(np.sin(x))
[<matplotlib.lines.Line2D object at
0x7f2107caa9d0>]
>>> plt.show()
¿Por qué (no) matplotlib?
✔

Familiar para los usuarios de MATLAB

✔

...horrible para los usuarios de R

✔

Potente: todo se puede personalizar

✔

...pero a veces es un poco low-level

✔

Suficiente para el 95 % de los casos

✔

Para el otro 5 %: Mayavi, Bokeh, ggplot, Vincent...
SciPy
✔

Colección de algoritmos para tareas comunes
–

Integración y EDOs (scipy.integrate)

–

Procesamiento de señales (scipy.signal)

–

Funciones especiales (scipy.special)

–

Optimización (scipy.optimize)

–

Interpolación (scipy.interpolate)

–

...¡y más!
Para tareas básicas...
...y no tan básicas

¡Dentro vídeo!
http://youtu.be/8K4NgNVKdtM
¡Hasta el infinito...
...y más allá!
Bonus: SymPy
✔

NumPy: cálculo numérico

>>> np.sqrt(8)
2.8284271247461903
✔

SymPy: cálculo simbólico

>>> from sympy import sqrt
>>> sqrt(8)
2*sqrt(2)
Un CAS en Python
✔

Sistema de álgebra computacional (CAS) estilo
Maple, Mathematica o Maxima

✔

Escrito en Python puro

✔

Intérprete online: http://live.sympy.org/

✔

Soporte para LaTeX
IPython:
La revolución

Keystone/Hulton Archive, Getty Images
IPython
✔

✔

✔

Originalmente Interactive Python: intérprete de
Python mejorado
Iniciado por Fernando Pérez en 2001 inspirado en
Mathematica
Diciembre 2011: IPython 0.11, notebook con interfaz
web
¡Dentro demo!
...y llegó el dinero
✔

✔

✔

Diciembre 2012: $1.15M de la fundación Alfred P.
Sloan
Expansión significativa de IPython y su interfaz
notebook
Agosto 2013: IPython 1.0 y $100k de Microsoft
¿Por qué es tan increíble?

✔

Comunicación de ideas mediante código

✔

Ciencia abierta

✔

Entorno interactivo ideal para el aprendizaje
Python vs MATLAB:
¿David contra Goliat?

Foto: ?
El statu quo

«The most dangerous enemy of a better
solution is an existing codebase that is just
good enough.»
—Eric S. Raymond.
El statu quo

Python
«The most dangerous enemy of a better
solution is an existing codebase that is just
good enough.»

LAB
MA T

—Eric S. Raymond.
El statu quo

✔

✔
✔

En la industria y en el mundo académico hay
inercias
¿Desde dónde tiene que empezar el cambio?
No siempre es posible o deseable: código legado,
experiencia
¡Pero Python es mejor!

✔

Coste de licencia: $0.0

✔

Software libre: puedo estudiarlo y compartirlo

✔

Commercial-friendly: no copyleft
...también técnicamente mejor
✔
✔

Sotfware libre (otra vez): los fallos son públicos
Lenguaje más sólido y consistente
(también conocido como: MATLAB WAT)
octave:1> a = [1]

>>> a = np.array([1]); a

a =

array([1])

1

octave:2> a(1)

>>> a[0]

ans =

1

1

octave:3> a(1, 1, 1)

>>> a[0, 0, 0]

ans =

IndexError: too many indices

1
...también técnicamente mejor
✔
✔

Sotfware libre (otra vez): los fallos son públicos
Lenguaje más sólido y consistente
(también conocido como: MATLAB WAT)
octave:1> a = [1]

>>> a = np.array([1]); a

a =

array([1])

1

octave:2> a(1)

>>> a[0]

ans =

1

1

octave:3> a(1, 1, 1)

>>> a[0, 0, 0]

ans =

IndexError: too many indices

1
Python FTW!
✔

✔

✔

¡La gente está pidiendo interfaz notebook para
MATLAB!
El desarrollo del ecosistema Python es
vertiginoso
Actualmente está por delante en aprendizaje
automático, tratamiento de datos...
¿Nos estás ocultando algo?
Puntos débiles:
«Too few are lifting
too many»

Foto: Helge Øverås (CC-BY)
Python 2 → Python 3
✔

Cambio de versiones: ¡horror!

✔

Python 3.0 en diciembre de 2008, y aun así:
Python 2 → Python 3
✔

✔

✔

Se cometieron errores que se están solucionando
ahora (2013)
Clave: desterrar 2to3, código único para ambas
versiones
El ecosistema está listo: ¡migremos!
Python es más... verborreico
✔

El inicio de un programa Python suele ser así:

import numpy as np
from numpy import cos, sin, tan, […]
import matplotlib
import matplotlib.pyplot as plt
from scipy import integrate, optimize
import os
import re
...

✔

Para sesiones interactivas es muy incómodo
Algunas con inicios de solución
✔

Uso de memoria: 2 * a + 3 * b necesita tres
arrays intermedios

Solución: numexpr, numba, ¿otros?
✔

Dificultad de instalación fuera de Linux (e.g. Windows)

Solución: distribuciones como Canopy o Anaconda
✔

Falta de interfaces gráficas para aplicaciones
ingenieriles

Solución: ¿Simulink en Python, alguien?
«Too few are lifting too many»
Futuro:
¿Dominación
mundial?

Foto: Carl Lender (CC-BY)
«These days, tools for almost every aspect of scientific
computing are readily available in Python.»
«[...] a surprising number of Python-based tools are
now best-in-class (or close to it) in terms of scope and
ease of use–and, in virtue of C bindings, often even in
terms of performance»
The homogenization of scientific computing, or why
Python is steadily eating other languages’ lunch
«Nowadays Python is probably the programming
language of choice (besides R) for data scientists for
prototyping, visualization, and running data analyses
on small and medium sized data sets.»
How Python became the language of choice for
data science
¡Un futuro brillante!
✔

SciPy: hoja de ruta para 1.0

✔

IPython: plan de desarrollo repleto de novedades

✔

Nuevos scikits emergen y los existentes mejoran

✔

Se empieza a implantar como opción en las
universidades españolas
Solo una gráfica más
Conclusiones

Foto: S_Werner (CC-BY-SA)
Python crece
✔

El camino ha sido arduo, pero el ecosistema está
maduro

✔

Python se está expandiendo

✔

Pero hay inercias difíciles de vencer

✔

✔

Debemos poner cuidado en algunas áreas:
contribuciones de código y migración a Python 3
Podemos dominar el mundo :)
¿Preguntas?
¡Muchas gracias! :)
http://pybonacci.wordpress.com
@Pybonacci

Más contenido relacionado

La actualidad más candente

Numexpr (python madrid)
Numexpr   (python madrid)Numexpr   (python madrid)
Numexpr (python madrid)kikocorreoso
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Pythonmaluacsa
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RFrancisco Palm
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Pythonmaluacsa
 
GNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funcionesGNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funcionesEsteban Saavedra
 
Funcion no recursiva
Funcion no recursivaFuncion no recursiva
Funcion no recursivapepelebu1313
 
Comandos para la generación de datos que utilizan la simulación
Comandos para la generación de datos que utilizan la simulaciónComandos para la generación de datos que utilizan la simulación
Comandos para la generación de datos que utilizan la simulaciónVIKMAN Penagos
 
Unidad dos, estructura de datos
Unidad dos, estructura de datosUnidad dos, estructura de datos
Unidad dos, estructura de datosRené Sosa Arana
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtleAlbert Page
 

La actualidad más candente (18)

Python workshop
Python workshopPython workshop
Python workshop
 
Numexpr (python madrid)
Numexpr   (python madrid)Numexpr   (python madrid)
Numexpr (python madrid)
 
Sesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en PythonSesión 2: Ejemplos y prácticas en Python
Sesión 2: Ejemplos y prácticas en Python
 
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y RGestión y Análisis de Datos para las Ciencias Económicas con Python y R
Gestión y Análisis de Datos para las Ciencias Económicas con Python y R
 
4 memoria dinamica
4 memoria dinamica4 memoria dinamica
4 memoria dinamica
 
Evidencia Sesión 5: Python
Evidencia Sesión 5: PythonEvidencia Sesión 5: Python
Evidencia Sesión 5: Python
 
Heap Sort
Heap SortHeap Sort
Heap Sort
 
P1
P1P1
P1
 
Manejo de la memoria
Manejo de la memoriaManejo de la memoria
Manejo de la memoria
 
GNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funcionesGNUPlot una alternativa libre para graficar funciones
GNUPlot una alternativa libre para graficar funciones
 
Introduccion a Ppython
Introduccion a PpythonIntroduccion a Ppython
Introduccion a Ppython
 
Funcion no recursiva
Funcion no recursivaFuncion no recursiva
Funcion no recursiva
 
Comandos para la generación de datos que utilizan la simulación
Comandos para la generación de datos que utilizan la simulaciónComandos para la generación de datos que utilizan la simulación
Comandos para la generación de datos que utilizan la simulación
 
Python Multiuso
Python MultiusoPython Multiuso
Python Multiuso
 
Lifo
Lifo Lifo
Lifo
 
Unidad dos, estructura de datos
Unidad dos, estructura de datosUnidad dos, estructura de datos
Unidad dos, estructura de datos
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
 

Destacado

Python en ciencia Pycon Argentina 2009
Python en ciencia Pycon Argentina 2009Python en ciencia Pycon Argentina 2009
Python en ciencia Pycon Argentina 2009Sebastian Bassi
 
Introduccion a Data Science
Introduccion a Data ScienceIntroduccion a Data Science
Introduccion a Data ScienceSpanishPASSVC
 
Evidencia2ml
Evidencia2mlEvidencia2ml
Evidencia2mlmaluacsa
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1mlmaluacsa
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1mlmaluacsa
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?Joel Rivera
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Pythonmaluacsa
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Pythonmaluacsa
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Pythonmaluacsa
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Pythonmaluacsa
 
De Cero A Python En 45 Min
De Cero A Python En 45 MinDe Cero A Python En 45 Min
De Cero A Python En 45 MinMarco Mansilla
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidTatiana Al-Chueyr
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machosJorge Hernandez
 

Destacado (20)

Python en ciencia Pycon Argentina 2009
Python en ciencia Pycon Argentina 2009Python en ciencia Pycon Argentina 2009
Python en ciencia Pycon Argentina 2009
 
Análisis de datos: R vs Python
Análisis de datos: R vs PythonAnálisis de datos: R vs Python
Análisis de datos: R vs Python
 
Introduccion a Data Science
Introduccion a Data ScienceIntroduccion a Data Science
Introduccion a Data Science
 
Evidencia2ml
Evidencia2mlEvidencia2ml
Evidencia2ml
 
Tablacqa2
Tablacqa2Tablacqa2
Tablacqa2
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1ml
 
Tabla cqa
Tabla cqaTabla cqa
Tabla cqa
 
Tablacqa3
Tablacqa3Tablacqa3
Tablacqa3
 
Evidencia1ml
Evidencia1mlEvidencia1ml
Evidencia1ml
 
Python ¿2 vs 3?
Python ¿2 vs 3?Python ¿2 vs 3?
Python ¿2 vs 3?
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Evidencias de sesión 4 Curso Python
Evidencias de  sesión 4 Curso PythonEvidencias de  sesión 4 Curso Python
Evidencias de sesión 4 Curso Python
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Sesión 1: Python
Sesión 1: PythonSesión 1: Python
Sesión 1: Python
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Tipos de datos numéricos en Python
Tipos de datos numéricos en PythonTipos de datos numéricos en Python
Tipos de datos numéricos en Python
 
Evidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en PythonEvidencias de la tercera sesión: Programación en Python
Evidencias de la tercera sesión: Programación en Python
 
De Cero A Python En 45 Min
De Cero A Python En 45 MinDe Cero A Python En 45 Min
De Cero A Python En 45 Min
 
Desarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y AndroidDesarollando aplicaciones móviles con Python y Android
Desarollando aplicaciones móviles con Python y Android
 
Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machos
 

Similar a Python + Ciencia = ♥

Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Unidad V Python e ingeniería civil en obras civiles PVB
Unidad V Python e ingeniería civil en obras civiles PVBUnidad V Python e ingeniería civil en obras civiles PVB
Unidad V Python e ingeniería civil en obras civiles PVBSistemadeEstudiosMed
 
Pythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxPythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxDiegoSalvetti2
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxjgs07
 
Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Mariano Reingart
 
Presentación de Paradis
Presentación de ParadisPresentación de Paradis
Presentación de ParadisC-cube ITESMCQ
 
Presentación software libre y recursos abiertos para la capacitación del pers...
Presentación software libre y recursos abiertos para la capacitación del pers...Presentación software libre y recursos abiertos para la capacitación del pers...
Presentación software libre y recursos abiertos para la capacitación del pers...Chamilo User Day
 
Aprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroAprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroDuban Garces
 
Python para ingenieros como alternativa a matlab
Python para ingenieros como alternativa a matlabPython para ingenieros como alternativa a matlab
Python para ingenieros como alternativa a matlabSistemadeEstudiosMed
 
Python - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de DatosPython - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de DatosRoman Herrera
 
Screencast aprende python - parte 1
Screencast   aprende python - parte 1Screencast   aprende python - parte 1
Screencast aprende python - parte 1Noe Nieto
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfPablo Narvaez
 
Introducción Software Libre (AsturLiNUX 2005)
Introducción Software Libre (AsturLiNUX 2005)Introducción Software Libre (AsturLiNUX 2005)
Introducción Software Libre (AsturLiNUX 2005)Manrique Lopez
 
Screencast aprende python - anexo python en winshit
Screencast   aprende python - anexo python en winshitScreencast   aprende python - anexo python en winshit
Screencast aprende python - anexo python en winshitNoe Nieto
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutosflekoso
 

Similar a Python + Ciencia = ♥ (20)

Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Unidad V Python e ingeniería civil en obras civiles PVB
Unidad V Python e ingeniería civil en obras civiles PVBUnidad V Python e ingeniería civil en obras civiles PVB
Unidad V Python e ingeniería civil en obras civiles PVB
 
python CIENTIFIFO.pdf
python CIENTIFIFO.pdfpython CIENTIFIFO.pdf
python CIENTIFIFO.pdf
 
Pythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptxPythonlearn-01-Intro.pptx
Pythonlearn-01-Intro.pptx
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)
 
Sesion 1.pptx
Sesion 1.pptxSesion 1.pptx
Sesion 1.pptx
 
Presentación de Paradis
Presentación de ParadisPresentación de Paradis
Presentación de Paradis
 
Presentación software libre y recursos abiertos para la capacitación del pers...
Presentación software libre y recursos abiertos para la capacitación del pers...Presentación software libre y recursos abiertos para la capacitación del pers...
Presentación software libre y recursos abiertos para la capacitación del pers...
 
Aprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primeroAprenda ansi-c-como-si-estuviera-en-primero
Aprenda ansi-c-como-si-estuviera-en-primero
 
Python para ingenieros como alternativa a matlab
Python para ingenieros como alternativa a matlabPython para ingenieros como alternativa a matlab
Python para ingenieros como alternativa a matlab
 
Python - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de DatosPython - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de Datos
 
Screencast aprende python - parte 1
Screencast   aprende python - parte 1Screencast   aprende python - parte 1
Screencast aprende python - parte 1
 
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdfAprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
Aprenda-ANSI-C-Como-si-estuviera-en-primero.pdf
 
Introducción Software Libre (AsturLiNUX 2005)
Introducción Software Libre (AsturLiNUX 2005)Introducción Software Libre (AsturLiNUX 2005)
Introducción Software Libre (AsturLiNUX 2005)
 
Screencast aprende python - anexo python en winshit
Screencast   aprende python - anexo python en winshitScreencast   aprende python - anexo python en winshit
Screencast aprende python - anexo python en winshit
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutos
 
intro.pptx
intro.pptxintro.pptx
intro.pptx
 
R Introducción
R IntroducciónR Introducción
R Introducción
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (13)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Python + Ciencia = ♥

  • 1. PyConES 2013 Python + Ciencia = ♥ Juan Luis Cano, @Pybonacci Madrid, 2013-11-23
  • 2. Y este ¿quién es? ✔ Casi ingeniero aeronáutico ✔ Fortran 90 (¿77?) y Excel (¡!) ✔ Herramientas ✔ ...conseguidas privativas de manera ilegítima
  • 4. El inicio de una gran amistad ✔ Python por frustración cuenta propia ✔ Invierno 2011: Python Madrid ✔ Resultado: Pybonacci
  • 6. 1995: Numeric ✔ Jim Hugunin (MIT) et al ✔ Objeto ✔ Python array básico como herramienta para cálculo científico
  • 7. 1997: Travis meets Python ✔ Travis E. Oliphant (Mayo Clinic, Minnesota) ✔ Se enamora de Python y abandona MATLAB ✔ Usa Numeric para crear lo que será SciPy en 2001
  • 8. 2001: Una odisea pythonica ✔ T. Oliphant, Pearu Peterson y Eric Jones liberan SciPy ✔ Fernando Pérez inicia IPython ✔ John Hunter † crea matplotlib
  • 9. 2003: El cisma: numarray ✔ Limitaciones Numeric de ✔ Perry Greenfield y otros crean numarray ✔ Mejoras... y ✔ Confusión: defectos ¿cuál usar?
  • 10. 2006 Numeric + numarray + Travis Oliphant* = NumPy «Dividing & merging» *Y muchos más
  • 11. Presente: NumPy, SciPy y más allá Foto: Marcingietorigie (CC-BY-SA)
  • 12. NumPy ✔ ✔ ✔ ✔ Arrays multidimensionales Funciones rápidas y eficientes para operar con ellos Otros: álgebra lineal, FFTs, números aleatorios, funciones financieras Motivación: «make [Python] equivalent to a basic scientific calculator»
  • 13. Arrays >>> import numpy as np >>> np.array([ ... [1, 2, 3], ... [4, 5, 6] ... ]) array([[1, 2, 3], [4, 5, 6]])
  • 14. Universal functions >>> a = np.arange(6).reshape(2, 3) >>> np.sin(a) array([[ 0. , 0.8415, 0.9093], [ 0.1411, -0.7568, -0.9589]])
  • 15. Ventajas ✔ Datos homogéneos y dimensiones fijas: almacenamiento en memoria eficiente ✔ Los bucles en Python son lentos: vectorización ✔ Operaciones sobre los datos en bloque: expansión (broadcasting)
  • 16. matplotlib ✔ El estándar de facto para visualización con Python ✔ Basado en la API de MATLAB ✔ Gráficas de alta calidad (publication-quality) ✔ Fundamentalmente para 2D
  • 17. Visualización rápida >>> import matplotlib.pyplot as plt >>> x = np.linspace(0, 10) >>> plt.plot(np.sin(x)) [<matplotlib.lines.Line2D object at 0x7f2107caa9d0>] >>> plt.show()
  • 18. Visualización rápida >>> import matplotlib.pyplot as plt >>> x = np.linspace(0, 10) >>> plt.plot(np.sin(x)) [<matplotlib.lines.Line2D object at 0x7f2107caa9d0>] >>> plt.show()
  • 19. ¿Por qué (no) matplotlib? ✔ Familiar para los usuarios de MATLAB ✔ ...horrible para los usuarios de R ✔ Potente: todo se puede personalizar ✔ ...pero a veces es un poco low-level ✔ Suficiente para el 95 % de los casos ✔ Para el otro 5 %: Mayavi, Bokeh, ggplot, Vincent...
  • 20. SciPy ✔ Colección de algoritmos para tareas comunes – Integración y EDOs (scipy.integrate) – Procesamiento de señales (scipy.signal) – Funciones especiales (scipy.special) – Optimización (scipy.optimize) – Interpolación (scipy.interpolate) – ...¡y más!
  • 22. ...y no tan básicas ¡Dentro vídeo! http://youtu.be/8K4NgNVKdtM
  • 25. Bonus: SymPy ✔ NumPy: cálculo numérico >>> np.sqrt(8) 2.8284271247461903 ✔ SymPy: cálculo simbólico >>> from sympy import sqrt >>> sqrt(8) 2*sqrt(2)
  • 26. Un CAS en Python ✔ Sistema de álgebra computacional (CAS) estilo Maple, Mathematica o Maxima ✔ Escrito en Python puro ✔ Intérprete online: http://live.sympy.org/ ✔ Soporte para LaTeX
  • 28. IPython ✔ ✔ ✔ Originalmente Interactive Python: intérprete de Python mejorado Iniciado por Fernando Pérez en 2001 inspirado en Mathematica Diciembre 2011: IPython 0.11, notebook con interfaz web ¡Dentro demo!
  • 29. ...y llegó el dinero ✔ ✔ ✔ Diciembre 2012: $1.15M de la fundación Alfred P. Sloan Expansión significativa de IPython y su interfaz notebook Agosto 2013: IPython 1.0 y $100k de Microsoft
  • 30. ¿Por qué es tan increíble? ✔ Comunicación de ideas mediante código ✔ Ciencia abierta ✔ Entorno interactivo ideal para el aprendizaje
  • 31. Python vs MATLAB: ¿David contra Goliat? Foto: ?
  • 32. El statu quo «The most dangerous enemy of a better solution is an existing codebase that is just good enough.» —Eric S. Raymond.
  • 33. El statu quo Python «The most dangerous enemy of a better solution is an existing codebase that is just good enough.» LAB MA T —Eric S. Raymond.
  • 34. El statu quo ✔ ✔ ✔ En la industria y en el mundo académico hay inercias ¿Desde dónde tiene que empezar el cambio? No siempre es posible o deseable: código legado, experiencia
  • 35. ¡Pero Python es mejor! ✔ Coste de licencia: $0.0 ✔ Software libre: puedo estudiarlo y compartirlo ✔ Commercial-friendly: no copyleft
  • 36. ...también técnicamente mejor ✔ ✔ Sotfware libre (otra vez): los fallos son públicos Lenguaje más sólido y consistente (también conocido como: MATLAB WAT) octave:1> a = [1] >>> a = np.array([1]); a a = array([1]) 1 octave:2> a(1) >>> a[0] ans = 1 1 octave:3> a(1, 1, 1) >>> a[0, 0, 0] ans = IndexError: too many indices 1
  • 37. ...también técnicamente mejor ✔ ✔ Sotfware libre (otra vez): los fallos son públicos Lenguaje más sólido y consistente (también conocido como: MATLAB WAT) octave:1> a = [1] >>> a = np.array([1]); a a = array([1]) 1 octave:2> a(1) >>> a[0] ans = 1 1 octave:3> a(1, 1, 1) >>> a[0, 0, 0] ans = IndexError: too many indices 1
  • 38. Python FTW! ✔ ✔ ✔ ¡La gente está pidiendo interfaz notebook para MATLAB! El desarrollo del ecosistema Python es vertiginoso Actualmente está por delante en aprendizaje automático, tratamiento de datos...
  • 40. Puntos débiles: «Too few are lifting too many» Foto: Helge Øverås (CC-BY)
  • 41. Python 2 → Python 3 ✔ Cambio de versiones: ¡horror! ✔ Python 3.0 en diciembre de 2008, y aun así:
  • 42. Python 2 → Python 3 ✔ ✔ ✔ Se cometieron errores que se están solucionando ahora (2013) Clave: desterrar 2to3, código único para ambas versiones El ecosistema está listo: ¡migremos!
  • 43. Python es más... verborreico ✔ El inicio de un programa Python suele ser así: import numpy as np from numpy import cos, sin, tan, […] import matplotlib import matplotlib.pyplot as plt from scipy import integrate, optimize import os import re ... ✔ Para sesiones interactivas es muy incómodo
  • 44. Algunas con inicios de solución ✔ Uso de memoria: 2 * a + 3 * b necesita tres arrays intermedios Solución: numexpr, numba, ¿otros? ✔ Dificultad de instalación fuera de Linux (e.g. Windows) Solución: distribuciones como Canopy o Anaconda ✔ Falta de interfaces gráficas para aplicaciones ingenieriles Solución: ¿Simulink en Python, alguien?
  • 45. «Too few are lifting too many»
  • 47. «These days, tools for almost every aspect of scientific computing are readily available in Python.» «[...] a surprising number of Python-based tools are now best-in-class (or close to it) in terms of scope and ease of use–and, in virtue of C bindings, often even in terms of performance» The homogenization of scientific computing, or why Python is steadily eating other languages’ lunch
  • 48. «Nowadays Python is probably the programming language of choice (besides R) for data scientists for prototyping, visualization, and running data analyses on small and medium sized data sets.» How Python became the language of choice for data science
  • 49. ¡Un futuro brillante! ✔ SciPy: hoja de ruta para 1.0 ✔ IPython: plan de desarrollo repleto de novedades ✔ Nuevos scikits emergen y los existentes mejoran ✔ Se empieza a implantar como opción en las universidades españolas
  • 52. Python crece ✔ El camino ha sido arduo, pero el ecosistema está maduro ✔ Python se está expandiendo ✔ Pero hay inercias difíciles de vencer ✔ ✔ Debemos poner cuidado en algunas áreas: contribuciones de código y migración a Python 3 Podemos dominar el mundo :)