PYTHON CON APLICACIONES A LAS MATEMÁTICAS, INGENIERÍA Y FINANZAS

PYTHON CON APLICACIONES A LAS MATEMÁTICAS, INGENIERÍA Y FINANZAS

PYTHON CON APLICACIONES A LAS MATEMÁTICAS, INGENIERÍA Y FINANZAS Autores: BÁEZ LÓPEZ, David; CERVANTES VILLAGÓMEZ, Ofelia ARÍZAGA SILVA, Juan Antonio; CASTILLO JUÁREZ, Esteban Páginas: 452 ISBN: 978-607-622-673-5 Editorial: Alfaomega Python es un software libre que tiene una gran cantidad de módulos para realizar el cómputo científico aplicado en múltiples áreas del conocimiento científico, léase medicina, ingeniería, ciencias, finanzas, economía, entre muchas otras. Ocupa el cuarto lugar de la lista de lenguajes de programación más usados por programadores, y el primer lugar entre los lenguajes de programación de alto nivel. Además, el IEEE lo ha posicionado en tercer lugar entre los lenguajes de programación. Los temas del presente documento son parte del curso introductorio de programación para estudiantes de ciencias, ingeniería y animación digital a nivel licenciatura de la Universidad de las Américas Puebla. El presente texto tiene como objetivo desarrollar desde los primeros capítulos la descripción, análisis y desarrollo de los algoritmos que posteriormente se implementan en Python. De esta manera, el usuario va de una descripción del problema en español, pero con una estructura definida, a una implementación formal en un lenguaje de programación. VENTAJAS • Cada capítulo cuenta con una serie de ejercicios que el lector puede resolver obteniendo así más experiencia en la solución de problemas implementando sus algoritmos en lenguaje Python. • En todos los capítulos se encuentran expuestos los objetivos perseguidos a largo de éste, así como una introducción y una conclusión. • El presente material consiste en una versión de los temas que los autores han impartido durante los últimos dos años. CONOZCA • El concepto de algoritmo y su descripción por medio de un lenguaje llamado pseudocódigo. • Cómo opera cada uno de los distintos tipos de “condiciones” en Python. • En qué consisten los subalgoritmos y cómo implementarlos en Python. APRENDA • A utilizar los ciclos “Mientras” y “Para” en el diseño de los algoritmos. • A crear los arreglos “vectores” y “matrices” para estructurar una gran cantidad de datos. • A programar utilizando el paradigma de la programación orientada a objetos (PPO) en Python. DESARROLLE SUS HABILIDADES PARA • Efectuar funciones con las estructuras de datos de Python. • Realizar operaciones sobre “matrices” en Python. • Crear, escribir y almacenar datos en un archivo. A QUIÉN VA DIRIGIDO El presente libro está dirigido a estudiantes de Ciencias, Ingeniería y Animación digital de nivel licenciatura, así como a profesionales e interesados en aprender a manejar el lenguaje Python en matemáticas y finanzas. . Contenido Prólogo XVII 1. Introducción 1 1.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2. Evolución de la computadora . . . . . . . . . . . . . . . . . . . . . . . 2 1.3. Arquitectura de una computadora . . . . . . . . . . . . . . . . . . . . 6 1.3.1. Instrucciones y datos de una computadora . . . . . . . . . . . . 7 1.3.2. Sistemas numéricos decimal y binario . . . . . . . . . . . . . . 7 1.3.3. Otros sistemas numéricos . . . . . . . . . . . . . . . . . . . . . 11 1.3.4. Estructura de lamemoria . . . . . . . . . . . . . . . . . . . . . 12 1.3.5. Lenguajes de una computadora . . . . . . . . . . . . . . . . . . 13 1.4. El lenguaje Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4.1. Descarga de Python . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4.2. La interfase de Python . . . . . . . . . . . . . . . . . . . . . . . 15 1.5. Organización del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2. Fundamentos de algoritmos y de Python 17 2.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2. ¿Qué es un algoritmo? . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3. Pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.1. Tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4.2. Asignación de valores a variables . . . . . . . . . . . . . . . . . 23 2.4.3. Inicialización de variables . . . . . . . . . . . . . . . . . . . . . 23 2.4.4. Operaciones básicas . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4.5. Operaciones con variables enteras . . . . . . . . . . . . . . . . 25 2.4.6. Operaciones con enteros y reales . . . . . . . . . . . . . . . . . 25 Python • Alfaomega Plataforma de contenidos interactivos XIX Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo 2.5. Partes de un algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.6. Algoritmos en pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . 27 2.7. Lenguaje Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.7.1. El ambiente de Python. . . . . . . . . . . . . . . . . . . . . . . 30 2.8. Estructura de un algoritmo en Python . . . . . . . . . . . . . . . . . . 32 2.9. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.10.Bibliotecas y encabezados . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.11.Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.11.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . 35 2.11.2. Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . 36 2.11.3. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.11.4. Otras operaciones booleanas . . . . . . . . . . . . . . . . . . . . 38 2.11.5. Operadores de asignación . . . . . . . . . . . . . . . . . . . . . 39 2.12.Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.13.Entrada y salida de datos en Python . . . . . . . . . . . . . . . . . . . 40 2.13.1. Despliegue de datos . . . . . . . . . . . . . . . . . . . . . . . . 40 2.13.2. Entrada de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.13.3. Tabulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.14. Algoritmos sencillos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.15.Variables alfanuméricas en Python . . . . . . . . . . . . . . . . . . . . 48 2.15.1. Operaciones con cadenas . . . . . . . . . . . . . . . . . . . . . . 49 2.15.2. Concatenación o suma de cadenas . . . . . . . . . . . . . . . . 50 2.15.3. Multiplicación de cadenas . . . . . . . . . . . . . . . . . . . . . 50 2.16.Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.16.1. Diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.17. Instrucciones de Python del Capítulo 2 . . . . . . . . . . . . . . . . . . 54 2.18.Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.19.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3. Condiciones 59 3.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.2. Condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.2.1. La condición en Python . . . . . . . . . . . . . . . . . . . . . . 63 3.2.2. Ejercicios de condiciones simples . . . . . . . . . . . . . . . . . 68 3.3. La condición Si - Si_no . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.3.1. Condición if - else . . . . . . . . . . . . . . . . . . . . . . . 73 X Contenido Alfaomega Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo 3.3.2. Ejemplos adicionales de condiciones if-else . . . . . . . . . . . . 75 3.4. Condiciones anidadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.4.1. if anidado en Python . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.2. Ejemplos adicionales con condiciones anidadas . . . . . . . . . 80 3.5. Casos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.6. Instrucciones de Python del Capítulo 3 . . . . . . . . . . . . . . . . . . 89 3.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4. Ciclos en Python 95 4.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.2. CiclosMientras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.2.1. El cicloMientras en Python . . . . . . . . . . . . . . . . . . . . 100 4.3. Ciclos Para . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.3.1. La función range . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.4. Ciclos anidados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.5. La instrucción continue . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.6. La instrucción break . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.7. Ejemplos adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.8. Instrucciones de Python del Capítulo 4 . . . . . . . . . . . . . . . . . . 132 4.9. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.10.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5. Cadenas, Listas, Diccionarios y Tuplas 137 5.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.2. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.2.1. Longitud de una cadena . . . . . . . . . . . . . . . . . . . . . . 141 5.2.2. Separación de una cadena . . . . . . . . . . . . . . . . . . . . . 141 5.2.3. Operaciones con cadenas . . . . . . . . . . . . . . . . . . . . . . 143 5.2.4. Concatenación o suma de cadenas . . . . . . . . . . . . . . . . 143 5.2.5. Multiplicación de cadenas . . . . . . . . . . . . . . . . . . . . . 144 5.2.6. Inmutabilidad de las cadenas . . . . . . . . . . . . . . . . . . . 144 5.2.7. Otras operaciones con cadenas . . . . . . . . . . . . . . . . . . 145 5.2.8. Condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.2.9. Ciclos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.3. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Contenido XI Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo Alfaomega 5.4. Definición de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 5.4.1. Operaciones con listas . . . . . . . . . . . . . . . . . . . . . . . 152 5.4.2. Mutabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.4.3. Conversión de lista de cadenas a cadena . . . . . . . . . . . . . 155 5.4.4. Otras operaciones con listas . . . . . . . . . . . . . . . . . . . . 156 5.5. Tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.5.1. Intercambio de valores . . . . . . . . . . . . . . . . . . . . . . . 159 5.5.2. Operaciones con tuplas . . . . . . . . . . . . . . . . . . . . . . 160 5.6. Diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.6.1. Otras operaciones para diccionarios . . . . . . . . . . . . . . . . 162 5.7. Instrucciones de Python del Capítulo 5 . . . . . . . . . . . . . . . . . . 164 5.8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 5.9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6. Arreglos I: Vectores 169 6.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.2. Introducción a arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.3. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.3.1. Acceso a vectores . . . . . . . . . . . . . . . . . . . . . . . . . . 175 6.3.2. Importancia del tamaño de un vector . . . . . . . . . . . . . . 179 6.4. Vectores en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6.4.1. Vectores por comprensión . . . . . . . . . . . . . . . . . . . . . 181 6.5. Ejemplos con vectores en Python . . . . . . . . . . . . . . . . . . . . . 182 6.5.1. Importancia del tamaño de un vector en Python . . . . . . . . 193 6.5.2. Inicialización de los vectores . . . . . . . . . . . . . . . . . . . . 194 6.5.3. La instrucción append . . . . . . . . . . . . . . . . . . . . . . . 194 6.6. Ordenamiento de vectores . . . . . . . . . . . . . . . . . . . . . . . . . 196 6.6.1. Ordenamiento por selección . . . . . . . . . . . . . . . . . . . . 196 6.6.2. Ordenamiento de burbuja . . . . . . . . . . . . . . . . . . . . . 200 6.7. Búsquedas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 6.7.1. Búsqueda binaria . . . . . . . . . . . . . . . . . . . . . . . . . . 205 6.8. Instrucciones de Python del Capítulo 6 . . . . . . . . . . . . . . . . . . 208 6.9. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 6.10.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 XII Contenido Alfaomega Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo 7. Arreglos II: Matrices 211 7.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 7.2. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 7.3. Arreglos en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 7.3.1. Generación de arreglos por indexación . . . . . . . . . . . . . . 215 7.3.2. Generación de arreglos por comprensión . . . . . . . . . . . . . 217 7.4. Métodos alternos de escritura dematrices . . . . . . . . . . . . . . . . 218 7.5. Selección de filas y columnas de un arreglo . . . . . . . . . . . . . . . . 220 7.5.1. Filas de un arreglo . . . . . . . . . . . . . . . . . . . . . . . . . 220 7.5.2. Columnas de un arreglo . . . . . . . . . . . . . . . . . . . . . . 221 7.6. Suma, resta y multiplicación dematrices . . . . . . . . . . . . . . . . . 221 7.6.1. Suma y resta dematrices . . . . . . . . . . . . . . . . . . . . . 222 7.6.2. Suma y resta dematrices en Python . . . . . . . . . . . . . . . 223 7.6.3. Multiplicación dematriz por un escalar . . . . . . . . . . . . . 225 7.6.4. Multiplicación dematriz por unamatriz . . . . . . . . . . . . . 227 7.6.5. Producto dematrices en Python . . . . . . . . . . . . . . . . . 229 7.7. Matrices especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 7.7.1. Lamatriz identidad . . . . . . . . . . . . . . . . . . . . . . . . 231 7.7.2. Lamatriz identidad en Python . . . . . . . . . . . . . . . . . . 231 7.7.3. La matriz transpuesta . . . . . . . . . . . . . . . . . . . . . . . 233 7.7.4. Transpuesta de un arreglo en Python . . . . . . . . . . . . . . . 234 7.7.5. Obtención de la transpuesta por comprensión . . . . . . . . . . 236 7.7.6. Lamatriz simétrica . . . . . . . . . . . . . . . . . . . . . . . . 237 7.8. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 7.9. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 7.10.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 8. Subalgoritmos 249 8.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 8.2. Subalgoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 8.3. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 8.4. Funciones en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 8.4.1. Funciones de Python . . . . . . . . . . . . . . . . . . . . . . . . 256 8.4.2. Funciones definidas por el usuario . . . . . . . . . . . . . . . . 256 8.5. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 8.5.1. Recursividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Contenido XIII Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo Alfaomega 8.6. Funciones lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 8.7. Llamado por valor y llamado por referencia . . . . . . . . . . . . . . . 268 8.8. Variables locales y globales . . . . . . . . . . . . . . . . . . . . . . . . 269 8.9. Ejemplos adicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 8.10. Instrucciones de Python del Capítulo 8 . . . . . . . . . . . . . . . . . . 292 8.11.Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 8.12.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 9. Entrada y salida y de datos con archivos 295 9.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 9.2. Escritura de datos en un archivo . . . . . . . . . . . . . . . . . . . . . 296 9.2.1. Escritura de datos alfanuméricos . . . . . . . . . . . . . . . . . 297 9.2.2. La instrucción with . . . . . . . . . . . . . . . . . . . . . . . . 300 9.3. Escritura de datos numéricos . . . . . . . . . . . . . . . . . . . . . . . 300 9.4. Lectura de datos de un archivo . . . . . . . . . . . . . . . . . . . . . . 303 9.4.1. Lectura de datos de un archivo . . . . . . . . . . . . . . . . . . 304 9.5. Lectura y escritura de datos en Excel . . . . . . . . . . . . . . . . . . . 308 9.6. Instrucciones de Python del Capítulo 9 . . . . . . . . . . . . . . . . . . 313 9.7. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 9.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 10.Programación orientada a objetos 315 10.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 10.2.Conceptos asociados a la POO . . . . . . . . . . . . . . . . . . . . . . 316 10.3.Primera clase en Python . . . . . . . . . . . . . . . . . . . . . . . . . . 319 10.4. Creación de la clase NumeroComplejo . . . . . . . . . . . . . . . . . . . 321 10.5.Declaración y uso de Setters y Getters . . . . . . . . . . . . . . . . . . 322 10.6.Sobreescritura de operadores . . . . . . . . . . . . . . . . . . . . . . . 324 10.7.Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.8.Sobreescritura demétodos . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.9.Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.9.1. Creación ymovimientos de una cuenta bancaria . . . . . . . . 331 10.9.2. Cálculo de la media aritmética y la desviación estándar . . . . 334 10.9.3. Operaciones conmatrices . . . . . . . . . . . . . . . . . . . . . 337 10.9.4. Figuras geométricas . . . . . . . . . . . . . . . . . . . . . . . . 341 10.9.5. Lista enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 XIV Contenido Alfaomega Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo 10.10.Instrucciones de Python del Capítulo 10 . . . . . . . . . . . . . . . . . 349 10.11.Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 10.12.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 11.Graficación en Python 351 11.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 11.2. Visualización de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 11.3.Gráficas en 2 dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . 353 11.4. Figuras múltiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 11.5. Subgráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 11.6.Otros tipos de gráficas bidimensionales . . . . . . . . . . . . . . . . . . 365 11.6.1. Gráfica polar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 11.6.2. Gráfica de pie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 11.6.3. Gráfica de histograma . . . . . . . . . . . . . . . . . . . . . . . 367 11.6.4. Gráfica de stem o de puntos . . . . . . . . . . . . . . . . . . . . 368 11.7.Opciones de gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 11.8.Gráficas tridimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . 371 11.9. Instrucciones de Python del Capítulo 11 . . . . . . . . . . . . . . . . . 379 11.10.Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 11.11.Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 12.Geolocalización y Análisis de Sentimientos 383 12.1. Geolocalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 12.2. El módulo geopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 12.2.1. Geolocalización de un punto de interés . . . . . . . . . . . . . . 385 12.2.2. Distancia de dos puntos de interés . . . . . . . . . . . . . . . . 387 12.2.3. Visualización de distintos puntos de interés . . . . . . . . . . . 388 12.3. Análisis de sentimientos de Twitter . . . . . . . . . . . . . . . . . . . . 390 12.3.1. Extracción de tweets . . . . . . . . . . . . . . . . . . . . . . . . 391 12.3.2. La base de datosMongoDB . . . . . . . . . . . . . . . . . . . . 395 12.3.3. Análisis de los tweets . . . . . . . . . . . . . . . . . . . . . . . . 398 12.4.Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 A. Instalación y configuración 405 A.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 A.2. Instalación de Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Contenido XV Python • Ofelia Cervantes, David Báez, Antonio Arízaga, Esteban Castillo Alfaomega A.3. Instalación de easy_install y pip . . . . . . . . . . . . . . . . . . . . . 408 A.4. Instalación de Numpy . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 A.5. Instalación de Scipy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 A.6. Instalación de Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . 413 A.7. Instalación de Tweepy . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 A.8. Instalación de Pymongo . . . . . . . . . . . . . . . . . . . . . . . . . . 416 A.9. Instalación de Geopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 A.10. Instalación de Matplotlib Basemap . . . . . . . . . . . . . . . . . . . . 418 B. Creación de ejecutables en Python 421 B.1. Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 B.2. Instalación de pyinstaller . . . . . . . . . . . . . . . . . . . . . . . . 422 B.3. Creación de ejecutables . . . . . . . . . . . . . . . . . . . . . . . . . . 422 B.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 XVI Contenido

Novedades en Editoriales Libro%

Motivos

Motivos es el único libro en prosa de José María Eguren. Es una recopilación...

Cuadernos de Vorónezh

Este libro es un milagro, y también el último escrito por Ósip Mandelstam, uno de los...

Nomadismo por mi país

Nomadismo por mi país es el diario de los talleres de poesía de Cecilia Pavón...

Presentación de Rodolfo Fogwill. Una monografía

Presentación de Rodolfo Fogwill. Una monografía es un enorme trabajo crítico...