Python SDK Colima

Preview:

Citation preview

1

Python

Mario García-Valdez Instituto Tecnológico de Tijuana Viernes 12 de Mayo

¿Otros lenguajes?

2

¿Y ese nombre?

3

Monty Python and the Holy Grail - 1975

4

Guido van Rossum 1991

5

Desarrollo a principio de los Noventa

6

Enterprise Cliente-Servidor

Escritorio MS-Windows

SQL Programación OO

7

¿Algún lenguaje para desarrollar Aplicaciones Web?

1998 - IIS Active Server Pages 2000 - AOL Server - tcl 2003 - asp.net c#

2005 - Django 2005 - Ruby on Rails

8

Redes Neuronales Algoritmos Genéticos

Estadística IA

9

10

11

12

13

14

x = 34 - 23 # Comentario y = “Hello” # Otro z = 3.45 if z == 3.45 or y == “Hello”: x = x + 1 y = y + “ World” # Concatenación de cadenas

print x print y

15

16Funciones de Fábrica

17 ¿Otras características?

18

Interpretado Dinámico Multi-paradigma Libre .net, Java

19

>lista = ['1','2','3']

>lista2 = ['Ana','Tom','Zoe']

>zip(lista,lista2) [('1', 'Ana'), ('2', 'Tom'), ('3', 'Zoe')]

>map(int,lista) [1, 2, 3]

Lectura-Evaluación-Impresión

20

21

22

Desarrollo Hoy

23

24

25

26

Cloud Computing

27Aplicaciones

Intercomunidades Mayo 2016

28

Python y Datos

Existen muchas herramientas en el mercado para realizar este tipo de análisis.

Intercomunidades Mayo 2016

29

Bibliotecas Escenciales NumPy

Hay muchas más..

Incluye un tipo de Arreglo multi-dimensional muy eficiente. ndarray

Funciones que se ejecutan para cada elemento del arreglo.

Operaciones con Matrices, Algebra lineal, estadística.

Integración con FORTRAN, C, C++

Intercomunidades Mayo 2016

30

Bibliotecas Escenciales pandas

Incluye un tipo de dato tipo tabla de dos dimensiones. DataFrame.

Intercomunidades Mayo 2016

31

Bibliotecas Escenciales

matplotlib

Hay muchas más..

Biblioteca para graficar los datos en 2D.

Intercomunidades Mayo 2016

32

Bibliotecas Escenciales

IPythonUn shell diseñado para acelerar la exploración interactiva de los datos. También en Web y Qt.

Intercomunidades Mayo 2016

33

Bibliotecas Escenciales

scikit-learn

Hay muchas más..

Intercomunidades Mayo 2016

34

Distribuciones de Python

Empaquetan muchas bibliotecas y herramientas.

Similar a las distribuciones de GNU/Linux.

Intercomunidades Mayo 2016

35

Distribuciones de Python

Empaquetan muchas bibliotecas y herramientas.

Similar a las distribuciones de GNU/Linux.

Intercomunidades Mayo 2016

36

Distribuciones de Python

Empaquetan muchas bibliotecas y herramientas.

Similar a las distribuciones de GNU/Linux.

DEMO

38

Ronald Fischer

Fragmento del conjunto de datos Iris ( 150 Registros)

39Aplicaciones

Versicolor

Virginica

Setosa

40Bajamos el Dataset de Iris

https://archive.ics.uci.edu/ml/machine-learning-databases/iris/

41Bajamos el Dataset de Iris

42

$ ipython --pylab

In [1]: iris = open(‘iris.data')

In [2]: for renglon in iris: ...: print renglon ...: 5.1,3.5,1.4,0.2,Iris-setosa

4.9,3.0,1.4,0.2,Iris-setosa

4.7,3.2,1.3,0.2,Iris-setosa

4.6,3.1,1.5,0.2,Iris-setosa

5.0,3.6,1.4,0.2,Iris-setosa

5.4,3.9,1.7,0.4,Iris-setosa

4.6,3.4,1.4,0.3,Iris-setosa

1. Cargamos los datos

43

In [3]: iris = open('iris.data')

In [4]: iris_data = [renglon for renglon in iris]

In [5]: iris_data Out[5]: ['5.1,3.5,1.4,0.2,Iris-setosa\n', '4.9,3.0,1.4,0.2,Iris-setosa\n', '4.7,3.2,1.3,0.2,Iris-setosa\n', '4.6,3.1,1.5,0.2,Iris-setosa\n', '5.0,3.6,1.4,0.2,Iris-setosa\n', '6.3,2.5,5.0,1.9,Iris-virginica\n', '6.5,3.0,5.2,2.0,Iris-virginica\n', '6.2,3.4,5.4,2.3,Iris-virginica\n', '5.9,3.0,5.1,1.8,Iris-virginica\n', '\n']

In [6]:

1. Cargamos los datos, Comprensión de Listas

44

In [3]: iris = open('iris.data')

In [4]: iris_data = [renglon for renglon in iris]

In [5]: iris_data Out[5]: ['5.1,3.5,1.4,0.2,Iris-setosa\n', '4.9,3.0,1.4,0.2,Iris-setosa\n', '4.7,3.2,1.3,0.2,Iris-setosa\n', '4.6,3.1,1.5,0.2,Iris-setosa\n', '5.0,3.6,1.4,0.2,Iris-setosa\n', '6.3,2.5,5.0,1.9,Iris-virginica\n', '6.5,3.0,5.2,2.0,Iris-virginica\n', '6.2,3.4,5.4,2.3,Iris-virginica\n', '5.9,3.0,5.1,1.8,Iris-virginica\n', '\n']

In [6]:

1. Cargamos los datos, Comprensión de Listas

Ocupamos una matriz, una lista de listas

45

In [6]: iris = open('iris.data')

In [7]: iris_data = [renglon.split(',') for renglon in iris]

In [8]: iris_data Out[8]: [['5.1', '3.5', '1.4', '0.2', 'Iris-setosa\n'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa\n'], ['4.7', '3.2', '1.3', '0.2', 'Iris-setosa\n'], ['4.6', '3.1', '1.5', '0.2', 'Iris-setosa\n'], ['5.0', '3.6', '1.4', '0.2', 'Iris-setosa\n'], ['5.4', '3.9', '1.7', '0.4', 'Iris-setosa\n'], ['4.6', '3.4', '1.4', '0.3', ‘Iris-setosa\n'], ['6.5', '3.0', '5.2', '2.0', 'Iris-virginica\n'], ['6.2', '3.4', '5.4', '2.3', 'Iris-virginica\n'], ['5.9', '3.0', '5.1', '1.8', 'Iris-virginica\n'], ['\n']]

In [9]:

1. Cargamos los datos, Comprensión de Listas

46

In [6]: iris = open('iris.data')

In [7]: iris_data = [renglon.split(',') for renglon in iris]

In [8]: iris_data Out[8]: [['5.1', '3.5', '1.4', '0.2', 'Iris-setosa\n'], ['4.9', '3.0', '1.4', '0.2', 'Iris-setosa\n'], ['4.7', '3.2', '1.3', '0.2', 'Iris-setosa\n'], ['4.6', '3.1', '1.5', '0.2', 'Iris-setosa\n'], ['5.0', '3.6', '1.4', '0.2', 'Iris-setosa\n'], ['5.4', '3.9', '1.7', '0.4', 'Iris-setosa\n'], ['4.6', '3.4', '1.4', '0.3', ‘Iris-setosa\n'], ['6.5', '3.0', '5.2', '2.0', 'Iris-virginica\n'], ['6.2', '3.4', '5.4', '2.3', 'Iris-virginica\n'], ['5.9', '3.0', '5.1', '1.8', 'Iris-virginica\n'], ['\n']]

In [9]:

1. Cargamos los datos, Comprensión de Listas

Ocupamos la matriz, sin el tipo de flor.

47

In [9]: iris = open('iris.data')

In [10]: iris_data = [renglon.split(',')[:4] for renglon in iris]

In [11]: iris_data Out[11]: [['5.1', '3.5', '1.4', '0.2'], ['4.9', '3.0', '1.4', '0.2'], ['4.7', '3.2', '1.3', '0.2'], ['4.6', '3.1', '1.5', '0.2'], ['5.0', '3.6', '1.4', '0.2'], ['5.4', '3.9', '1.7', ‘0.4'], ['6.3', '2.5', '5.0', '1.9'], ['6.5', '3.0', '5.2', '2.0'], ['6.2', '3.4', '5.4', '2.3'], ['5.9', '3.0', '5.1', '1.8'], ['\n']]

In [12]:

1. Cargamos los datos, Comprensión de Listas

Ocupamos que la matriz sea de flotantes y eliminar el último registro.

48

In [12]: iris = open('iris.data')

In [13]: iris_data = [map(float, renglon.split(',')[:4]) for renglon in iris if len(renglon) > 4 ]

In [14]: iris_data Out[14]: [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2], [5.0, 3.6, 1.4, 0.2], [6.7, 3.0, 5.2, 2.3], [6.3, 2.5, 5.0, 1.9], [6.5, 3.0, 5.2, 2.0], [6.2, 3.4, 5.4, 2.3], [5.9, 3.0, 5.1, 1.8]]

In [15]:

2. Tipo Flotante, Comprensión de Listas

Utilicemos NumPy para manejar mejor la matriz.

49

In [21]: iris_array = array(iris_data) In [22]: iris_array[:50,1] Out[22]: array([ 3.5, 3. , 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3. , 3. , 4. , 4.4, 3.9, 3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3. , 3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.1, 3. , 3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3. , 3.8, 3.2, 3.7, 3.3])

2. Tipo Flotante, NumPy

50

In [23]: iris_array Out[23]: array([[ 5.1, 3.5, 1.4, 0.2], [ 4.9, 3. , 1.4, 0.2], [ 4.7, 3.2, 1.3, 0.2], [ 4.6, 3.1, 1.5, 0.2], [ 5. , 3.6, 1.4, 0.2], [ 5.4, 3.9, 1.7, 0.4], [ 4.9, 3.1, 1.5, 0.1], [ 5.4, 3.7, 1.5, 0.2], [ 6.7, 3.3, 5.7, 2.5], [ 6.7, 3. , 5.2, 2.3], [ 6.3, 2.5, 5. , 1.9], [ 6.5, 3. , 5.2, 2. ], [ 6.2, 3.4, 5.4, 2.3], [ 5.9, 3. , 5.1, 1.8]])

In [24]:

2. Tipo Flotante, NumPy

iris_array[<renglones>, <columna>]

51

In [23]: iris_array Out[23]: array([[ 5.1, 3.5, 1.4, 0.2], [ 4.9, 3. , 1.4, 0.2], [ 4.7, 3.2, 1.3, 0.2], [ 4.6, 3.1, 1.5, 0.2], [ 5. , 3.6, 1.4, 0.2], [ 5.4, 3.9, 1.7, 0.4], [ 4.9, 3.1, 1.5, 0.1], [ 5.4, 3.7, 1.5, 0.2], [ 6.7, 3.3, 5.7, 2.5], [ 6.7, 3. , 5.2, 2.3], [ 6.3, 2.5, 5. , 1.9], [ 6.5, 3. , 5.2, 2. ], [ 6.2, 3.4, 5.4, 2.3], [ 5.9, 3. , 5.1, 1.8]])

In [24]:

2. Tipo Flotante, NumPy

iris_array[0:5, 1:3]

52

In [23]: iris_array Out[23]: array([[ 5.1, 3.5, 1.4, 0.2], [ 4.9, 3. , 1.4, 0.2], [ 4.7, 3.2, 1.3, 0.2], [ 4.6, 3.1, 1.5, 0.2], [ 5. , 3.6, 1.4, 0.2], [ 5.4, 3.9, 1.7, 0.4], [ 4.9, 3.1, 1.5, 0.1], [ 5.4, 3.7, 1.5, 0.2], [ 6.7, 3.3, 5.7, 2.5], [ 6.7, 3. , 5.2, 2.3], [ 6.3, 2.5, 5. , 1.9], [ 6.5, 3. , 5.2, 2. ], [ 6.2, 3.4, 5.4, 2.3], [ 5.9, 3. , 5.1, 1.8]])

In [24]:

3. matplotlib

Vamos a graficar las dos variables.

53

In [24]: x = iris_array[0:50,0]

In [25]: y = iris_array[0:50,1]

In [26]: plot(x, y, 'b.') Out[26]: [<matplotlib.lines.Line2D at 0x10e780d10>]

3. matplotlib

54

In [24]: x = iris_array[0:50,0]

In [25]: y = iris_array[0:50,1]

In [26]: plot(x, y, 'b.') Out[26]: [<matplotlib.lines.Line2D at 0x10e780d10>]

3. matplotlib

55

In [30]: plot(iris_array[51:100,0], iris_array[51:100,1], 'r.') Out[30]: [<matplotlib.lines.Line2D at 0x11644bcd0>]

3. matplotlib

56

In [30]: plot(iris_array[51:100,0], iris_array[51:100,1], 'r.') Out[30]: [<matplotlib.lines.Line2D at 0x11644bcd0>]

3. matplotlib

57

In [31]: plot(iris_array[101:,0], iris_array[101:,1], 'g^')

3. matplotlib

58

593. pandas

In [32]: import pandas as pd

In [33]: iris_df = pd.read_csv(‘iris.data’)

In [34]: iris_df[:4] Out[34]: 5.1 3.5 1.4 0.2 Iris-setosa 0 4.9 3.0 1.4 0.2 Iris-setosa 1 4.7 3.2 1.3 0.2 Iris-setosa 2 4.6 3.1 1.5 0.2 Iris-setosa 3 5.0 3.6 1.4 0.2 Iris-setosa

In [35]:

603. pandas

In [39]: iris_df = pd.read_csv('iris.data',names=['sl','sw','pl','pw','type'])

In [40]: iris_df[:4] Out[40]: sl sw pl pw type 0 5.1 3.5 1.4 0.2 Iris-setosa 1 4.9 3.0 1.4 0.2 Iris-setosa 2 4.7 3.2 1.3 0.2 Iris-setosa 3 4.6 3.1 1.5 0.2 Iris-setosa

613. pandasIn [43]: iris_df['sl'] Out[43]: 0 5.1 1 4.9 2 4.7 3 4.6 4 5.0 5 5.4 6 4.6 7 5.0 8 4.4 9 4.9 10 5.4 11 4.8

147 6.5 148 6.2 149 5.9 Name: sl, dtype: float64

In [44]:

623. pandasIn [46]: iris_df[['sl','sw']] Out[46]: sl sw 0 5.1 3.5 1 4.9 3.0 2 4.7 3.2 3 4.6 3.1 4 5.0 3.6 5 5.4 3.9 6 4.6 3.4 7 5.0 3.4 8 4.4 2.9 9 4.9 3.1 10 5.4 3.7

Vamos a graficar las dos variables.

633. pandasIn [47]: iris_df[['sl','sw']].plot() Out[47]: <matplotlib.axes._subplots.AxesSubplot at 0x1138ded10>

In [48]:

643. pandasIn [47]: iris_df[['sl','sw']].plot() Out[47]: <matplotlib.axes._subplots.AxesSubplot at 0x1138ded10>

In [48]:

653. pandasIn [49]: iris_df[['sl','sw']].plot(x='sl',y='sw', kind='scatter') Out[49]: <matplotlib.axes._subplots.AxesSubplot at 0x11e36ca90>

663. pandasIn [56]: ax = iris_df[['sl','sw']][:50].plot(kind='scatter', x='sl', y='sw',color='DarkBlue', label='Iris Setosa’);

In [57]: iris_df[['sl','sw']][50:100].plot(kind='scatter', x='sl', y='sw',color='DarkGreen', label='Iris Versicolour',ax=ax);

In [58]: iris_df[['sl','sw']][50:100].plot(kind='scatter', x='sl', y='sw',color='Green', label='Iris Versicolour',ax=ax);

In [59]: iris_df[['sl','sw']][50:100].plot(kind='scatter', x='sl', y='sw',color='Yellow', label='Iris Versicolour',ax=ax);

673. pandas

Intercomunidades Mayo 2016

68

Libros Recomendados

Intercomunidades Mayo 2016

69

¡Sigamos en Contacto!

Mario García ValdezIns5tuto Tecnológico de Tijuana

664-123-7806

github.com/mariosky

mario@tectijuana.edu.mx

@mariogarciav

mgv.mx (próximamente)

/mariogarciaface

t

m

r

vq

70Haskell Logo Thought up by Darrin Thompson and produced by Jeff Wheeler - Thompson-Wheeler logo on the haskell wiki

Javascript Rhino - Lisa Williams CC BY 2.0

PERL - Men and camel No known copyright restrictions

TURBO C++ https://upload.wikimedia.org/wikipedia/commons/1/16/Turbo_CPP_Compiler.jpg

CLOJURE https://commons.wikimedia.org/wiki/File:Clojure-icon.png

OCTAVE LOGO https://commons.wikimedia.org/wiki/File:Gnu-octave.png

Julia https://en.wikipedia.org/wiki/Julia_(programming_language)#/media/File:Julia_prog_language.svg

C# https://commons.wikimedia.org/wiki/File:Music_C_sharp.svg

ElePHPant https://www.flickr.com/photos/atomictaco/23708710306

Rust https://pixabay.com/en/bike-cycle-gear-rust-633208/

Node https://pixabay.com/en/node-js-logo-nodejs-javascript-736399/