class: center, middle, inverse, title-slide # Data Science en Python ## Curso Teórico-Práctico ### 2020 --- class: middle, center ## Instructor: **Gabriel Mantilla Saltos** ## Correo: **gmantill@espol.edu.ec** ## Telefono: **0991315261** <style> .code { color: #3399ff; font-weight: bold; text-decoration: none; } .footnote { position: absolute; bottom: 3em; padding-right: 4em; font-size: 60%; } .remark-code-line-highlighted { background-color: #ffff99 ; } .remark-slide-content { border-top: 11px solid #ffff99; border-bottom: 11px solid #ffff99; border-right: 11px solid #ffff99; border-left: 11px solid #ffff99; padding: 1em 2em 1em 2em } .remark-slide-content > h1 { font-weight: normal; margin-top: 10px; margin-left: -00px; } h1, h2, h3 { font-weight: normal; color: #2268BD; } .inverse { background-color: #ffff99; color: #d6d6d6; } .inverse h1, .inverse h2, .inverse h3 { color: #3399ff; } } </style> --- class: middle, center <br> #1.- ¿Qué es el Data Science? <font size="3"> <p style="text-align: justify;"> La ciencia de datos es un proceso, no un evento. Es el proceso de usar datos para entender diferentes cosas, para entender el mundo. La ciencia de datos es el arte de descubrir el conocimiento y las tendencias que se esconden tras los datos. Es cuando traduces los datos a una historia. Así que cuentas una historia para generar conocimiento. Y con este conocimiento, puedes hacer decisiones estratégicas para alguna compañía o institución. La ciencia de datos es un campo a procesos y sistemas para extraer datos de varios formas ya sea de manera estructurada o no. La ciencia de datos es el estudio de los datos. Así como las ciencia biológica es el estudio de la biología, la ciencia física el estudio de las reacciones físicas. Los datos son reales, tienen propiedades reales, y necesitamos estudiarlos si vamos a trabajar con ellos. La definición o el nombre se forjó en los 80s y 90s cuando algunos profesores estaban trabajando en los planes de estudio de estadística, y decidieron que seria mejor llamarlo ciencia de datos. Más concretamente, es más sobre datos de lo que es sobre ciencia. Si tienes datos y tienes curiosidad, y trabajas con datos, los manipulas, los exploras, el ejercicio de realizar el análisis de datos, tratar de obtener algunas respuestas de ello, eso es ciencia de datos. Te animo a pensar en la ciencia de datos no como un nuevo dominio de conocimiento para aprender, pero como un nuevo conjunto de habilidades que puede aplicar dentro de su área de especialización actual. Ya sea que esté informando resultados electorales, pronosticando ventas, optimizando anuncios en línea, identificando microorganismos en fotos de microscopio, buscando nuevas clases de objetos astronómicos o trabajando con datos en cualquier otro campo. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- <img src="https://lh3.googleusercontent.com/_yOaDge0KoUNS_nhk1C4jArFSl_Hw3J9BeZivYbLi44Hy4auriPUAGSlVP8_6DDTiRAmUj-eNxKUrlx0WXgyYpBbxL2tiGfCSrkmAN1eAfrzYFrisoEuEjm5akm9asCeaEhwLKu5ZFP1wG12yPqqEd6cwKJwlYF6nH7sjAIw1xxjz2BYsJpoBAWKfArZh4erdQbz0xsOZ9uJCEdJhyw5aInviLEDF9E8jtw54ZeX3lK_tmFOAMZpmJtaOX5-S3yUr-tF7fNOyCXKNjZsnLQ2G8BMz4RRiGccfWzvQoy6GGFTR9hgkmNeXADT72G9XMPEnBSB-PpxIA10pbxOo81zkLOmMx1YW2uD04vHP1zP5gMyLwxop9UjhK_zYf3gk3oNy99V9erP1wgqUb8YP0_qfiCtpcHuMGGjSJo-q1XU7uuE93Bbl45UHg8ASM7uXwT4B2Mos4mLrw61K9IXZ4BEEtm-YcEnz3Eu7gRIaW1fEDF58iTmUH4D-qLP8D1Tb-ImZHVQqEYmjVAk3c7VXE-BLSlMjSmAZ8V2AafjSrirUikTMCfRzb7xTD7RGhLMcf9A8EmSOP8bFYPt6Zi4Dvf5-d0ETmEPu04vuLGDnaqUhxVAGKTJzVxMxDSDEeryRqgI52vK-MZro3QrSnh1mevH9xCUVF1BwPpcw-mYdyP6CSsgmhxJO3_5pJz3x3BaboKvdf_OInAfQQnYGx3X1NH-2ifL=w693-h594-no?authuser=0" style="position:absolute; top:170px; left:200px; width:500px; height:400px"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top, center <br> #2.- Fases Data Science. <img src="https://lh3.googleusercontent.com/kb3clLM4qfZTz8g5pspBbOyi5A1ZLcY0pARk-2y2y2k5I2eHn5gV3WyJgShrDw8Kd4DF6WwAHAaYQWW8s_--bgVFkuvS70fZrZjZUc3830-Su374b8NPPdYRrpGv966GSA5re30cL1_aCA_ckzAXCy8t1TGNMZNhY68zjQo4QWQ1DfHaxJa0Cm1fd2K2F5l8bEZ10Ucpd74oqvO6n3hTNUDt9T-w579qHFCXbsfUhE69unG9hV3ItkoRJDWVmWBxsnQHMHIsgjKmjeUoh0LOcIJlshwRd74hV-NkkND3OSXm2b0-E_ko3-HpzT7A6fpedduZweP8vVygt7jSkTiyqkpooTDV-i_p7OmS13PhzYd2wqgEQsAxwArWEeG9ivkFZny2dxPA2ne_zFfWBYe4vu6CkXAOuZRHLxxIozv-27pJ3Zy4-oxGAKtYF7xKT6zY7FQYXHSEKvV1b0352Mc0BnTSutB0cq5tWYbFURSgtBOSAUAqOED89e2v07NfEAneY9mDpnKur4kml2oZCf-nVlRmJliQfZ-rSySICsWzIWjxN0wZtBwIl31la907TD7HFPhKO00zwGXCnma0riK2z1uEJo-nK97YlaHJPel8yO-IVU52dnSXUWAxD8Cya0Cx8V0YVclHT-Va7fop1s39NceJPPQNx7CJC_xuTpv3nMxyrHOep89nSy-3G4qT8qfj7ds6llKEXa4WjZ2RVWWrZLtD=w1216-h274-no?authuser=0" style="position:absolute; top:250px; left:50px; width:800px; height:250px"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> <b>Importar. </b>Independientemente de su Fuente, y de su volumen, se entienden los datos para luego importarlos correctamente. Exportar los datos comprenden técnicas similares, se guardan los datos depurados para que otra persona pueda sacar utilidad de ellos. </p> <pre></pre> <p style="text-align: justify;"> <b>Limpiar y ordenar. </b>Eliminar las distorsiones e inconsistencias que se generan al momento de registrarse, de tal manera que sea sencillo procesarlos. </p> <pre></pre> <p style="text-align: justify;"> <b>Procesar. </b>Usando diferentes métodos estadísticos se logra obtener una base de datos depurada, es decir, dar vueltas a la información que ya tenemos para prepararlas para la siguiente fase. El objetivo es representar la información en un formato que consiga reducir el costo de computo. </p> <p style="text-align: justify;"> <b>Visualizar. </b>Realizar un análisis exploratorio de los datos. Se tiene que hallar la manera más limpia e intuitiva de visualizar los resultados. Al describir los datos, se sugiere que metodología aplicar a la resolución del problema. </p> <pre></pre> <p style="text-align: justify;"> <b>Modelar. </b>Entrenar el modelo significa alimentar algoritmos clásicos o modernos, a raíz de información pasada pára predecir información nueva. En este paso se incluye el evaluar e interpretar los resultados, y si es necesario volver a reflexionar el problema, al punto de refinar los datos de entrada. </p> <pre></pre> <p style="text-align: justify;"> <b>Transformar. </b>La transformación incluye restringir las observaciones de interés, crear nuevas variables que son funciones de variables existentes y calcular un conjunto de estadísticas resumen, combinando visualización y transformación, desarrollando curiosidad y escepticismo para poder responder preguntas interesantes sobre los datos. </p> <pre></pre> <p style="text-align: justify;"> <b>Presentar. </b>Finalmente mostrar los resultados a terceros, de una manera limpia e intuitiva, de tal forma que se entienda el conocimiento obtenido, usando reportes, gráficos, visualizaciones interactivas. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #3.- Breve reseña y Características del lenguaje <font size="3"> <p style="text-align: justify;"> <a href="https://www.anaconda.com/distribution/">Python</a> es un lenguaje de programación interpretado creado por Guido van Rossum en el año 1991. En 1999 Guido lanzó una iniciativa llamada Computer Programming for Everybody (CP4E), cuyo propósito era alfabetizar a más y más personas a un nivel básico de programación. En la propuesta, identificaba varias metas que se proponía realizar para Python, entre las que se encontraban: Convertirlo en un proyecto de código abierto para que cualquiera pudiera contribuir con su desarrollo. Hacerlo un lenguaje tan simple e intuitivo que lo colocara al lado de su poderosa competencia. Hacerlo adecuado para tareas del día a día, permitiendo tiempos cortos de desarrollo. La característica principal de Python es que es interpretado, es decir, que no es necesario compilar el código para su ejecución ya que existe un interprete que se encarga de leer el código y ejecutarlo. El nombre "Python" viene dado por la afición de Van Rossum al grupo Monty Python, un grupo británico de seis humoristas que sintetizó en clave de humor la idiosincrasia británica de los años 1960 y 1970. Python es un lenguaje de scripting independiente de plataforma y orientado a objetos, preparado para realizar cualquier tipo de programa, desde aplicaciones Windows a servidores de red o incluso, páginas web. Es un lenguaje interpretado, lo que significa que no se necesita compilar el código fuente para poder ejecutarlo, lo que ofrece ventajas como la rapidez de desarrollo e inconvenientes como una menor velocidad. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> <b>Multiplataforma. </b>Hay versiones disponibles de Python en muchos sistemas informáticos distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es compatible con el lenguaje siempre y cuando exista un intérprete programado para él. </p> <pre></pre> <p style="text-align: justify;"> <b>Interpretado. </b>que no se debe compilar el código antes de su ejecución. En realidad sí que se realiza una compilación, pero esta se realiza de manera transparente para el programador. En ciertos casos, cuando se ejecuta por primera vez un código, se producen unos bytecodes que se guardan en el sistema y que sirven para acelerar la compilación implícita que realiza el intérprete cada vez que se ejecuta el mismo código. </p> <pre></pre> <p style="text-align: justify;"> <b>Interactivo. </b>Python dispone de un intérprete por línea de comandos en el que se pueden introducir sentencias. Cada sentencia se ejecuta y produce un resultado visible, que puede ayudarnos a entender mejor el lenguaje y probar los resultados de la ejecución de porciones de código rápidamente. </p> <pre></pre> <p style="text-align: justify;"> <b>Orientado a Objetos. </b>La programación orientada a objetos está soportada en Python y ofrece en muchos casos una manera sencilla de crear programas con componentes reutilizables. </p> <pre></pre> <p style="text-align: justify;"> <b>Sintaxis clara. </b> tiene una sintaxis muy visual, gracias a una notación identada (con márgenes) de obligado cumplimiento. En muchos lenguajes, para separar porciones de código, se utilizan elementos como las llaves o las palabras clave begin y end. Para separar las porciones de código en Python se debe tabular hacia dentro, colocando un margen al código que iría dentro de una función o un bucle. Esto ayuda a que todos los programadores adopten unas mismas notaciones y que los programas de cualquier persona tengan un aspecto muy similar. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #4.- ¿Qué es Spyder? <font size="3"> <p style="text-align: justify;"> <a href="https://www.spyder-ide.org/">Spyder</a> es un entorno de desarrollo interactivo de gran alcance escrito en Python, para Python, y diseñado por y para los científicos, ingenieros y analistas de datos. Ofrece una combinación única de la funcionalidad avanzada de edición, análisis, depuración y creación de perfiles de una herramienta de desarrollo integral con la exploración de datos, ejecución interactiva, inspección profunda y hermosas capacidades de visualización de un paquete científico. </p> </font> ##Características de Spyder <p style="text-align: justify;"> <font size="3"> <ul style="list-style-type:circle; text-align: justify;"> <li>Plataforma cruzada, se encuentra disponible para Linux, Windows y macOS.</li> <li>Código gratuito y de código abierto.</li> <li>Resaltado de sintaxis.</li> <li>Soporte en varios idiomas.</li> <li>Consola interactiva.</li> <li>Explorador de variables.</li> <li>Visor de documentación, visualización de gráficos y datos.</li> <li>Soporte para extensiones de funciones a través de complementos y API.</li> </ul> </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top, center <br> ##Entorno de Desarrollo <img src="https://lh3.googleusercontent.com/6j_Bu93Ni1Qho8p3lZ8ojGS9HKaeaMPP9KEdcpslPoyRZKu3ojQQwVUaEXgHfMu5ozGD0TyspbB7D65NF6quOmYzkA1WrxF-Igqb2OyHwSgIlUqZfuJ5J_X-Se72lUi7dUwBLCRSFHcWR9oZ0yABQ7YgNxWxM4P2M8_OsTa9pT_0UjeXSgCXIK7DqgFxb-5HOzGHxLpsqCoql_Kn9uX6XhxCEwrY_DM2OkDL2Gl__aJ-blgyhq44jN5f5ZW4Gi3IJ07-hgEphrVyN2_pASwYJZqbt2kbmRdqF3KLmj9y-dqG9CeBjKgl8glUANSIIlxZkV9rOkmABIWu1_lMRE6eefNrcDB-E3c1LPfHE0-cb7F7BTHvduENim9wbPCfap0oj9Zi7pVW6zAEXYfSGNUIuxlQ4KVUv2OiuOo_qd6RL1ybOXvvIWhR8t4Ax4XAksMhXPGRPsx14WE3N1-7PmxFhO4izM6o5XqFG1yQWHdn1Q0rS2YYPy789mVIi6nXM4aTMn_WM67Cm2I6hsMy4m6pCgAMjriI8-o2oEWzFKBtpDj1p6PyWHoy_n2bjtaO6Iqu5nycgTEWSq6572WHtPGjIRbMuCVaCdmFZJGRzeEnBwuA3d979GbPmvtY6DycEYcgy31LdwW3YGlaf-EbkgJNrCrq9gPP4-acVj9BcB85U-ddNjC8mINi1KRm8V516qPKEqcYlBdoZU46lMwTE0fmDZxH=w1261-h801-no?authuser=0" style="position:absolute; top:100px; left:90px; width:720px; height:500px"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top, center <br> <br> ##Crear un proyecto nuevo, y un script <ol style="text-align: justify;"> <li> Clic en Proyectos `->` Nuevo Proyecto... `->` Un directorio existente `->` Crear. <li> Archivo `->` Nuevo archivo `->` damos un nombre al script `->` Guardar </ol> <img src="https://lh3.googleusercontent.com/t7JvNjDFVhoK7vYFC9bWJghAsoJq4mlVaNbwEHnSpl1eQZBAQ8XH2cT7l_wLfm2hzLmHFYySKW-xVrtXbxIuW1-Oh94tUr3vvwojaRqYDHfHiVWDew4ZEsBMF0pwfdzgMOFagEysge2eTYPB_Sz6CRUzOxkR9buo3lY8r3udvGe3b67CSF0iLy-35qCPxK8hjeA245T9-Rjx-4Jgx0O9RLpyHlbCH1PkyfRZVOdAAcuSgcfZJfD09Bi0vfVw-ZAIs_I5O_I454BiILurdzgxPqpj2QcQjTD6AJNo21DdZ9RIxUK1Vg8eFmGQNNKh4XIkGSma42_OKs3T0CDMPMhFyZm4Q5w9bNX1imtqPns78jR-uC4Xcq_LJIZhcw4sj6UjVibQsBPsO_0H9b_DO2pxFXlJjEFS_secJ0CuqNFcpf1j0kiy7Hnv-gvDKPwqsE5DybpXbg76wew-WBcBBUjxcP05vPxMfeAh0cx3fxEOA3f5hkBz7TejNs0pZgaF5pLGChgFk32y_juIuIzF97jcys065vkGjtlHR-eK_FsgQglY2Hj1ocJ1yD1imvUTa8nN068r2BMnFDHOrB4hX2vRfUI8_X2ppnJExo11bBQ-RBiDZWLvEL0UMcjKUNv07-XIljEAmXMsPv1yb8mzabm-tSOzcN1b0_RhtKag_eFOa7_nEHKczaT5pngGwdZ5J1WTNvxD53v9VtqD9H-UIacYmVRW=w502-h273-no?authuser=0" style="position:absolute; top:350px; left:250px; width:400px; height:170px"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #5.- Objetos en Python <font size="3"> <p style="text-align: justify;"> Los tipos de objetos en un lenguaje de programación son aquellas clases o instancia, que debemos conocer para poder dominar la estructura de un problema, son como un tipo de dato cuya definición viene dada en una estructura llamada clase. La diferencia entre tipo y clase, es que un tipo es como se almacena un objeto en la memoria del sistema operativo, mientras que una clase representa un tipo de dato abstracto que puede ser usado como plantilla para clases adicionales a modo de herencia, y están en el código haciendo su papel de instrucciones. Los objetos no existen hasta que el programa se ejecuta y se crean en la memoria. Algunos de estos objetos son por ejemplo los números, caracteres, listas, diccionarios, tuplas, archivos y demás. Es provisorio conocer que algunos de estos objetos son alterables y no alterables, refiriéndose aquellos que podemos cambiar el estado o el contenido, para poder estructurar a conveniencia nuestra solución. Los objetos que son alterables son la listas, set, byte array y diccionarios. Mientras que los no alterables son el boleano, entero, float, tupla, str y frozenset. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ##Objetos comunes ```python a = 5 b = 5.1 c = 'Hola mundo' d = True e = 2+0j f = None print(type(a),type(b),type(c)) ``` ``` ## <class 'int'> <class 'float'> <class 'str'> ``` ```python print(type(d),type(e),type(f)) ``` ``` ## <class 'bool'> <class 'complex'> <class 'NoneType'> ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center ##Listas <font size="3"> <p style="text-align: justify;"> Las listas son una secuencia de objetos, no necesariamente homogéneas, lo que la convierte en una herramienta muy poderosa en Python. Una lista única puede contener tipos de datos como enteros, cadenas y objetos. Las listas son mutables y, por lo tanto, pueden modificarse incluso después de su creación. La lista estan ordenadas y tiene un recuento definido. Los elementos de una lista se indexan de acuerdo con una secuencia definida y la indexación de una lista se realiza con 0 como primer índice. Cada elemento de la lista tiene su lugar definido en la lista, lo que permite la duplicación de elementos en la lista. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> La matriz contiene esencialmente un puntero único a un bloque contiguo de datos. La lista de Python, por otro lado, contiene un puntero a un bloque de punteros, cada uno de los cuales a su vez apunta a un objeto completo de Python. Una vez más, la ventaja de la lista es la flexibilidad: dado que cada elemento de la lista es una estructura completa que contiene tanto datos como información de tipo, la lista puede llenarse con datos de cualquier tipo deseado. Las matrices de tipo fijo tipo NumPy carecen de esta flexibilidad, pero son mucho más eficientes para almacenar y manipular datos. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> Pero esta flexibilidad tiene un costo: para permitir estos tipos flexibles, cada elemento de la lista debe contener su propia información de tipo, es decir, cada elemento es un objeto completo de Python. En el caso especial de que todas las variables sean del mismo tipo, gran parte de esta información es redundante: puede ser mucho más eficiente almacenar datos en una matriz de tipo fijo. Las listas en Python se pueden crear simplemente colocando la secuencia dentro de los corchetes []. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top <br> ```python [1,5,10,8] ``` ```python ['arbol', 'planta', 'flores', 'frutos'] ``` ```python list(range(10))# Secuencia de numeros ``` ```python [['arbol', 'planta'] , ['flores','frutos']]# Lista multidimensional ``` ```python L1 = [True, 1, 'arbol', 3.1416]# Multiple vipo de valores [type(item) for item in L1] ``` ```python L1.append(10)# Agregar 1 elemento al final de una lista L1.insert(3, 'planta') L1.extend([8, 'flores', 'frutos']) L1 ``` ```python L2 = [['arbol', 'planta'] , ['frutos']]# Acceder a los elementos de una lista print(L2[0][1]);print(L2[1][0]) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top <br> ```python L1 = list(range(1,10,1)) print(L1[-5])# Imprimir el quinto ultimo elemento ``` ```python L1.remove(5) L1 ``` ```python L1.pop(5) ``` ```python L1.index(8) ``` ```python L3 = ['P','Y','T','H','O','N','F','O','R','D','A','T','A','S','C','I','E','N','C','E'] L3[5:];L3[3:8];L3[:-6] ``` ```python len(L3) ``` ```python L3[-len(L3):-(len(L3)-6)] ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center ##Tuplas <font size="3"> <p style="text-align: justify;"> Una lista no es lo mismo que una tupla. Ambas son un conjunto ordenado de valores, en donde este último puede ser cualquier objeto: un número, una cadena, una función, una clase, una instancia, etc. La diferencia es que las listas presentan una serie de funciones adicionales que permiten un amplio manejo de los valores que contienen. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> El hecho de ser mutable tiene además otras consecuencias. Para ser mutables las listas se almacena en dos bloques de memoria, mientras que las tuplas solo necesitan uno. Lo que provoca que las tuplas ocupen menos memoria que las listas. Además, por el hecho de no ser mutables, es más rápido manejar tuplas que listas. Si se quiere crear una tupla con un único elemento se utilizan los parentesis, debe añadirse una coma (,) antes de cerrar el paréntesis para crear una tupla con mas valores. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python tuple1 = (1,2,3,4,5) tuple2 = (5,7,8,9,10) tup = tuple1 + tuple2# Concatenar tuplas tup.count(5)# Queremos saber cuantos 5 hay ne la tupla ``` ```python [i*j for i,j in zip(tuple1, tuple2)] ``` ```python tuple(map(sum, zip(tuple1, tuple2)))# Para sumarlas usamos un generador zip, y luego ``` ```python len(tuple1)# Cantidad de valores en una tupla ``` ```python max(tuple1)# Obtener maximo o minimo ``` ```python tuple3 = tuple1 + (45,)# agregar valores a una tupla del tup# eliminar de memoria a una tupla tuple(L1)# Convertir lista a tupla ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center ##Diccionarios <font size="3"> <p style="text-align: justify;"> Un diccionario consta de claves y valores. Es útil comparar un diccionario con una lista. En lugar de los índices numéricos como una lista, los diccionarios tienen claves. Estas claves son las claves que se utilizan para acceder a los valores dentro de un diccionario. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python Dict = {"key1": 1, "key2": "2", "key3": [3, 3, 3], "key4": (4, 4, 4), ('key5'): 5, (0, 1): 6} Dict ``` ```python Dict['key1'] = 100# Actualizar algun valor Dict.update( {'key1' : 1000} ) Dict.keys() ``` ```python Dict.values() ``` ```python Dict.update([ ('key6', 100)])# Agregar un nuevo objeto del(Dict['key6']) dict2 = {'key6':4,'key7':5,'key8':6,'key9':20} Dict.update( dict2 )# Agregar un diccionario a otro diccionario Dict ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center ##Numpy <font size="3"> <p style="text-align: justify;"> NumPy es un paquete de Python que significa "Python numérico". Es la biblioteca principal para la computación científica, que contiene un poderoso objeto de matriz n-dimensional, proporciona herramientas para integrar C, C ++, etc. También es útil en álgebra lineal, capacidad de números aleatorios, etc. La matriz NumPy también se puede usar como un eficiente Contenedor multidimensional para datos genéricos. Numpy array es un poderoso objeto de matriz N-dimensional que tiene la forma de filas y columnas. Podemos inicializar matrices numpy de listas anidadas de Python y acceder a sus elementos. Es necesario tener instalada la libreria numpy para poder llamarla en consola. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top <br> ```python import numpy as np np.array([1, 4, 2, 5, 3]) ``` ```python np.array([1, 2, 3, 4], dtype='float32') ``` ```python np.array([range(i, i + 3) for i in [2, 4, 6]]) ``` ```python np.zeros(10, dtype=int)# Creando un vector de zeros ``` ```python np.ones((3, 5), dtype=float)# Creando una matriz de unos ``` ```python np.arange(0, 20, 2)# Creando secuencias ``` ```python np.linspace(0, 1, 5)# Creando un arreglo de espaciado uniformemente entre 0 y 1 ``` ```python np.random.random((3, 3)) ``` ```python np.eye(3)# Matriz identidad ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top <br> ```python np.full((3, 5), np.pi)# Matriz de 3 por 5, con el numero 3.14 ``` ```python np.random.randint(0, 10, (3, 3)) ``` ```python np.random.seed(0)# Semilla x = np.random.randint(-10,10, size=(3, 4, 5))# 3 matrices, de 4 filas y 5 columnas, numero aleatorios desde -10 hasta 9 x ``` ```python x[0] ``` ```python x[0,0] ``` ```python x[1,1,2] ``` ```python x[0] = 3.14159 # Truncar x[1,1,1:3] ``` ```python np.concatenate([np.array([1, 2, 3]), np.array([3, 2, 1])]) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center ##Pandas <font size="3"> <p style="text-align: justify;"> Pandas es una herramienta de manipulación de datos de alto nivel desarrollada por Wes McKinney. Es construido con el paquete Numpy y su estructura de datos clave es llamada 'DataFrame'. El DataFrame te permite almacenar y manipular datos tabulados en filas de observaciones y columnas de variables. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> **Series:** Son arrays unidimensionales con indexación (arrays con índice o etiquetados), se pueden generar de una lista o de una matriz. La NumPy tiene un índice entero definido implícitamente, la Serie Pandas tiene un índice explícitamente definido asociado con los valores. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> **DataFrame:** Son estructuras de datos similares a las tablas de bases de datos relacionales como SQL. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> **Panel, Panel4D y PanelND:** Estas estructuras de datos permiten trabajar con más de dos dimensiones. Dado que es algo complejo y poco utilizado trabajar con arrays de más de dos dimensiones. </p> </font> <pre></pre> <font size="3"> <p style="text-align: justify;"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python import pandas as pd data = pd.Series([0.25, 0.5, 0.75, 1.0]) data.values;data.index ``` ```python data = pd.Series([0.25, 0.5, 0.75, 1.0],index=['a', 'b', 'c', 'd']) data['b'] ``` ```python data[['a', 'b']]# Indexación elegante ``` ```python data = pd.Series([0.25, 0.5, 0.75, 1.0],index=[2, 5, 3, 7]) data[2:5] ``` ```python data.loc[2] ``` ```python data.loc[2:5]# El atributo loc permite indexar y segmentar, siempre hace referencia al índice explícito ``` ```python data.iloc[2]# El atributo iloc permite la indexación y corte, siempre hace referencia al índice implícito ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: top <br> ```python Data = pd.DataFrame({'PAIS':['Ecuador','Inglaterra','Japon','Finlandia'],'CIUDAD':['Ambato','Londres','Tokio','Helsinki'],'PIB':[71,2622000,4872000,251]},columns=['PAIS', 'CIUDAD','PIB'],index=np.arange(1, 5, 1)) Data.iloc[:3, :2]# las tres primeras filas, las dos primeras columnas ``` ```python Data.loc[5] = ['Alemania', 'Berlín',3677000]# agregar un nuevo registro Data.loc[:3, :'CIUDAD']# El indexador ix permite un híbrido de estos dos enfoques ``` ```python Data['PAIS'] = Data['PAIS'].astype("category") Data.rename(columns={'PAIS' : 'PAISES'}, inplace=True) Data.PAISES.value_counts() ``` ```python Data.columns ``` ```python Data['CLASE'] = pd.cut(Data.PIB, bins=[0, 100, 1000000, 10000000], labels=['Pobres', 'Clase Media', 'Inteligentes'], include_lowest=True) Data['CLASE'].unique() ``` ```python Data[Data['PIB']>=10000] ``` ```python Data.T;Data.values[0] ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python data = pd.Series([1, np.nan, 'hello', None]) data.isnull();data.isna() ``` ```python data.dropna();data.dropna(inplace=True) ``` ```python data = pd.DataFrame([[1, np.nan, 2],[2, 3, 5],[np.nan, 4, 6]])# Hagamos un data.dropna() data.dropna(axis='columns') ``` ```python data[3] = np.nan data.dropna(axis='columns', how='all') ``` ```python data.dropna(axis='rows', thresh=3)# El parámetro thresh le permite especificar un número mínimo de valores no nulos para la fila / columna que se mantendrá ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python x = np.random.random((100, 4)) A = pd.DataFrame.from_records(x) A.loc[80:,3]=None A.loc[80:,2]=None A.dropna(axis='rows', thresh=3, inplace = True) data = pd.Series([1, np.nan, 2, None, 3], index=list('abcde')) data.fillna(0) ``` ```python data.fillna(method='ffill');data.fillna(method='bfill')# ffill rellena con el anterior, bfill rellena con el siguiente ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python data = pd.DataFrame({'col1': [1, 2], 'col2': ['Gabriel', 'Fernando'], 'col3':[True, False], 'col4':[np.pi, 3.17]}) data.dtypes ``` ```python data['col1'].astype('int32').dtypes ``` ```python data.astype({'col2': 'category'}).dtypes ``` ```python data["col3"].astype(int) ``` ```python vector=np.array([1, 2, 3, 4], dtype='float32') matriz=vector.reshape(2, 2)# de vector a matriz data=pd.DataFrame(matriz) data.values.tolist() ``` ```python from datetime import datetime now = datetime.now() print("time:", now.strftime("%H:%M:%S")) ``` ```python print("mes/dia/anio hora:minuto:segundo", now.strftime("%m/%d/%Y, %H:%M:%S")) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python import datetime as dt date_time_str = '29@06+2020 08:15:27.243860' print(dt.datetime.strptime(date_time_str, '%d@%m+%Y %H:%M:%S.%f')) ``` ```python print(dt.date.today()) ``` ```python d = dt.date(2019, 4, 13) print(d) ``` ```python from datetime import date print(date(2019, 4, 13)) ``` ```python today = date.today() print("Current date =", today) ``` ```python print("Anio:", today.year);print("Mes:", today.month);print("Dia:", today.day);print("Dia Semana:", today.weekday()) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python from datetime import time tiempo = time(hour = 11, minute = 34, second = 56, microsecond=100000) print('Tiempo =', tiempo) ``` ```python print("Hora =", tiempo.hour);print("Minuto =", tiempo.minute); ``` ```python print("Segundos =", tiempo.second);print("Microsegundos =", tiempo.microsecond) ``` ```python from datetime import datetime, date print("Diferencia", date(year = 2018, month = 7, day = 12) -date(year = 2017, month = 12, day = 23)) ``` ```python from datetime import timedelta print("Delta", timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) - timedelta(days = 4, hours = 11, minutes = 4, seconds = 54)) ``` ```python deltatime = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("Segundos totales =", deltatime.total_seconds()) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python from datetime import datetime # El dtype datetime64 codifica las fechas como enteros de 64 bits y, por lo tanto, permite que las matrices de fechas se representen de manera muy compacta. # Datetime64 requiere un formato de entrada muy específico data = np.array('2015-07-04', dtype=np.datetime64) print(data) ``` ```python print(data + np.arange(12)) ``` ```python index = pd.DatetimeIndex(['2014-07-04', '2014-08-04','2015-07-04', '2015-08-04']) data = pd.Series([0, 1, 2, 3], index=index) print(data) ``` ```python data = pd.to_datetime("4th of July, 2015") data.strftime('%A');data.strftime('%W-%A') ``` ```python pd.date_range('2015-07-03', '2015-07-10')# Secuencias de fechas ``` ```python print(pd.date_range('2015-07-03', periods=8)) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python data = pd.to_datetime([datetime(2015, 7, 3), '4th of July, 2015','2015-Jul-6', '07-07-2015', '20150708']) print(data);print(data.to_period('A')) ``` ```python pd.date_range('2015-07-03', '2015-07-10') ``` ```python pd.date_range('2015-07-03', periods=8);pd.period_range('2015-07', periods=8, freq='M') ``` ```python pd.date_range('2020-07-01',periods=8,freq=pd.DateOffset(years=1)) ``` ```python import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) ``` ```python GYE = pytz.timezone('America/Guayaquil') datetime_GYE = datetime.now(GYE) print("Guayaquil:", datetime_GYE.strftime("%m/%d/%Y, %H:%M:%S")) ``` ```python tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S")) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #6.- Operadores <font size="3"> <p style="text-align: justify;"> Los operadores son símbolos que permiten realizar operaciones entre variables, valores y objetos. Entre ellos están los Aritméticos, Comparación, Asignación, Lógicos, Identidad, Membresía, entre otros. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <strong>Operadores Aritméticos</strong> <font size="4"> <pre class="tab"> ➜ + Suma</p> ➜ - Resta</p> ➜ * Multiplicación</p> ➜ / División</p> ➜ % Modulo</p> ➜ ** Exponentiation</p> ➜ // Division entera</p> </pre> </font> <br> <strong>Operadores de Comparación</strong> <font size="4"> <pre class="tab"> ➜ == Equal ➜ != Not equal ➜ > Greater than ➜ < Less than ➜ >= Greater than or equal to ➜ <= Less than or equal to </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <strong>Operadores de Asignación</strong> <font size="4"> <pre class="tab"> ➜ = x = 5 x = 5 ➜ += x += 3 x = x + 3 ➜ -= x -= 3 x = x - 3 ➜ /= x /= 3 x = x / 3 ➜ %= x %= 3 x = x % 3 ➜ //= x //= 3 x = x // 3 ➜ &= x &= 3 x = x & 3 ➜ |= x |= 3 x = x | 3 ➜ ^= x ^= 3 x = x ^ 3 ➜ >>= x >>= 3 x = x >> 3 ➜ <<= x <<= 3 x = x << 3 ➜ *= x *= 3 x = x * 3 ➜ **= x **= 3 x = x ** 3 </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <strong>Operadores de Lógica</strong> <font size="4"> <pre class="tab"> ➜ and Devuelve True si ambas afirmaciones son Verdaderas ➜ or Devuelve True si una de las afirmaciones es Verdadera ➜ not Devuelve Falso si el resultado es verdadero </pre> </font> <br> <strong>Operadores de Identidad</strong> <font size="4"> <pre class="tab"> ➜ is Devuelve verdadero si ambas variables son el mismo objeto ➜ is not Devuelve verdadero si ambas variables no son el mismo objeto </pre> </font> <br> <strong>Operadores de Membresía</strong> <font size="4"> <pre class="tab"> ➜ in Devuelve True los valores especificados estan en el objeto ➜ not in Devuelve True los valores especificados no estan en el objeto </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <strong>Operadores aritméticos con NumPy</strong> <font size="4"> <pre class="tab"> ➜ + np.add Suma (e.g., 1 + 1 = 2) ➜ - np.subtract Resta (e.g., 3 - 2 = 1) ➜ - np.negative Negación Unitaria (e.g., -2) ➜ * np.multiply Multipicación (e.g., 2 * 3 = 6) ➜ / np.divide División (e.g., 3 / 2 = 1.5) ➜ // np.floor_divide División entera (e.g., 3 // 2 = 1) ➜ ** np.power Exponenciación (e.g., 2 ** 3 = 8) ➜ % np.mod Modulo / Residuo (e.g., 9 % 4 = 1) ➜ abs np.abs Valor absoluto </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <strong>Operadores bitwise</strong> <font size="3"> <p style="text-align: justify;"> Los operadores bitwise (bit a bit) son operadores de alto rendimiento que operan sobre números binarios a nivel de sus bits individuales. Es una acción primitiva rápida, soportada directamente por los procesadores. </p> </font> <pre></pre> <font size="4"> <pre class="tab"> ➜ & np.bitwise_and ➜ | np.bitwise_or ➜ ^ np.bitwise_xor ➜ ~ np.bitwise_not </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <strong>Operadores de comparación NumPy</strong> <pre></pre> <font size="4"> <pre class="tab"> ➜ == np.equal ➜ != np.not_equal ➜ < np.less ➜ <= np.less_equal ➜ > np.greater ➜ >= np.greater_equal ➜ algun valor? np.any ➜ todos? np.all ➜ iif np.where </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python x = np.arange(4) print("Suma ", x + 2,np.add(x, 2)) ``` ```python print("División entera ",x // 2,np.floor_divide(x,2)) ``` ```python print("Modulo ",x%2,np.mod(x,2)) ``` ```python print("Mayor que ", x > 2, np.greater(x,2)) ``` ```python print("Operador y: ",type(x[0]) == int and x[0] == 0) ``` ```python print("Operador y: ",(type(x[0]) == int) & (x[0] == 0))# Los paréntesis son importantes, sino diera error ``` ```python print("Operador y: ",(type(x) == int) and (x == 0))# Esta no es la forma de evaluar uno a uno ``` ```python print("Operador y uno a uno: ",(type(x) == int) & (x == 0),np.bitwise_and(type(x) == int,x == 0))# forma correcta ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python print("Algun valor mayor a 2? ",np.any(x > 2)) ``` ```python print("Todos son mayor a 2? ",np.all(x > 2)) ``` ```python print("Suma NOT (A OR B): ",np.sum(~((x <= 1) | (x > 1))))#suma los true ``` ```python print("Son diferentes? ",np.bitwise_xor((True | True), (False | False))) ``` ```python print("Son diferentes? ",np.bitwise_xor(x >= 1, x < 2)) ``` ```python print("(A OR B): ",np.bitwise_or(x >= 1, x < 2)) ``` ```python if (5 in x): print("Si esta en el vector") else: print("No esta en el vector") ``` ```python np.where(5 in x,"Si esta en el vector","No esta en el vector") ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python if (None is np.nan): print("Es vacio") else: print("No son el mismo tipo de objeto") ``` ```python if (x is not int): print("Son el mismo typo de objeto") else: print("No son el mismo tipo de objeto") ``` ```python if np.any(np.isnan(x)) or np.any(np.isinf(x)): print("Si tiene un valor vacio o infinito") else: print("No tiene un valor vacio o infinito") ``` ```python (2, 3) not in [(2, 7), (7, 3), "hola"]# Con el not x es evaluado negativo ``` ```python for i in [5, 10, 15, 20, 25, 30]: if not i in (10,25): print ("Item: " ,i) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <strong>Operadores de agregación Numpy</strong> <pre></pre> <font size="4"> <pre class="tab"> ➜ np.sum np.nansum Suma ➜ np.prod np.nanprod Producto ➜ np.mean np.nanmean Promedio ➜ np.std np.nanstd Desviación Estandar ➜ np.var np.nanvar Varianza ➜ np.min np.nanmin Mínimo ➜ np.max np.nanmax Máximo ➜ np.argmin np.nanargmin Encontrar indice con el mínimo ➜ np.argmax np.nanargmax Encontrar indice con el máximo ➜ np.median np.nanmedian Mediana ➜ np.percentile np.nanpercentile Percentile ➜ np.sort Ordenar el objeto ➜ np.count_nonzero Contar números ➜ np.diagonal Devuelve la diagonal de una matriz ➜ np.trace Devuelve la suma de la diagonal </pre> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <strong>Operadores Pandas</strong> <pre></pre> <font size="4"> <pre class="tab"> ➜ + add() ➜ - sub(), subtract() ➜ * mul(), multiply() ➜ / truediv(), div(), divide() ➜ // floordiv() ➜ % mod() ➜ ** pow() <pre class="tab"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #7.- Importar y exportar base de datos <font size="3"> <p style="text-align: justify;"> Las bases de datos son el producto de la necesidad humana de almacenar la información, es decir, de preservarla contra el tiempo y el deterioro. Para luego poder utilizarla, modificarla y actualizarla. Un sistema gestor consiste en una colección de datos interrelacionados y un conjunto de programas acceder a los datos de una forma rápida y estructurada. Estos sistemas son ampliamente estudiados en la informática actual. En una empresa la base de datos es quien te dice como ha ido evolucionando el negocio, y esta información es muy valioso y aprovechada efectivamente en la generación de ventas y utilidades. Las ventajas de tener un almacén de datos, es su la Capacidad, es decir el volumen que podamos almacenar. Datos no duplicados con menor redundancia. Rapidez, al utilizar estructuras ordenadas y bien diseñadas. Facilidad de trabajo, reusabilidad de los datos que están en todo momento a disposición. Compartición de datos. Seguridad y chequeo de errores. Primero veremos como abrir bases de datos, y luego como guardar en diferentes formatos de archivos. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> Primero haremos un ejemplo con un archivo .csv, que es un archivo plano, que separa las columnas con el carácter (,) o alguno otro carácter especial, en el siguiente <a href="https://honingds.com/blog/pandas-read_csv/#ftoc-squeeze">Link</a> tenemos más ejemplos de cómo poder usar este comando. </p> </font> ```python import pandas as pd Muestra = pd.read_csv("Data/Muestra.csv", sep=";",skiprows = 0,header=0,decimal = '.',parse_dates = ['FECHA','FECHA_NACIMIENTO'] ); Muestra = pd.read_csv("Data/Muestra.csv", sep=";",skiprows = 0,header=0,decimal = '.',parse_dates = ['FECHA','FECHA_NACIMIENTO'],date_parser = lambda x: pd.datetime.strptime(x, "%d/%m/%Y")); ``` ```python Muestra = pd.read_csv("Data/Muestra.csv", sep=";",skiprows = 0,header=0,decimal = '.',parse_dates = ['FECHA','FECHA_NACIMIENTO'],infer_datetime_format=True); Muestra = pd.read_csv("Data/Muestra.csv", sep=";",decimal = '.',dtype={'PRODUCTO':'category','PRECIO':'float64','CANTIDAD':'int64'}, usecols=['PRODUCTO','PRECIO','CANTIDAD']); Muestra = pd.read_csv("Data/Muestra.csv", sep=";",decimal = '.',dtype={'PRODUCTO':'category','PRECIO':'float64','CANTIDAD':'int64'}, usecols=['PRODUCTO','PRECIO','CANTIDAD'],encoding='utf-8') Muestra.dtypes ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> Ahora veamos el ejemplo de como abrir un archivo de excel, Excel es una de las herramientas de datos más populares y ampliamente utilizadas, es difícil encontrar una organización que no trabaje con ella de alguna manera. </p> </font> ```python Muestra = pd.read_excel('Data/Muestra.xlsx',header=0, index_col = 7) Muestra = pd.read_excel('Data/Muestra.xlsx',header=0, dtype={'PRODUCTO':'category','PRECIO':'float64','CANTIDAD':'int64'}) Muestra = pd.read_excel('Data/Muestra.xlsx',header=0, parse_dates = ['FECHA','FECHA_NACIMIENTO'], sheet_name='VENTAS',usecols=[6,18]) # conda install pandas=0.25, abrir anaconda prompt Muestra = pd.read_excel('Data/Muestra.xlsx',names = ['FECHA','FECHA_NACIMIENTO'], sheet_name='VENTAS',usecols=[6,18],skiprows = 5)# No toma las primeras 5 filas Muestra2 = pd.read_excel('Data/Muestra.xlsx',names = ['FECHA','FECHA_NACIMIENTO'], sheet_name='VENTAS',usecols=[6,18],nrows=5)# Toma las primeras 5 filas Muestra3 = pd.concat([Muestra2,Muestra]) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python # conda install -c conda-forge pyreadstat # conda install feather-format -c conda-forge # conda install pickle import pandas as pd import csv from pandas import read_csv import pyreadstat import feather import pickle df, meta = pyreadstat.read_sas7bdat('Data/Muestra.sas7bdat') df = pd.read_spss('Data/Muestra.sav') df = read_csv('Data/Muestra.txt', sep='\t',decimal='.',engine='python',encoding='latin-1') df.dtypes ``` ```python df = feather.read_dataframe('Data/Muestra.feather')# archivo temp en python with open('Data/Muestra.data', 'rb') as filehandle: # leer los datos como flujo de datos binarios df = pickle.load(filehandle) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> Para guardar un archivo en formato SPSS, utilizaremos el formato .sav, mas no .sas7bdat, debido a que esas configuraciones son mejores si el mismo programa crea el set de datos, con la descripción de cada variable. feather es un formato de archivo binario rápido, liviano y fácil de usar para almacenar dataframes. Mientras que pickle "serializa" un objeto antes de escribirlo en el archivo. Pickling es una forma de convertir un objeto de Python (listas, diccionarios, etc.) en una secuencia de caracteres. La idea es que esta secuencia de caracteres contiene toda la información necesaria para reconstruir el objeto en otro script de Python como una extension propia de python. </p> </font> ```python pyreadstat.write_sav(df, 'Data/Muestra2.sav') df.to_csv('Data/Muestra2.csv', index=False, encoding="utf-8-sig") df.to_excel('Data/Muestra2.xlsx', index = None, header=True) feather.write_dataframe(df, 'Data/Muestra2.feather') with open('Data/Muestra2.data', 'wb') as filehandle: # almacenar los datos como flujo de datos binarios pickle.dump(df, filehandle) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #8.- Pipe <font size="3"> <p style="text-align: justify;"> Pipe, nos ayuda a secuenciar cualquier comando anidado o cualquier expresión complicada en una secuencia de transformaciones simples, aumentando la legibilidad del codigo y disminuyendo la necesidad de emparejar paréntesis! </p> </font> <ul style="list-style-type:square; text-align: justify;"> <strong>Argumentos</strong> <li> x | p(f) es igual a f(x)</li> <li> x | f(px,y) es igual a f(x, y)</li> <li> x | p(f) | p(g) | p(h) es igual a h(g(f(x)))</li> <li> x | f(parametro = px) es igual a f(parametro = x)</li> </ul> </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python # conda install --upgrade sspipe from sspipe import p, px import matplotlib.pyplot as plt square=lambda x: x**2 def sqrt(x): return x**0.5 "hello world!" | p(print) ``` ```python 5 | p(square) | p(sqrt) ``` ```python [5,7] | p(len) ``` ```python (5,7) | p(list) ``` ```python 5 | p(lambda x: range(x,10,1)) | p(list) ``` ```python 3.1416 | p(sqrt) | p(lambda x: np.round(x,decimals=2)) ``` ```python 5 | px + 2 | px ** 5 + px | p(print) ``` ```python range(10) | np.sin(px)+1 | p(plt.plot) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python from dfply import *# pip install dfply df = pd.read_excel('Data/Muestra.xlsx') Ventas = df >> select(X.PRODUCTO, X.PRECIO, X.CANTIDAD) >> mutate(VENTAS = X.PRECIO*X.CANTIDAD) Ventas >> row_slice([6,8]) ``` ```python df >> select(0,1,2) >> drop(0) >> head(3) ``` ```python nuevo = df >> drop(2, X.GENERO, ['CLIENTE','ESTADO_CIVIL']) df >> select(~X.PRODUCTO) >> select(starts_with('P')) ``` ```python df >> drop(columns_from(X.CANTIDAD)) ``` ```python df >> sample(frac=0.5, replace=False) ``` ```python df >> distinct(X.REGION) ``` ```python df >> select(contains('ADO')) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python df >> select(columns_between(3,6,inclusive = True))# incluyendo la 6 ``` ```python df >> select(columns_to(6,inclusive = True)) ``` ```python df >> select(columns_from(6)) ``` ```python df >> mask(X.METACRITIC>=70, X.GENERO == 'Carreras')# mask () también se puede llamar usando el alias filter_by () ``` ```python df >> mask((X.METACRITIC>=70) & (X.GENERO.isin(['Carreras','Simuladores']))) ``` ```python df >> transmute(VENTA=X.PRECIO * X.CANTIDAD - X.DESCUENTO) >> arrange(X.VENTA, ascending = True) ``` ```python df >> mutate(VENTA=X.PRECIO * X.CANTIDAD - X.DESCUENTO) >> select(X.PRODUCTO, X.VENTA) >> group_by('PRODUCTO') >> summarize(Promedio=mean(X.VENTA)) ``` ```python df >> summarize_each([np.mean, np.var], X.PRECIO, 'METACRITIC') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python from dfply import * import pandas as pd import datetime as dt df = pd.read_excel('Data/Muestra.xlsx') df >> mask(X.FECHA.dt.year == 2018, ((X.FECHA.dt.month).isin([1,2])) | ((X.FECHA.dt.day).isin([10,25]))) >> group_by('SUPERVISOR') >> summarize(Cuenta = X.PRODUCTO.value_counts()) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> La diferencia del pipe con respecto al pipeline en scikit-learn, es que si el resultado tiene asociado el siguiente calculo, podremos continuar para construyendo flujos de trabajo, donde apliquemos algún conjunto de algoritmos o preprocesamientos necesarios para esos algoritmos. Entonces dentro de Pandas podemos unir operaciones haciendo uso de un conjunto de transformaciones aplicadas al DataFrame dentro de paréntesis “()” y conectando por uso de “.”, pudiendo conectar la siguiente operación que sigue después de un “.”, así que es otra alternativa para escribir código en Pandas como una cadena de métodos. </p> </font> ```python df.dropna().describe().SUELDO.values.mean().round(2).tolist() ``` <font size="3"> <p style="text-align: justify;"> Por consiguiente, me muestra otra forma de impresión de un DataFrame, en una vista html, como una impresión simple, o a través de una tabla pivote. </p> </font> ```python # conda install pivottablejs from pivottablejs import pivot_ui pivot_ui(df,outfile_path='tabla.html') # conda install tabloo ``` ```{=html} <iframe width="100%" height="500" src="tabla.html" frameborder="0" allowfullscreen ></iframe> ``` ```python import tabloo # tabloo.show(df) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #9.- Visualización <font size="3"> <p style="text-align: justify;"> Vamos a aprender con algunas librerias, para generar diferentes tipos de graficos. Para continuar con el aprendizaje de Series de Tiempo, puede consultar el siguiente <a href="hhttps://www.dataquest.io/blog/tutorial-time-series-analysis-with-pandas/">Link</a>. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python import matplotlib.pyplot as plt import numpy as np x = np.random.normal(size=50000) y = x * 3 + np.random.normal(size=50000) plt.hist2d(x, y, bins=(50, 50),cmap='spring')# cmap es color map ``` ```python plt.title("Un histograma 2D")# Agrega un titulo plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.title("Un histograma 2D", loc='right', horizontalalignment='right',verticalalignment='top')#horizontalaligmen es la posición del gráfico plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.title("Un histogram 2D", fontsize=20, fontweight=0, color='purple', loc='left', style='italic' ) plt.title( "$\mathbf{write in bold}$" , loc="right") plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.title('Un histograma 2D \nSegundo Titulo', loc='left') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.title("Un histograma 2D", loc='left', fontsize=18) plt.title("Hecho in Python", loc='right', fontsize=13, color='grey', style='italic') plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.title(r'$\sum_{i=0}^\infty \beta_i$', fontsize=16) plt.hist2d(x, y, bins=(50, 50),cmap='spring') ``` ```python plt.suptitle("Un histograma 2D\n", fontsize=18, y=1.02) plt.title("Realizado por la galeria Python", color="grey", style='italic') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python height = [3, 12, 5, 18, 45] bars = ('A', 'B', 'C', 'D', 'E') y_pos = np.arange(len(bars)) plt.bar(y_pos, height, color=(0.2, 0.4, 0.6, 0.6)) ``` ```python plt.xlabel('Productos', fontweight='bold', color = 'orange', fontsize='17', horizontalalignment='center') plt.bar(y_pos, height, color=(0.2, 0.4, 0.6, 0.6)) ``` ```python plt.tick_params(axis='x', colors='blue', direction='out', length=13, width=3) plt.tick_params(axis='y', colors='blue', direction='out', length=13, width=1) plt.bar(y_pos, height, color=(0.2, 0.4, 0.6, 0.6)) ``` ```python plt.xticks(y_pos, bars, color='orange', rotation=45, fontweight='bold', fontsize='17', horizontalalignment='right') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python plt.bar(y_pos, height, color=(0.2, 0.4, 0.6, 0.6)) ``` ```python plt.xlim(0,20) ``` ```python plt.bar(y_pos, height) ``` ```python names = ("categoria 1","categoria 2","categoria 3","categoria 4","categoria 5") plt.xticks(y_pos, names, rotation=90) ``` ```python plt.subplots_adjust(top=0.7) import pandas as pd df=pd.DataFrame({'x': range(1,101), 'y': np.random.randn(100)*15+range(1,101)}) plt.plot('x','y',data=df,linestyle='none',marker='o') plt.annotate('Interesante!', xy=(25, 50), xytext=(0, 80),arrowprops=dict(facecolor='red', shrink=0.01)) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python import matplotlib.patches as patches fig1 = plt.figure() ax1 = fig1.add_subplot() ax1.plot( 'x', 'y', data=df, linestyle='none', marker='o') ax1.add_patch(patches.Rectangle((20, 25),50,50,alpha=0.1, facecolor="red", edgecolor="black", linewidth=3, linestyle='solid')) fig1 = plt.figure() ax1 = fig1.add_subplot(111) ax1.plot( 'x', 'y', data=df, linestyle='none', marker='o') ax1.add_patch(patches.Circle((40, 35),10,alpha=0.2, facecolor="green", edgecolor="black", linewidth=1, linestyle='solid')) fig1 = plt.figure() ax1 = fig1.add_subplot(111) ax1.plot( 'x', 'y', data=df, linestyle='none', marker='o') ax1.add_patch(patches.Ellipse((40, 35),10,70,45,alpha=0.2, facecolor="green", edgecolor="black", linewidth=1, linestyle='solid')) plt.plot( 'x', 'y', data=df, linestyle='none', marker='o') plt.plot([100, 10], [100, 15], color="skyblue", lw=4, linestyle='solid', label="_not in legend") plt.plot( 'x', 'y', data=df, linestyle='--', marker='o') plt.axvline(40, color='pink') plt.axhline(40, color='green') plt.plot( 'x', 'y', data=df, linestyle='none', marker='o') plt.text(60, 00, r'equation: $\sum_{i=0}^\infty x_i$', fontsize=10) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python x = np.linspace(0, np.pi, 500) y = np.sin(x ** 4 ) fig, ax = plt.subplots() ax.plot(x, y) ax.set_title('Un simple seno') fig, axs = plt.subplots(2) fig.suptitle('Con un nuevo grafico Vertical') axs[0].plot(x, y) axs[1].plot(x, -y) fig, (ax1, ax2) = plt.subplots(2) fig.suptitle('De otra forma') ax1.plot(x, y) ax2.plot(x, -y) fig, (ax1, ax2) = plt.subplots(1, 2) fig.suptitle('Horizontal') ax1.plot(x, y) ax2.plot(x, -y) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python fig, (ax1, ax2) = plt.subplots(1, 2) fig.suptitle('Horizontal') ax1.hist2d(np.random.normal(size=50000), np.random.normal(size=50000) * 3 + np.random.normal(size=50000), bins=(50, 50),cmap='Pastel1') ``` ```python ax1.set_title('Histograma en 2d') ax2.bar(np.arange(5), [3, 12, 5, 18, 45],color=(0.2, 0.4, 0.6, 0.6)) ``` ```python ax2.set_title('Diagrama de barras') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python fig, axs = plt.subplots(2, 2) axs[0, 0].plot(x, y, color = 'red') axs[0, 0].set_title('Axis [0,0]') axs[0, 1].plot(x, y, color='orange') axs[0, 1].set_title('Axis [0,1]') axs[1, 0].plot(x, -y, color='tab:green') axs[1, 0].set_title('Axis [1,0]') axs[1, 1].plot(x, -y, 'tab:pink') axs[1, 1].set_title('Axis [1,1]') for ax in axs.flat: ax.set(xlabel='x-label', ylabel='y-label') # Oculta las etiquetas x y las etiquetas de marca para los gráficos superiores y las marcas for ax in axs.flat: ax.label_outer() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2) fig.suptitle('Comrtiendo label por columnas y filas') ax1.plot(x, y) ax2.plot(x, y**2, 'tab:orange') ax3.plot(x, -y, 'tab:green') ax4.plot(x, -y**2, 'tab:red') for ax in fig.get_axes(): ax.label_outer() fig, (ax1, ax2) = plt.subplots(2, sharex=True) fig.suptitle('Alinear el eje x usando sharex y el eje y sharex') ax1.plot(x, y) ax2.plot(x + 0.5, -y) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python fig, axs = plt.subplots(3, sharex=True, sharey=True, gridspec_kw={'hspace': 0}) fig.suptitle('Compartiendo ambos axes') axs[0].plot(x, y ** 2) axs[1].plot(x, 0.3 * y, 'o') axs[2].plot(x, y, '+') for ax in axs: ax.label_outer() fig, axs = plt.subplots(2, 2, sharex='col', sharey='row',gridspec_kw={'hspace': 0, 'wspace': 0}) (ax1, ax2), (ax3, ax4) = axs fig.suptitle('Compartiendo x por columnas, y por filas') ax1.plot(x, y) ax2.plot(x, y**2, 'tab:orange') ax3.plot(x + 1, -y, 'tab:green') ax4.plot(x + 2, -y**2, 'tab:red') for ax in axs.flat: ax.label_outer() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python import matplotlib.pyplot as plt from dfply import * import feather from sklearn import linear_model Ventas = feather.read_dataframe('Data/Ventas.feather').dropna() Ventas = Ventas >> mutate(VENTA = X.PRECIO * X.CANTIDAD - X.DESCUENTO) >> select('VENTA','METACRITIC','SUELDO') labelx = pd.Series(['Metacritic','Sueldo'],index=[0,1]) fig, ax = plt.subplots(2, 1, figsize=(10, 3)) fig.subplots_adjust(wspace=0.5) for i in range(1): y = Ventas.iloc[:,0].values.reshape(-1, 1)# reshape da una nueva forma a una matriz sin cambiar sus datos x = Ventas.iloc[:,i+1].values.reshape(-1, 1) regr = linear_model.LinearRegression() regr.fit(x,y) ax[i].scatter(x, y, color='blue') ax[i].plot(x, regr.coef_[0][0]*x + regr.intercept_[0], '-r') ax[i].set_xlabel(labelx[i]) ax[i].set_ylabel('Ventas') ax[i].text(0.95, 0.15, 'Coefficients: ' + str(round(float(regr.coef_),2)),verticalalignment='bottom', horizontalalignment='right',transform=ax[i].transAxes,color='green', fontsize=5) ax[i].text(0.95, 0.1, 'Intercept: ' + str(round(float(regr.intercept_),2)),verticalalignment='bottom', horizontalalignment='right',transform=ax[i].transAxes,color='green', fontsize=5) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python # Diagrama de pastel labels = ['Ranas','Loros','Gatos','Perros'] sizes = [15, 30, 45, 10] explode = [0, 0.1, 0, 0]# levantar los pedazos de pastel fig1, ax1 = plt.subplots(); ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90); ax1.axis('equal'); plt.show() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python def func(pct, allvals): absolute = int(pct/100.*np.sum(allvals)) return "{:.1f}%\n({:d} g)".format(pct, absolute) # "{:.1f}%\n({:d} g)".format(2940, 250), 250/850, 29.4% # Para cada valor de data ejecuta la funcion, el lambda fig, ax = plt.subplots(figsize=(7, 7), subplot_kw=dict(aspect="equal")) recipe = ["250 g Harina","100 g Azucar","200 g Miel","300 g Levadura"] data = [float(x.split()[0]) for x in recipe] ingredients = [x.split()[2] for x in recipe] wedges, texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data),textprops=dict(color="w")) ax.legend(wedges, ingredients,title="Ingredients",loc="lower center",bbox_to_anchor=(1, 0.3, 0.3, 0)); plt.setp(autotexts, size=8, weight="bold") ``` ```python ax.set_title("Diagrama de Pastel") plt.show() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python # Series de Tiempo import feather Ventas = feather.read_dataframe('Data/Ventas.feather').dropna() Ventas = Ventas >> mutate(VENTA = X.PRECIO * X.CANTIDAD - X.DESCUENTO) >> select('FECHA','VENTA','METACRITIC','SUELDO') Ventas = Ventas.set_index('FECHA', drop=True) ax = Ventas['VENTA'].plot(marker='o', linestyle='-') ax.set_ylabel('Ventas ($)') ax = Ventas['VENTA'].loc['2018-01-01':'2018-02-01'].plot(marker='o', linestyle='-') ax.set_ylabel('Venras ($)') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle ```python import matplotlib.dates as mdates fig, ax = plt.subplots(figsize=(10, 3)) ax.plot( Ventas.loc['2018-01-01':'2018-03-01','VENTA'], marker='o', linestyle='-') ax.set_ylabel('Ventas ($)') ax.set_title('Jan-Feb 2018 Ventas') ax.xaxis.set_major_locator(mdates.DayLocator(bymonthday=mdates.DAILY))# mdates.WeekdayLocator(byweekday=mdates.MONDAY) ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d\n%Y')) fig, ax = plt.subplots(figsize=(10, 3)) ax.plot(Ventas.loc['2018-01-01':'2018-03-01'], marker='o', linestyle='-') ax.set_ylabel('Ventas ($)') ax.set_title('Jan-Feb 2018 Ventas') ax.xaxis.set_major_locator(mdates.AutoDateLocator(maxticks=20)) ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d\n%Y')) fig, ax = plt.subplots() for i in ['VENTA', 'METACRITIC', 'SUELDO']: ax.plot(Ventas[i], label=i) ax.xaxis.set_major_locator(mdates.YearLocator()) ax.set_ylim(0, 400) ax.legend() ax.set_ylabel('Diferentes Escalas') ax.set_title('Series De Tiempo'); ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #10.- Caso práctico, scraping Web <font size="3"> <p style="text-align: justify;"> El siguiente ejemplo, veremos la tecnica de extraer informacion de la web atraves de python. Esto puede ser muy útil para muchísimas cosas y beneficioso para casi cualquier negocio. Comunmente lo utilizan las empresas para obtener informacion de las redes sociales, para conocer que piensan sobre ella. En general, cualquier cosa que necesites consultar en la web y a la que estés dedicando tiempo para hacerlo se puede automatizar. </p> </font> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python # conda install beautifulsoup4 # conda install lxml # conda install html5lib from bs4 import BeautifulSoup import requests website_url=requests.get('https://en.wikipedia.org/wiki/List_of_postal_codes').text soup = BeautifulSoup(website_url,'lxml') table = soup.find('table',{'class':'wikitable sortable'})# Extraer los nombres de las columnas column_names = [item.get_text().rstrip() for item in table.find_all('th')] data = [] table_body = table.find('tbody')# Extraer los valores en las filas rows = table_body.find_all('tr') for row in rows: cols = row.find_all('td') cols = [ele.text.strip() for ele in cols] data.append([ele for ele in cols if ele]) df = pd.DataFrame(data, columns=column_names)# Poner los datos en un dataframe df = df.replace(to_replace='None', value=np.nan).dropna() df.head();print(df.shape);df.describe(include = 'all') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle, center <br> #11.- Limpiar y Ordenar los datos <font size="3"> <p style="text-align: justify;"> Limpiar los datos implica reconocer y eliminar datos erróneos en una tabla. Los cientificos de datos pasan gran parte de su tiempo limpiando datos (80%), depurando lo que sea util analizar. Por otor lado esta el desorden de los datos, esto implica valores faltantes, formatos incosistentes, valores atípicos. El proceso de limpiar tus datos consiste en sustituir o eliminar aquellos datos erróneos. </p> </font> <img src="https://lh3.googleusercontent.com/Bk9V3FaKINRAX6v-Bk8ffhHzx01kITix9FLGImg8oEamyNdBBOTwqG5vOAZ2JuvQavETrsqXCzDNndnzBZEnPkGrHIDQU4CwwnR-9_Cza-0yp5RMYpA90X5Q6wmkxMiZBmJmyNZVakMA_BblqvVA9UCXJwx1o9QOG8H30JL02hz3J-U--NlLRDxGanhLPipGdpHzZ8ZbH--ZBe_GaPxu2NIbbw2eh3djTtSkX3eOpUoZpudJrpBU2QBU1CqfUSvc14pIDhdR23C4zo5Zgr64T7mceYz6PCmypHBORaZs1uOMXxxDu0uoKnDrRS48X2PQ3foAKRAe0FYBWDCy3npydVXQaVmjChkjQmtjRP1lGm63_edHWnyvwHna1N26Kd009dzrEQ5vJ-oHBZIh6-NPrevIhT-h9QbdeNqs1J7a8ZyzNF9TBbxlK_YxaAEJ6-K0cDY9yMm8r3wV3PkM6T8q7AzBdom1LHZVbZ5fJGedbawjfDxmZ80vebn58MtBMZROYnfqXKJuq3zHOAdzD64Mr-x2vYqhYaFgnqKM10NN59J4wicppUc3bhu7d_kBmPKDUM_LVJDXbqxptDI7qzjpspALAmJecH74iVm9Z_C5N4B2bJ2w4qBbeCkhK1OyckP2Mo9K04j0Rv43UJQuzK26ucjP7WynLWE=w396-h277-no" alt="HTML5 Icon" style="position:absolute; top:470px; left:380px; width:200px; height:150px"> <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python string = 'Ecuador de mis Amores' string.upper() ``` ```python string.lower() ``` ```python string.capitalize() ``` ```python string.title() ``` ```python string.lower().title() ``` ```python string.swapcase() ``` ```python string.replace('r', 'm')# Reemplazar ``` ```python string.replace('r', 'm',1) ``` ```python string.replace('r', 'm',2) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python len(string) ``` ```python string.count('e') ``` ```python string.find("e") ``` ```python string[:5]# Subtraer ``` ```python string[2:5] ``` ```python string[:-3] ``` ```python string[-3:] ``` ```python string[1:] ``` ```python ''.join(reversed(string))# Revertir las palabras ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python (string + ' ')*4# Agregar espacios en blanco y repetir palabras ``` ```python string = ' ' + string + ' '# eliminar espacios en blanco string.rstrip() ``` ```python string.lstrip() ``` ```python string = string.strip() ''.join(string.split())# usando el metodo join ``` ```python string2 = string.split() string2.sort() string2 ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python string.find('mis') ``` ```python string.find('Ecuador') ``` ```python string.find('Londres') ``` ```python string.count("") ``` ```python string.count("Amores") ``` ```python string.count('Ecuador',0,15)# cuenta el numero de veces que se produce la palabra en el numero de la subcadena ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python import re re.search('Ecu',string).span() # para saber la posicion de donde esta el patron ``` ```python re.findall("^\w+", string)#+ s todo lo demas, \w carácter alfanumérico en la cadena, ^ Esta expresión coincide con el inicio de una cadena. ``` ```python re.findall("\w+", string)#+ s todo lo demas, \w carácter alfanumérico en la cadena, ^ Esta expresión coincide con el inicio de una cadena. ``` ```python re.findall("r\w+", string)#+ s todo lo demas, \w carácter alfanumérico en la cadena, ^ Esta expresión coincide con el inicio de una cadena. ``` ```python re.compile('Ecu').search(string)#Compile un patrón de expresión regular en un objeto de expresión regular, que se puede usar para hacer coincidir #Agrupar por patrones ``` ```python import re pattern = r'([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z0-9.-]+)\.([A-Z]{0,1})' regex = re.compile(pattern, flags=re.IGNORECASE) m = regex.match('gmantill@espol.edu.ecuador') m.groups() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python import pandas as pd import numpy as np df = pd.DataFrame({'Instruccion' : ['Primaria', 'Pregrado', 'Posgrado', 'Secundaria', 'Primaria'], 'Respuesta' : ['Si', 'No', 'Si', 'No', 'No sabe']},index=np.arange(0, 5, 1)) df.Respuesta = df.Respuesta.astype('category') df['Instruccion'] = df['Instruccion'].astype('category') df['Instruccion'].cat.reorder_categories(['Primaria', 'Secundaria', 'Pregrado', 'Posgrado']) ``` ```python df['Instruccion'].cat.reorder_categories(['Primaria', 'Secundaria', 'Pregrado', 'Posgrado'], inplace=True)#inplace=True para no mostrar en pantalla ``` ```python df['Instruccion'].cat.rename_categories(['pri','sec','pre','pos']) ``` ```python df['Instruccion'].cat.add_categories(['Pos_doc']) ``` ```python df['Instruccion'].cat.remove_categories(['Primaria']) ``` ```python df['Instruccion']=df['Instruccion'].cat.add_categories(['Pos_doc']) df['Instruccion']=df['Instruccion'].cat.remove_unused_categories() df['Instruccion']=df['Instruccion'].cat.set_categories(['Maternal','Primaria', 'Secundaria', 'Pregrado', 'Posgrado','Post_Doct']) df.groupby('Instruccion').size() ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python Ejemplo = pd.Series(['Daiag', 'Gabriel', np.nan, 'Fernando']) Ejemplo.isnull() ``` ```python Ejemplo[0] = None data = pd.Series([1, np.nan, 3.5, np.nan, 7]) data.dropna() ``` ```python data[data.notnull()] ``` ```python data.fillna(0) ``` ```python data.fillna(data.mean()) ``` ```python df = pd.DataFrame(np.random.randn(7, 3)) df.iloc[:4, 1] = np.nan df.iloc[:2, 2] = np.nan df.fillna({1: 0.5, 2: 0}) ``` ```python df.fillna(df.var(), inplace=True)#inplace sobrescribe los nan ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python df = pd.DataFrame(np.random.randn(6, 3)) df.iloc[2:, 1] = np.nan df.iloc[4:, 2] = np.nan df.fillna(method='ffill') ``` ```python df.fillna(method='ffill', limit=2) ``` ```python data = pd.DataFrame({'v1': ['uno', 'dos'] * 3 + ['dos'],'v2': [1, 1, 2, 3, 3, 4, 4]}) data.duplicated() ``` ```python data.drop_duplicates() ``` ```python data['v3'] = range(7) data.drop_duplicates(['v1']) ``` ```python data.drop_duplicates(['v1', 'v2'], keep='last') ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> Para muchos conjuntos de datos, es posible que desee realizar alguna transformación en función de los valores en una matriz, serie o columna en un DataFrame. El uso del map es una forma conveniente de realizar transformaciones basadas en elementos y otras operaciones relacionadas con la limpieza de datos. </p> </font> ```python data = pd.DataFrame({'comida':['tocino', 'cerdo desmenuzado', 'tocino', 'pastrami', 'corned beef', 'tocino', 'pastrami', 'jamón de miel', 'nova lox'],'onzas': [4, 3, 10, 6, 8, 8, 4, 5, 5]}) carne_animal = {'tocino': 'cerdo','cerdo desmenuzado': 'cerdo','pastrami': 'vaca','corned beef': 'vaca','jamón de miel': 'cerdo','nova lox': 'salmón'} minuscula = data['comida'].str.lower() data['animal'] = minuscula.map(carne_animal) data ``` ```python data['comida'].map(lambda x: carne_animal[x.lower()]) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> <font size="3"> <p style="text-align: justify;"> Completar los datos faltantes con el método fillna es un caso especial de reemplazo de valores de forma más general. Como ya hemos visto, el map se puede usar para recrear un subconjunto de valores en funcion de otro, pero reemplazar proporciona una forma más simple y flexible de hacerlo. </p> </font> ```python data = pd.Series([1., -999., 2., -999., -1000., 3.]) data.replace(-999, np.nan) ``` ```python data.replace([-999, -1000], np.nan)#pueden reemplazar ambos ``` ```python data.replace([-999, -1000], [np.nan, 0]) ``` ```python data.replace({-999: np.nan, -1000: 0}) ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px"> --- class: middle <br> ```python data = {'Bucki': 'Bucki@google.com', 'Steve': 'steve@gmail.com','Peggy': 'Peggy@gmail.com', 'Cráneo_Rojo': 'Craneo@hotmail.com'} pattern = r'([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z0-9.-]+)' data = pd.Series(data) data.str.contains('gmail') ``` ```python data.str.findall(pattern, flags=re.IGNORECASE) # Hay un par de formas de hacer la recuperación de elementos vectorizados. Utilice str.get o indexe en el atributo str ``` ```python data.str.get(1) ``` ```python data.str[:3] ``` ```python car = {"brand": "Ford","model": "Mustang","year": 1964} # El método devuelve el valor del elemento con la clave especificada. car.get("model") ``` ```python car.get('cost', 500000)#para imprimir tambien lo puedes usar ``` <img src="https://lh3.googleusercontent.com/YVuwmnKJZQDcfeWBPGC9WAB5k39xYPQXNysDV2dbLeqDsAcvYlNQj3uFWhRO4X63Vl_QpRSGWkaCuDcdAB6DPKrS30Rq4OncKAU0nYwQocOLrVQMldGiPmw9XT9J9DTmaqSPTKG3EjL4AvUsW_HHo9hp8FUqXjjVlRFJTQY2b9uAMoVFiycY7lX9xI9H8Qhs1i5-9TP2NgZEYp6RB-a5-74xOexc5-eIKjQek0mnpTdyt6VC3Bsn9eqFcIn0WRHL3TziTxSqbudNek5mSW81Oiz-Qfp6fPwz55jYbQQXUq9AUIPRroi5XZe3gLEyu0yNkQPusD2Il8DU4Wjd9-uzV2yFh9R3Lmo2BQqxAjde4boxwScSdxdfTvI4DsCjRW2T_H36BOmeeFyxXEL6ZxpDAru4XcBUjNn80nUR5MspzWv3Kt93Stwod0H2-HjfTJejq4HsUXQDreJEPeWguWd-eheBRx7VQBLp81m4o8vK4h_Lvvw2Dx6ko0DgJDiVWnJ_V7YWA1PXzthbawgCeOkP5kLWWbr1__lvX8tI4KK2WfAAAXCfjAjzl7CmTQcgzst98x1PWfQ_GIJ29MS3xfgWyW9aD2IFMQD2AKR7w-yyhjbp-4RujtcZEzQFt4LaC3cS9Z6mO8yKKXWWuKEBSSzSz7eIonDB8SG7nc5hvgSFVq0lSfGzFffBlVKLZBjfcM1ZSZdHOpCrhbzEblH1eYlFf5ah=s927-no?authuser=0" style="position:absolute; top:20px; left:20px; width:70px; height:70px">