Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agrega un glosario #25

Draft
wants to merge 15 commits into
base: master
Choose a base branch
from
12 changes: 6 additions & 6 deletions 01-introduccion.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ El proceso de ciencia de datos en el cual nos vamos a basar se puede ver en el s
![Mapa conceptual del proceso de ciencia de datos](img/ciencia-de-datos.png)

Primero, debes **importar** tus datos hacia la herramienta donde vas a procesarlos.
Típicamente, esto implica tomar datos que están guardados en un archivo o base de datos y cargarlos en tu software para poder trabajar con ellos.
Típicamente, esto implica tomar datos que están guardados en un archivo o `r gdef("base de datos")` y cargarlos en tu software para poder trabajar con ellos.

Una vez que has importado los datos, el siguiente paso es **ordenarlos** para que tengan un formato adecuado para su análisis.
Este formato pensado para el análisis tiene la característica que, en los conjuntos de datos ordenados, *cada columna es una variable y cada fila una observación*.
Tener datos ordenados nos provee una estructura consistente, preparada para analizarlos y podemos enfocar nuestros esfuerzos en las preguntas que queremos contestar con nuestros datos y no tener que acomodarlos cada vez que la pregunta cambie.
Tener `r gdef("datos ordenados")` nos provee una estructura consistente, preparada para analizarlos y podemos enfocar nuestros esfuerzos en las preguntas que queremos contestar con nuestros datos y no tener que acomodarlos cada vez que la pregunta cambie.

Cuando tus datos están ordenados, podemos necesitar *transformarlos*.
La transformación implica quedarte con las observaciones que sean de interés (como todos los hoteles de una ciudad o todos los datos del último año), crear nuevas variables que a partir de variables ya existentes (como calcular el porcentaje de ocupación a partir de la cantidad de plazas totales y las ocupadas) y calcular una serie de estadísticos de resumen (como recuentos y medias).
Expand All @@ -33,15 +33,15 @@ Los modelos son herramientas estadísticas o computacionales y tienen supuestos
El último paso en el proceso de la ciencia de datos es la **comunicación**, una parte crítica de cualquier proyecto de análisis de datos, porque es cuando vas a mostrar tus resultados a otras personas y necesitas que puedan comprenderlos y encontrarlos útiles para utilizarlos.

Alrededor de todas estas herramientas se encuentra la **programación** como herramienta transversal en el proyecto de ciencia de datos.
No necesitás ser una persona experta en programación para hacer ciencia de datos, pero aprender más sobre programar te ayudará a automatizar tareas recurrentes, compartir tu trabajo de forma reusable y aprovechar el trabajo de otros para resolver problemas similares con mayor facilidad y rapidez.
No necesitás ser una persona experta en `r gdef("programación")` para hacer ciencia de datos, pero aprender más sobre programar te ayudará a automatizar tareas recurrentes, compartir tu trabajo de forma reusable y aprovechar el trabajo de otras personas para resolver problemas similares con mayor facilidad y rapidez.

En este cuadernillo te mostraremos como realizar cada una de estas etapas utilizando el software R y te dejaremos links donde puedes aprender y profundizar más cada aspecto de este proceso.

## ¿Por qué R?

Excel es un software admirable.
Es genial para hacer data entry, para ver los datos crudos y para hacer gráficos rápidos.
Si venís usándolo hace tiempo, seguro que aprendiste un montón de trucos para sacarle el jugo al máximo, habrás aprendido a usar fórmulas, tablas dinámicas, e incluso macros.
Es genial para hacer ingreso de datos (_data entry_ en inglés), para ver los datos crudos y para hacer gráficos rápidos.
Si venís usándolo hace tiempo, seguro que aprendiste un montón de trucos para sacarle el jugo al máximo, habrás aprendido a usar fórmulas, tablas dinámicas, e incluso `r gdef("macros").
Pero seguro que también sufriste sus limitaciones.

En una hoja de Excel no hay un límite claro entre datos y análisis.
Expand Down Expand Up @@ -107,7 +107,7 @@ R entiende un montón de operaciones aritméticas escritas como seguramente ya t
- `-`: restar
- `*`: multiplicar
- `/`: dividir
- `^`: exponenciar
- `^` o `**`: exponenciar

Pero además conoce muchas otras operaciones.
Para decirle a R que calcule el seno de 1 hay que escribir esto:
Expand Down
8 changes: 4 additions & 4 deletions 02-proyectos.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Trabajar con proyectos de RStudio no solo hace tus análisis más ordenados y re
Al comienzo posiblemente tengas un script y uno o dos archivos con datos, pero es posible que rápidamente te encuentres con una docena de archivos con nombres parecidos pero que pertenecen a análisis totalmente distintos.
Antes de que la cosa comience a complicarse te proponemos trabajar con proyectos.

### ¿Qué ventajas tiene?
## ¿Qué ventajas tiene?

- Te permite "cuidar" los datos que usas al ordenarnos en carpetas que diferencien entre la versión original o cruda y los datos limpios o los resultados finales.
- Te permite compartir tu trabajo fácilmente con otras personas. Solo tendrías que compartir la carpeta del proyecto sabiendo que incluye todo lo necesario para que cualquiera reproduzca tu análisis.
Expand All @@ -26,7 +26,7 @@ Antes de que la cosa comience a complicarse te proponemos trabajar con proyectos
Si todo salió bien, ahora deberías tener una nueva carpeta que se llama *mi_proyecto*.
Pero si bien es una carpeta común y corriente, le llamamos proyecto porque además contiene un archivo con el mismo nombre *mi_proyecto.Rproj* (o solo *mi_proyecto* si en tu computadora no ves la extensión de los archivos).

### Abrir un proyecto
## Abrir un proyecto

La manera más simple de abrir un proyecto es abriendo la carpeta que lo contiene y haciendo doble click sobre el archivo *mi_proyecto.Rproj*.
Al hacer esto se abrirá RStudio y la sesión de R en la misma carpeta y, por defecto, cualquier archivo que quieras abrir o guardar lo hará en esa misma ubicación.
Expand All @@ -43,15 +43,15 @@ Si en algún momento trabajas con proyectos en paralelo vas a poder hacerlo sin
3. Hacé doble click en el archivo que tiene el nombre de tu proyecto (y que termina con *.Rproj*) que encontrarás en esa carpeta.
:::

### ¿Cómo se organiza?
## ¿Cómo se organiza?

No existe una "mejor" forma de organizar un proyecto pero acá van algunos principios generales que nos hacen la vida más simple::

- **Tratar los datos como sólo de lectura** Es posible que la toma de los datos que querés analizar te haya costado mucho trabajo, o te haya costado conseguirlos. Trabajar con datos de forma interactiva (por ejemplo, en Excel) tiene la ventaja de permitirte hacer algunos análisis rápidamente pero al mismo tiempo tiene la desventaja de que esos datos pueden ser modificados fácilmente. Esto significa que a veces no conozcas de la procedencia de los datos, o no recuerdes cómo los modificaste desde que los obtuviste. Por lo tanto, es una buena idea tratar los datos como "sólo de lectura" y nunca modificar los archivos originales.
- **Limpieza de datos** En muchos casos tus datos estarán "sucios", necesitarán un preprocesamiento importante para organizarlos en un formato que R (o cualquier otro lenguaje de programación) pueda analizados fácilmente. Esta tarea se denomina a veces "amasado" o "masticado de datos". Es una buena costumbre guardar el código que te permitió limpiar estos datos por si los volvieras a necesitar. También es recomendable guardar esa versión de los datos limpios, de "sólo lectura", para que puedas usarlos en tu análisis sin necesidad de repetir cada vez todo el proceso de limpieza de los datos.
- **Tratar las salidas o resultados generados como descartables** Cualquier resultado (gráficos, tablas, valores) debe poder repetirse o rehacerse a partir del código guardado. Si bien las pruebas rápidas para *ver si el código funciona* se pueden hacer en la consola, es importante guardar el código que genera los resultados y asegurarnos de que sean reproducibles. Aún mejor, si organizas esos resultados en distintas sub-carpetas, luego tendrás todo aún más ordenado.

### Ordenando aún más
## Ordenando aún más

Si tenés alguna experiencia programando con R es posible que tengas estás lineas al comienzo de alguno de tus scripts o si nunca las usaste, seguro viste que alguien más lo hacia:

Expand Down
4 changes: 2 additions & 2 deletions 90-desafíos.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ remotes::install_github("ciencia_datos/datos")
```

La tercera linea, si bien distinta a las anteriores, también instala un paquete.
La diferencia es que instala el paquete desde un repositorio de GitHub donde suelen estar los paquetes en desarrollo en vez de desde el repositorio oficial de R (CRAN).
La diferencia es que instala el paquete desde un `r gdef("repositorio")` de `r gdef("GitHub")` donde suelen estar los paquetes en desarrollo en vez de desde el repositorio oficial de R (`r gdef("CRAN")`).

4. Creá un nuevo archivo R Markdown que se llame "01-lectura.Rmd" desde File -> New File -> R Markdown.
Si bien el archivo puede tener cualquer nombre, siempre que sea informativo, te proponemos nombrarlos como número-nombre para poder ordenarlos y que te resulte más fácil encontrarlo dentro del proyecto.
Si bien el archivo puede tener cualquier nombre, siempre que sea informativo, te proponemos nombrarlos como número-nombre para poder ordenarlos y que te resulte más fácil encontrarlo dentro del proyecto.
Es posible que necesites darle permiso a RStudio para que instale nuevos paquetes asociados a R Markdown.
Te va a aparecer la plantilla por defecto; borrá todas las líneas empezando por la que dice `## R Markdown` (inclusive) y guardá el archivo.
(Para guardar tenés podés ir a File -> Save o hacer click en en el disquette 💾).
Expand Down
3 changes: 2 additions & 1 deletion 95-instalacion.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ c(make = "C:\\rtools40\\usr\\bin\\make.exe")

### Ubuntu o derivados {-}

Para tener la última versión, tenés que agregar los repositorios de CRAN. Para hacerlo, vas a tener que tener permisos de administrador.
Para tener la última versión, tenés que agregar los `r gdef("repositorios", "repositorio")` de `r gdef("CRAN")`.
Para hacerlo, vas a tener que tener permisos de administrador.
Los detalles están en [esta](https://cran.r-project.org/bin/linux/ubuntu/) página, pero el resumen es:

```bash
Expand Down
15 changes: 15 additions & 0 deletions 96-glosario.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Glosario

```{r echo=FALSE, results='asis'}
glosario <- yaml::read_yaml("glosario.yml")
nombres <- vapply(glosario, function(x) x$nombre, character(1))
glosario <- glosario[order(nombres)]

sink <- lapply(seq_along(glosario), function(i) {
cat(paste0(glosario[[i]]$nombre, " <a id=\"", names(glosario)[[i]], "\"></a>", "\n : ", glosario[[i]]$def, "\n\n"))
})

```



4 changes: 0 additions & 4 deletions DT6_ciencia_de_datos_turismo.Rproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,3 @@ RnwWeave: Sweave
LaTeX: pdfLaTeX

BuildType: Website

MarkdownWrap: Sentence

SpellingDictionary: es_ES
29 changes: 29 additions & 0 deletions glosario.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
cran:
nombre: CRAN
def: Acrónimo de Comprehensive R Archive Network, un servicio que mantiene un repositorio de paquetes "oficial" de R.

datos-ordenados:
nombre: Datos Ordenados
def: Datos tabulares que satisfacen tres condiciones que facilitan su limpieza inicial y su posterior exploración y análisis—(1) cada variable conforma una columna, (2) cada observación conforma una fila y (3) cada tipo de unidad de observación conforma una tabla.

github:
nombre: GitHub
def: Una plataforma web que permite guardar repositorios online con control de versiones y colaborar con otras personas.

repositorio:
nombre: Repositorio
def: Lugar en el que un sistema de control de versión guarda los archivos que conforman un proyecto y los metadatos que describen su historia.

base-de-datos:
nombre: Base de Datos
def: Una base de datos que organiza la información en tablas, cada una de las cuales tiene un set fijo de campos con nombre (que se muestran como columnas) y un número variable de registros (que se muestran como filas)

programacion:
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Creo que esto debería ser programación (con tilde) para que r gdef("programación") funcione. Sino hay que hacer r gdef("programación", "programacion")` (el primero es el texto que va a aparecer y el segundo es el "id" del término.

nombre: Programación
def: proceso por el cual una persona desarrolla un programa, valiéndose de una herramienta que le permita escribir el código en un lenguaje de programación y de otra que sea capaz de traducirlo a lo que se conoce como lenguaje de máquina, que puede comprender la computadora.

macro:
nombre: macro
def: serie de instrucciones que se almacenan, generalmente en el mismo software que las utiliza, para que se puedan ejecutar de manera secuencial mediante una sola llamada u orden de ejecución con el objetivo de automatizar tareas.


20 changes: 20 additions & 0 deletions index.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,25 @@ knitr::write_bib(c(
), 'packages.bib')

knitr::opts_chunk$set(out.width = '100%', fig.align = 'center')


glosario <- yaml::read_yaml("glosario.yml")

gdef <- function(texto, clave = NULL) {
if (is.null(clave)) {
clave <- gsub(" ", "-", tolower(texto))
}

def <- glosario[[clave]]$def

if (is.null(def)) {
stop("No se encontró definición para el término ", clave)
}

paste0("[", texto, "](#", clave, " \"", def, "\")")

}

```