class: center, middle, inverse, title-slide # Mi aporte en un mundo abierto
## Taller Manos a la Data
###
Arturo Chian
@besteamperu
### Un presentación BEST
http://besteamperu.org/
--- class: inverse middle center ## Por favor silenciar los micrófonos .animated.bounce[ <img src="img/micro2.png" height=280px> ] --- class: inverse middle center ## ¿Cómo hacerlo? .animated.bounce[ <img src="img/micro.png" height=280px> ] --- ## Agenda del día de hoy (0-10) * ¿Qué es el opensource? * La comunidad R * Indecopi (BD) * Introducción a Github * Tint. * Rpubs * El proyecto final y tarea * La despedida! --- class: inverse middle center ## ¿Qué es el opensource? .animated.bounce[ <img src="img/Opensource.png" height=480px> ] --- ## El concepto opensource > Open source products include permission to use the source code, design documents, or content of the product. It most commonly refers to the open-source model, in which open-source software or other products are released under an open-source license as part of the open-source-software movement. Use of the term originated with software, but has expanded beyond the software sector to cover other open content and forms of open collaboration. > **Wikipedia** --- ## El concepto opensource (1 y 2) * ***Libre redistribución*** La licencia no debe restringir a nadie la venta o liberación del software como una distribución agregada del software que contenga programas provenientes de diferentes fuentes. La licencia no debe requerir ningún tipo de royalty o tarifa para dicha venta. * ***Código fuente*** El programa debe incluir el código fuente y debe permitir la distribución tanto en forma de código o de programa compilado. --- ## El concepto opensource (3 y 4) * ***Trabajos derivados*** La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que sean distribuidos bajo los mismos términos de la licencia del programa original. * ***Integridad del autor del código fuente*** La licencia puede restringir la distribución del código fuente únicamente en su formato modificado si la licencia permite la distribución de "archivos parche" con el código con el propósito de modificar el programa en tiempo de compilación. La licencia debe permitir explícitamente la distribución de software compilado a partir de código fuente modificado. La licencia puede exigir que los trabajos derivados lleven un nombre diferente o un número de versión respecto del software original. --- ## El concepto opensource (5 y 6) * ***No discriminación contra personas o grupos*** La licencia no puede discriminar en contra de una persona o grupo de personas. * ***No discriminación contra áreas de trabajo*** La licencia no debe restringir a nadie el uso de un programa en un área de trabajo específica. Por ejemplo, no puede restringir que el programa sea utilizado para un negocio o en investigación genética. --- ## El concepto opensource (7 y 8) * ***Distribución de la licencia*** Los derechos unidos al programa deben aplicarse a todos aquellos a los que el programa es redistribuido sin necesidad de iniciar una licencia adicional para esas partes. * ***La licencia no debe ser específica para un producto*** Los derechos unidos al programa no deben depende de que el programa sea parte de una distribución de software en particular. Si el programa se separa de esa distribución y es utilizado o distribuido fuera de los términos de la licencia del programa, todas las partes a las cuales el programa es redistribuido deben tener los mismos derechos que aquellos que se garantizan en conjunto con la distribución de software original. --- ## El concepto opensource (9 y 10) * ***La licencia no debe restringir otros programas*** La licencia no debe poner restricciones en otros programas que son distribuidos junto con el software licenciado. Por ejemplo, la licencia no puede insistir en que todos los demás programas distribuidos por el mismo medio deben ser software de código abierto. * ***La licencia debe ser neutral a la tecnología*** Ninguna provisión de la licencia puede basarse en una tecnología individual o estilo de interfaz. --- class: inverse middle center ## La comunidad R .animated.bounce[ <img src="img/useR.png" height=480px> ] --- ## La comunidad R * UseR!: Evita software de paga (SPSS, Stata, Matlab) y usar R así como otros softwares abiertos (Python y Julia). * Comparte y mejora el código existente en Github, Gitlab, Bitbucket, etc. * Enfoque fuerte en ciencias. --- class: inverse middle center ## 1 Indecopi .animated.bounce[ <img src="img/indecopi.jpg" height=280px> ] --- ## 1 Indecopi: Barreras burocráticas * Criterio de elección: BD diferente a las anteriores, mayor capacidad de aprender. * Datos de Indecopi. * Falta una pequeña limpieza de datos y análisis exploratorio para darse cuenta. * Descarga la data [aquí](https://github.com/arturochian/MDv01sesion3_parte-practica) --- class: inverse middle center ## Github .animated.bounce[ <img src="img/octocat.jpeg" height=280px> ] --- ## Git y Github Es crítico para proyectos de mayor envergadura y para aprovechar manos a la data! .center[ <img src="img/doggo_version_control.jpg" height=450px> ] --- ## Git y Github Así evitamos los clásicos, final, final final, final final esta es, final final esta es 2, etc. .center[ <img src="img/final_final.jpg" height=350px> ] --- ## Git y Github * Git es un sistema de control de versiones. * Github es un servicio que usa Git. Hay otros como Gitlab por ejemplo. .center[ <img src="img/git2.png" height=350px> ] --- ## Git y Github .center[ <img src="img/git1.jpg" height=350px> ] --- ## Hora de trabajar 1. Instala [Github for Windows](Github for Windows). 2. Logéate con tu cuenta de Github. 3. Crea tu primer repositorio desde la web de Github (formato público) 4. Clónalo en tu PC. (Tenerlo en PC) 5. Añade primero el excel de BD de Indecopi. Pon un commit: "Añadiendo data de Manos" 6. Añade el script trabajo. Pon un commit: "Añadiendo script de la clase 1" 7. Modifica algo que malogre el script. Pon un commit: "Malogrando el script de la clase 1" 8. Revierte el commit. --- ## Conceptos introductorios * ***Repositorio (repo):*** Es tu proyecto (guardado como una "carpeta"). * ***Commmit:*** El nombre de tu avance (cambios). Se recomienda que ponga detalles de qué trata, sobretodo para proyectos grandes. ***Este es lo más básico.*** * ***Branch:*** Es un cojunto de cambios en el código (commits), Un repo puede tener varios branch. * ***Fork:*** Es copiar un repo para experimentar cambios de forma libre sin afectar el proyecto original. * ***Pull request:*** Es la solicitud de un miembro (usualmente externo) del repo de añadir un cambio de mejora en el repo. Los dueños del repo, son los únicos que pueden --- ## Hora de socializar * Github sirve como suerte de red social para tus proyectos. En DS, sin Github u otro de tu preferencia como gitlab u otro, no existes. .center[ <img src="img/octogatos.png" height=350px> ] --- ## Hora de inspirarse * Github sirve como fuente de inspiración para diversos programadores. Puedes ver diversos proyectos y cómo van avanzando .center[ <img src="img/abner1.jpg" height=350px> ] --- ## Hora de inspirarse * Github sirve como fuente de inspiración para diversos programadores. Puedes ver diversos proyectos y cómo van avanzando .center[ <img src="img/abner2.jpg" height=350px> ] --- ## Hora de inspirarse * Github sirve como fuente de inspiración para diversos programadores. Puedes ver diversos proyectos y cómo van avanzando .center[ <img src="img/manos-github.jpg" height=350px> ] --- class: inverse middle center ## Formatos en Rmarkdown - Caso Tint .animated.bounce[ <img src="img/tint.png" height=350px> ] --- ## Formatos en Rmarkdown - Caso Tint * R es opensource, por lo tanto muchas de las cosas que necesitas, probablemente alguien más lo necesitó, y lo solucionó a través de un paquete. * Mucho de esos problemas viene por el lado de reportería. * Usa `install.package("tint")`. Luego crea un nuevo Rmd --- ## Tarea * Hacer modificaciones en el Rmd con Tint de Indecopi. Trata de meter todo lo aprendido. (25%) * Manda tu enlace de rpub + github repo. Recuerda guardar los commits. (25%) * Terminar el proyecto final. (50%) --- ## Proyecto final (Ahora te toca a ti!) * Elige una base de datos pública. * Crea tu propio repo. * Crea un R script de limpieza (hasta donde llegues), * Crea un Rmd con un breve análisis (hasta donde llegues), * Crea un readme con un diccionario de la data. --- ## Comentarios finales * Aprende haciendo con la data de tu interés. * Si aún sientes que necesitas aprender con una guía-docente (BEST estará brindando algunos cursos). * Fíjate en general que tus docentes tengan repos en el mundo de DS. * Sigue participando en Manos a la Data señalando tus bases de datos favoritas así como otro proyectos opensource de BEST. * Sigue la lógica del nivel según el estándar global de lenguajes. --- ## Acerca del certificado * Deben tener al menos una nota de 12 para aprobado y 17 para sobresaliente. * El costo del certificado es de 25 soles, sin embargo, aquellos que por cuestiones económicas necesiten facilidades, podrán contactarse con el correo contactanos@besteamperu.org y solicitar tal facilidad. Exclusivo para alumnos sobresalientes. * Tienen hasta el día domingo 09 de agosto para terminar las tareas y sobre ello será enviará certificado. --- ## Próximos cursos * ***Fundamentos de Data Science con R:*** Curso introductorio para dominar lo básico en todo. Curso A.1 y preparación para el A.2. * ***Desarrollo de productos de Data Science con R:*** Curso intermedio para dominar Github, Rmd, shiny, y desarrollo de paquetes. Curso A.2 y B.1 * ***Taller práctico de Limpieza de data:*** Taller enfocado para practicar limpieza de data de inicio a fin. A.1 y A.2 * ***Taller práctico de ggplot2:*** Taller enfocado para mejorar ggplot2. A.1 y A.2 * ***Statistical & Machine Learning con R y Python:*** R es muy bueno para todo el cuerpo estadístico. Python cuenta con algoritmos de ML avanzados. Recuerda que puedes combinar lo mejor de los 2 en RStudio. A.1 y A.2 --- ## Referencia con idiomas y programación * ***A.1: Analista de datos,*** Conocimientos básicos de DS. Manos a la Data sería un A.1. El uso de Github es vital para pasar al A.2. * ***A.2: Científico de Datos,*** con conocimientos generales y con fluidez en limpieza de datos. Es capaz de hacer paquetes básicos de R. * ***B.1: Científico de Datos,*** con conocimientos sólidos y fluidez. Es muy competente pero tiene problemas de eficiencia. Es capaz de crear paquetes decentes de R. * ***B.2: Científico de Datos,*** muy competente y eficiente. Es difícil encontrar cursos a este nivel, pero sí hay harto material usualmente libros y papers. Crea regularmente paquetes. --- ## Referencia con idiomas y programación * ***C.1: Científico de Datos,*** revolucionario a nivel local. Hacking skill. Sólo con práctica. Mínimo debe tener varios pares propios de paquetes de R. * ***C.2: Científico de Datos,*** revolucionario a nivel global la comunidad de R. Filosofía. Vives en Github y lo revolucionas día a día. Hadley (creador del tidyverse, y varias características de R Studio), Yihui Xie creador del Rmarkdown (el cual posteriormente lo copiaría Python). Crea paquetes revolucionarios de R. --- ## Referencia con idiomas y programación .center[ <img src="img/english.jpg" height=550px> ]