Captulo 7 Arreglos II Matrices Matrices Las matrices

  • Slides: 61
Download presentation
Capítulo 7 Arreglos II: Matrices

Capítulo 7 Arreglos II: Matrices

Matrices Las matrices surgen en matemáticas cuando deseamos manejar datos que se pueden almacenar

Matrices Las matrices surgen en matemáticas cuando deseamos manejar datos que se pueden almacenar en forma de vectores pero que además requieren el uso de varios vectores para manejar la información. Son arreglos con dimensión mayor a 1, es decir, pueden ser de n renglones y m columnas. Una matriz es una tabla de datos numéricos, alfanuméricos o booleanos. Los datos se encuentran arreglados en renglones y columnas, como se muestra a continuación:

La dimensión de una matriz es el número de filas × número de columnas.

La dimensión de una matriz es el número de filas × número de columnas. Se dice que la matriz es de dimensión n × m. Para referirse a la posición de un elemento de la matriz A primero indicamos el número de renglón seguido del número de columna. De esta manera, el elemento del arreglo A que se encuentra en el p-ésimo renglón y en la qésima columna lo referenciamos como: Una matriz cuadrada de orden n es una matriz de dimensión n × n.

Arreglos en Python Las matrices en Python se describen como listas de listas. Una

Arreglos en Python Las matrices en Python se describen como listas de listas. Una matriz como: Se representa como:

Generación de arreglos por indexación Para generar un arreglo, que es una lista de

Generación de arreglos por indexación Para generar un arreglo, que es una lista de listas, podemos generar un arreglo que tenga el tamaño deseado en blanco y posteriormente llenarlo con los datos requeridos. Para esto usamos un ciclo for y hacemos variar el índice, de aquí el nombre de método por indexación. Podemos mostrar la matriz con un ciclo for anidado en otro ciclo for, de la siguiente manera:

Generación de un arreglo Supongamos que deseamos generar un arreglo de None de cuatro

Generación de un arreglo Supongamos que deseamos generar un arreglo de None de cuatro renglones y cuatro columnas. El procedimiento es el siguiente:

Generación de arreglos por comprensión El método de comprensión se usa cuando los elementos

Generación de arreglos por comprensión El método de comprensión se usa cuando los elementos del arreglo están definidos por una función o por un valor. Para definir un arreglo se tiene el siguiente formato:

Métodos alternos de escritura de matrices Existen maneras alternas de desplegar y leer matrices.

Métodos alternos de escritura de matrices Existen maneras alternas de desplegar y leer matrices. La primera de ellas usa iteradores de listas, como el uso de iteradores de listas que se refiere simplemente al manejo de renglones de una matriz Se puede escribir en Python como: Para desplegarla usamos un iterador de listas como: El resultado es:

Selección de filas y columnas de un arreglo Para un arreglo A en Python,

Selección de filas y columnas de un arreglo Para un arreglo A en Python, dado que un arreglo es una lista de listas, donde cada lista es un renglón de la matriz, seleccionar una fila del arreglo es equivalente a seleccionar un elemento de la lista A.

Suma, resta y multiplicación de matrices Para arreglos existen las operaciones de: • Suma

Suma, resta y multiplicación de matrices Para arreglos existen las operaciones de: • Suma y resta de matrices de la misma dimensión. • El producto de un escalar por una matriz. • El producto de una matriz por otra matriz. Existen algunas matrices que tienen características que las hacen distintas de otras matrices y que merecen una atención especial. Matrices especiales Entre estas matrices especiales tenemos la matriz identidad, la transpuesta, la inversa, la triangular, la matriz diagonal, entre otras.

Capítulo 8 Subalgoritmos

Capítulo 8 Subalgoritmos

Los subalgoritmos en general tienen datos de entrada y proporcionan como salida otros datos.

Los subalgoritmos en general tienen datos de entrada y proporcionan como salida otros datos. Ejemplos de subalgoritmos lo constituyen las funciones trigonométricas como y = senx, la raíz cuadrada y = √x, entre otras, las cuales tienen un dato de entrada que es x y regresan un dato de salida y. Funciones Las funciones son un tipo especial de subalgoritmos. Las funciones son subalgoritmos cuyo formato es el siguiente:

Funciones en Python Existen dos categorías de funciones en Python: Las funciones incluidas en

Funciones en Python Existen dos categorías de funciones en Python: Las funciones incluidas en las bibliotecas que se incluyen con Python y las funciones que se crean por el usuario. Las funciones en Python usan el mismo formato descrito para el pseudocódigo.

Funciones definidas por el usuario Las funciones definidas en las bibliotecas no son siempre

Funciones definidas por el usuario Las funciones definidas en las bibliotecas no son siempre todas las que el diseñador necesita, por lo tanto en la mayoría de las ocasiones es necesario diseñar nuestras propias funciones. Los subalgoritmos implementados como funciones deben definirse antes de usarse, por lo tanto se colocan antes del programa principal. La definición de una función en Python debe cumplir las mismas reglas que cumple el programa principal. Estas reglas son: + El nombre de la función solamente debe usarse para definir la función y sus llamados. +Los parámetros de una función deben tener el mismo orden en la función y en el llamado de ella en el programa principal.

El formato en Python para definir las funciones es:

El formato en Python para definir las funciones es:

Solución de una ecuación de segundo grado En la solución de una ecuación de

Solución de una ecuación de segundo grado En la solución de una ecuación de segundo grado ax 2+bx+c =0 es necesario calcular la raíz cuadrada del discriminante d = √b 2 − 4 ac que recibe los valores de a, b y c del programa principal. La función que calcula la raíz cuadrada del discriminante puede escribirse como: y el llamado a esta función desde el programa principal es:

Procedimientos Los procedimientos, al igual que las funciones, son subalgoritmos que realizan tareas que

Procedimientos Los procedimientos, al igual que las funciones, son subalgoritmos que realizan tareas que forman parte de una solución general. A diferencia de las funciones, NO devuelven o regresan una variable. Se usan directamente como una instrucción del algoritmo principal. Entonces el formato es:

Cálculo del factorial de un número Ahora podemos calcular el factorial de un número

Cálculo del factorial de un número Ahora podemos calcular el factorial de un número por medio del uso de una función. La función factorial y el programa principal son:

Funciones lambda En ocasiones las funciones solamente requieren dos o tres renglones para su

Funciones lambda En ocasiones las funciones solamente requieren dos o tres renglones para su realización. En esos casos Python tiene otra forma de declarar las funciones en un sólo renglón. Dichas funciones se conocen como funciones anónimas lambda y su formato es el siguiente: Llamado por valor y llamado por referencia Los ejemplos de funciones que hemos presentado hasta este momento pasan las variables usando lo que en otros lenguajes como Java y C++ se conoce como “paso por valor”. En el caso de que la variable sea una lista, para pasar este tipo de variables Python, al igual que otros lenguajes de programación, usa lo que se conoce como “paso por referencia”. En ese caso la variable se puede modificar en la función o procedimiento y el cambio siempre se realiza usando la referencia a la localidad de memoria donde se almacena la variable.

Variables locales y globales Las variables que se definen en el programa principal se

Variables locales y globales Las variables que se definen en el programa principal se pueden usar en las funciones o procedimientos que las reciben como argumentos. Por otro lado, las variables que se definen dentro de una función solamente son válidas dentro de esa función. A las variables de una función se les llama variables locales. Las variables globales son aquellas que no importa donde se usen o modifiquen siempre conservan los valores asignados, ya sea en el algoritmo principal o en las funciones o procedimientos. Para hacer que una variable sea global hay que definirla como tal por medio de la instrucción: global variables.

Instrucciones de Python del Capítulo 8

Instrucciones de Python del Capítulo 8

Capítulo 9 Entrada y salida y de datos con archivos

Capítulo 9 Entrada y salida y de datos con archivos

Para escribir datos en un archivo usamos una variable que se llama identificador (handle

Para escribir datos en un archivo usamos una variable que se llama identificador (handle en inglés). Esta variable permite a Python hacer referencia al archivo. El valor que Python le asigna a la variable no es tan importante como su nombre, que es el que usamos para referenciar el archivo donde vamos a escribir o del que vamos a leer datos. Para abrir un archivo lo hacemos de la siguiente manera:

Escritura de datos alfanuméricos Una vez abierto el archivo, el siguiente paso es escribir

Escritura de datos alfanuméricos Una vez abierto el archivo, el siguiente paso es escribir en él. Esto lo hacemos con la instrucción write con el siguiente formato: Una vez que se escribe lo deseado, lo siguiente es cerrar el archivo con:

La instrucción with proporciona otra manera de abrir un archivo para escritura o lectura.

La instrucción with proporciona otra manera de abrir un archivo para escritura o lectura. La ventaja de usar with es que el archivo se cierra después de usarlo. El formato es: La primera línea termina con dos puntos y las siguientes líneas deben estar con sangría.

Escritura de datos numéricos Con la instrucción write, hasta ahora solamente hemos escrito datos

Escritura de datos numéricos Con la instrucción write, hasta ahora solamente hemos escrito datos alfanuméricos, por lo que si deseamos escribir datos numéricos los tenemos que convertir a datos alfanuméricos, es decir, convertirlos a cadenas con la instrucción str( ) o incluirlos dentro de una cadena.

Lectura de datos de un archivo Para leer datos de un archivo necesitamos saber

Lectura de datos de un archivo Para leer datos de un archivo necesitamos saber el formato de los datos. De la sección anterior sabemos que los datos se almacenan como cadenas, de esta manera, si son numéricos tenemos que convertirlos de cadena al formato adecuado. La primera acción que tenemos que realizar es abrir el archivo para lectura. Esto lo hacemos con:

Lectura y escritura de datos en Excel Desde Python también podemos leer datos creados

Lectura y escritura de datos en Excel Desde Python también podemos leer datos creados en Excel. Uno de los formatos para guardar un archivo de Excel es csv que quiere decir comma-separatedvalues (valores separados por comas). Para que Python pueda leer datos en este formato se debe importar la biblioteca csv que contiene la función csv. reader para leer de archivos y la función csv. writer para escribir en archivos en este formato.

Para abrir el archivo con: archivo = open ( “datos. Excel. csv”, “r”) Procedimiento

Para abrir el archivo con: archivo = open ( “datos. Excel. csv”, “r”) Procedimiento completo en pp 309. Para escribir en un archivo con el formato csv usamos la instrucción: csv. writer Procedimiento completo en pp 312.

Instrucciones de Python del Capítulo 9

Instrucciones de Python del Capítulo 9

Capítulo 10 Programación orientada a objetos

Capítulo 10 Programación orientada a objetos

Conceptos asociados a la POO La programación orientada a objetos requiere un entendimiento claro

Conceptos asociados a la POO La programación orientada a objetos requiere un entendimiento claro y preciso de los siguientes términos: 1. Clase: permite que la creación y el manejo de los objetos sea sencillo. 2. Objeto: es el elemento fundamental en la programación orientada a objetos, puede representar un objeto real como sería una cuenta bancaria, un cliente o una transacción o puede representar un elemento abstracto como una ecuación, una fracción o un número complejo. 3. Atributo: es el valor que almacena internamente el objeto (las características de un objeto) y que pueden ser datos primitivos o incluso otros objetos. 4. Método: es un grupo de instrucciones asociadas al objeto a las que se les ha dado un nombre específico. 5. Encapsulación: encapsular un objeto quiere decir que puede almacenar información y trabajar con ella de tal manera que los cambios de estado solamente puedan ser realizados por los métodos que pertenecen al objeto y que ningún otro objeto o función externa puedan hacerlo.

6. Herencia: es una técnica de la POO en la cual, se puede crear

6. Herencia: es una técnica de la POO en la cual, se puede crear una clase nueva a través de una clase existente, por medio de la declaración de nuevos métodos y atributos que extienden la funcionalidad de la clase de la que se hereda. 7. Polimorfismo: es la característica de la POO que permite a los valores de diferentes tipos de datos, ser manejados usando una interfaz uniforme. El mismo método puede ser usado por varias clases, pero de forma diferente.

Primera clase en Python Crear una clase en Python es muy sencillo y práctico,

Primera clase en Python Crear una clase en Python es muy sencillo y práctico, lo único que se debe hacer es usar la palabra reservada class seguida del nombre de una clase, tomando en cuenta que por convención el nombre debe empezar con una letra mayúscula (no debe empezar con un número o un caracter especial). Creación de la clase Numero Complejo Con el propósito de profundizar a fondo acerca de las características especiales de la POO en Python, crearemos un ejemplo que permitirá el manejo de números complejos, donde mostraremos el uso de la encapsulación, el polimorfismo y los métodos de acceso a una clase, con tal propósito iniciamos la definición de una nueva clase llamada Numero. Complejo, en la cual declararemos la parte real e imaginaria del número así como el constructor que inicializará los valores y una función que lo muestre en pantalla de la siguiente manera:

Declaración y uso de Setters y Getters La encapsulación se refiere a la delimitación

Declaración y uso de Setters y Getters La encapsulación se refiere a la delimitación del acceso a determinados métodos y atributos de los objetos en una clase. Esta propiedad es una de las más importantes del paradigma, ya que permite crear una interfaz segura entre el usuario y el código interno de la clase, para ello, se crean un conjunto de funciones especiales llamadas Setters y Getters, las cuales su único propósito es el de establecer (set) u obtener (get) los valores de los atributos en una clase. Para la clase Numero. Complejo se crean las siguientes funciones:

Sobreescritura de operadores Una característica clave del paradigma de orientación a objetos es la

Sobreescritura de operadores Una característica clave del paradigma de orientación a objetos es la redefinición de métodos existentes con el propósito de extender la funcionalidad de un método (herencia) o simplificar las operaciones (sobrecarga de operadores) de los objetos en una clase. En esta sección, en específico usamos la clase Numero. Complejo a la cual añadimos las dos operaciones básicas de números complejos, la suma y la resta como se muestra en el siguiente código: Para poder realizar alguna de las dos operaciones basta con la creación de dos objetos de tipo Numero. Complejo, para posteriormente añadir a un objeto la suma de otro por medio del método numero. Complejo. Suma.

Herencia La herencia es la propiedad del paradigma de orientación a objetos que permite

Herencia La herencia es la propiedad del paradigma de orientación a objetos que permite reutilizar y extender clases previamente creadas, lo cual permite la reutilización de código, en el sentido de que ya no es necesario escribir métodos o atributos que son creados en las clases de las cuales se hereda. En Python existen dos tipos de herencia, la simple y la múltiple. La herencia simple en Python consiste en que una nueva clase hereda u obtiene métodos y atributos previamente creados de otra clase a la que llamaremos clase padre. La herencia se puede ver como una jerarquía de clases donde, las clases hijo heredan de una clase padre, pero puede ser heredada a su vez por múltiples clases hijo.

Para mostrar la herencia creamos una nueva clase llamada Operacion, la cual implementa las

Para mostrar la herencia creamos una nueva clase llamada Operacion, la cual implementa las características que comparten las operaciones aritméticas de suma y multiplicación. La clase Operacion implementa el siguiente código:

Sobreescritura de métodos Los métodos que una clase hereda de otra clase se pueden

Sobreescritura de métodos Los métodos que una clase hereda de otra clase se pueden usar por ella ya que hereda todos los métodos definidos en la clase padre, junto con los definidos en ella misma. Además, la clase puede redefinir un método de la clase padre, creando un nuevo método con la misma firma (nombre, argumentos de entrada y salida), de manera que los métodos de la clase padre son redefinidos o remplazados. A esto se le conoce como sobreescritura de métodos. En el caso de nuestro ejemplo de operaciones aritméticas crearemos una nueva clase llamada Multiplicacion la cual heredará de la clase Operacion y redefinirá el método imprimir. Valor de la siguiente manera:

Instrucciones de Python del Capítulo 10

Instrucciones de Python del Capítulo 10

Capítulo 11 Graficación en Python

Capítulo 11 Graficación en Python

Visualización de datos es una característica importante de un programa, ya que permite tener

Visualización de datos es una característica importante de un programa, ya que permite tener un panorama de como se comportan los datos. Python puede emplear bibliotecas de graficación como las que tiene matplotlib, el cual fue diseñado por John D. Hunter (1968 -2012) y que está disponible sin costo para poder realizar gráficas de muy alta calidad a través de Python. Dentro del paquete matplotlib existe una biblioteca construcciones para graficar. Esta biblioteca es pyplot. De esta manera, siempre que vayamos a graficar tenemos que importar esta biblioteca.

Gráficas en 2 dimensiones La instrucción básica para graficar es plot(y) donde y es

Gráficas en 2 dimensiones La instrucción básica para graficar es plot(y) donde y es una lista de datos. Con el uso de plot se abre una nueva ventana con la gráfica generada. La instrucción plot se encuentra en la biblioteca pyplot del paquete matplotlib. Se carga con: Para desplegar la gráfica debemos incluir la instrucción show( ). De manera alterna, podemos importar solamente las instrucciones plot y show con:

Figuras múltiples Para poder realizar varias figuras es necesario numerarlas. Esto lo hacemos con

Figuras múltiples Para poder realizar varias figuras es necesario numerarlas. Esto lo hacemos con la instrucción figure. Es necesario asociarle un número de figura de la siguiente manera:

Subgráficas Para realizar varias gráficas en la misma figura usamos subgráficas que se generan

Subgráficas Para realizar varias gráficas en la misma figura usamos subgráficas que se generan con la instrucción subplot, la cual se debe importar de matplotlib. El formato es: Esta instrucción divide la figura en m × n subgráficas arregladas en forma de matriz de m renglones y n columnas. La variable k numera las subgráficas de izquierda a derecha y de arriba hacia abajo en numeración consecutiva y hace que se active la subgráfica correspondiente.

Otros tipos de gráficas bidimensionales Gráfica polar La gráfica polar se obtiene usando la

Otros tipos de gráficas bidimensionales Gráfica polar La gráfica polar se obtiene usando la instrucción plot pero usando las componentes r (radio vector) y θ (ángulo o argumento). Gráfica de pie La gráfica de pie se usa cuando queremos representar en porcentaje los datos. Gráfica de stem Gráfica de histograma La gráfica de histograma se usa para representar distribuciones de datos. Es una gráfica de barras. La gráfica de stem o de puntos se usa para graficar señales en forma de puntos. Se usa en procesado de señales digitales o de tiempo discreto.

Opciones de gráficas Las gráficas las podemos enriquecer con color, cambio del grueso de

Opciones de gráficas Las gráficas las podemos enriquecer con color, cambio del grueso de la traza o ticks, entre otras cosas.

Gráficas tridimensionales Las gráficas tridimensionales requieren tomar valores en dos variables que generalmente son

Gráficas tridimensionales Las gráficas tridimensionales requieren tomar valores en dos variables que generalmente son x, y para dar valores a un eje z. Gráfica de una curva paramétrica Gráfica de una superficie Gráfica de superficie de alambre (wireframe)

Gráfica del campo magnético de un alambre usando quiver Gráfica de superficie con proyección

Gráfica del campo magnético de un alambre usando quiver Gráfica de superficie con proyección sobre el plano x, y

Instrucciones de Python del Capítulo 11

Instrucciones de Python del Capítulo 11

Capítulo 12 Geolocalización y Análisis de Sentimientos

Capítulo 12 Geolocalización y Análisis de Sentimientos

Geolocalización La geolocalización es la capacidad para obtener la ubicación geográfica real y latitud

Geolocalización La geolocalización es la capacidad para obtener la ubicación geográfica real y latitud y longitud de un objeto o lugar tomando como referencia distintos dispositivos de rastreo global como satélites o torres de radiocomunicación, entre otros. El análisis de este tipo de información referenciada puede ser de gran ayuda para entender distintos problemas sociales asociados al uso de datos en la web, por lo que en esta sección se presenta geopy el cual es una herramienta muy útil para la extracción de este tipo de datos.

El módulo geopy es un módulo en Python especialmente diseñado para obtener información geolocalizada

El módulo geopy es un módulo en Python especialmente diseñado para obtener información geolocalizada de ciudades, países o cualquier dirección a lo largo de todo el mundo a través de una conexión tipo cliente servidor con otras populares herramientas de geolocalización como Open. Street. Map Nominatim, Google Geocoding API (V 3), Bing Maps, Yahoo! Place. Finder, Arc. GIS, entre otros. geopy está especialmente diseñado para obtener puntos de referencia de cualquier lugar así como también la medición de la distancia entre dichos puntos.

Ejemplos de cómo poder usar este módulo para extraer información geolocalizada utilizando código Python

Ejemplos de cómo poder usar este módulo para extraer información geolocalizada utilizando código Python • Geolocalización de un punto de interés Dentro de todas las posibles conexiones de geopy con herramientas de geolocalización, Open. Street. Map Nominatim ofrece la posibilidad de obtener la latitud y longitud asociada a una cadena de texto que contenga una ciudad, país o cualquier dirección que proporcionemos, para ello lo primero que haremos será crear un objeto de tipo Nominatim.

 • Distancia de dos puntos de interés Además de poder calcular la posición

• Distancia de dos puntos de interés Además de poder calcular la posición de un punto específico, geopy es también capaz de analizar y obtener el camino más corto entre dos puntos (en millas) inicializando un objeto de tipo vincenty o de tipogreat_circle 1, los cuales son dos algoritmos muy conocidos para calcular la distancia entre puntos tomando como referencia la estructura terráquea.

 • Visualización de distintos puntos de interés Una de las opciones más interesantes

• Visualización de distintos puntos de interés Una de las opciones más interesantes asociadas a la extracción de información geolocalizada es poder visualizar su distribución en un mapa con el propósito de analizar el comportamiento de cierto problema o fenómeno.

Análisis de sentimientos de Twitter La información disponible en redes sociales se puede usar

Análisis de sentimientos de Twitter La información disponible en redes sociales se puede usar para conocer la tendencia en las opiniones emitidas por los usuarios de estas redes. Para este propósito se requiere software adicional que necesita instalarse así como generar código en Python 2 para la extracción de tweets, su almacenamiento y su posterior análisis. Extracción de tweets Para poder extraer tweets es necesario hacerlo desde una aplicación de Twitter. Esta aplicación se registra en Twitter para obtener dos claves de acceso conocidas como Access Token y Access Token Secret.

La base de datos Mongo. DB Dado que los tweets no tienen una estructura

La base de datos Mongo. DB Dado que los tweets no tienen una estructura definida se requiere usar una base de datos no estructurada como la que usa Mongo.

Análisis de los tweets Una vez descargados los datos, procedemos a analizarlos usando Meaning.

Análisis de los tweets Una vez descargados los datos, procedemos a analizarlos usando Meaning. Cloud. Esta es una compañía que ofrece productos SAAS (Service As A Software) enfocados al análisis semántico de texto, permitiendo a usuarios embeber el procesamiento en cualquier aplicación o sistema.