0% encontró este documento útil (0 votos)
7 vistas25 páginas

Módulo 2. Manipulación de Datos Con Python

Cargado por

Damián Geißer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
7 vistas25 páginas

Módulo 2. Manipulación de Datos Con Python

Cargado por

Damián Geißer
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 25

IntroducciónInmersiónUnidad 1Unidad 2HabilidadesCierreGlosarioReferencias

Módulo 2. Manipulación de datos


con Python
Introducción

En este módulo abordaremos los primeros pasos de un flujo de trabajo de análisis


de datos usando Python. Te enseñaremos a importar datos de origen, su
procesamiento y los chequeos básicos que deberás realizar.

Muchas veces los datos crudos contienen errores o inconsistencias. Vamos a


aprender cómo trabajar con conjuntos de datos que necesitan transformaciones
antes de poder empezar a analizarlos y los distintos criterios que podemos adoptar
para esas transformaciones.

Video de inmersión

Unidad 1. Operaciones con tablas y campos

Tema 1: Notebooks de Jupyter. Introducción a Numpy y Pandas

En esta lectura utilizaremos el lenguaje Python aplicado en Jupyter, una herramienta


[1]
de uso gratuito basada en la web . Provee un entorno interactivo para crear
notebooks (cuadernos) en dónde podremos escribir, ejecutar código y visualizar sus
distintos outputs (salidas).

Para comenzar, deberás descargar la edición individual de Anaconda


(https://www.anaconda.com/products/individual). Ella trae instaladas las distintas
herramientas que necesitarás para llevar a cabo la práctica.

Luego, entrarás al navegador de Anaconda y selecionarás Jupyter haciendo clic


en el botón «Launch». En esta versión el código se ejecuta localmente pero también
existen otras versiones que permiten correrlo en la nube.

[1]
Se puede ejecutar desde un navegador como Chrome o Firefox. ​

Figura 1. Anaconda

Fuente: captura de pantalla de la web Anaconda. Recuperado de


https://www.anaconda.com/products/individual
Cuando ingreses a Jupyter, verás un notebook en blanco y sin título (lo podés editar
haciendo clic en él). Podrás notar que la interfaz está organizada en menús en la
parte superior y el área de trabajo se encuentra en la parte central.
Los notebooks están organizados en celdas de input (In[]) que pueden ser
ejecutadas de forma independiente presionando Ctrl+Enter o desde el menú «Cells».
Debajo de cada celda vamos a poder ver el output (salida) (Out[]) que se genera
luego de ejecutarse. Los notebooks quedan guardados en nuestro equipo como
archivos con extensión .ipynb.
Figura 2. Jupyter interfaz notebook
Fuente: elaboración propia.
Las celdas pueden contener código ejecutable o markdown. Es un texto con formato
que sirve de explicación del código e incluye fórmulas. Se considera buena práctica
incluir comentarios que aclaren el flujo del código, su lógica y variables (también se
puede hacer comenzando la línea con #) porque el código se lee más veces de lo
que se escribe y a veces es necesario volver a los comentarios para entender ciertas
cuestiones. A su vez, los nombres de las tablas y variables sean representativas y
signarán alguna lógica o convención que ayudará mucho a la legibilidad del código y
su lógica o convención.

Entre las principales ventajas de esta herramienta está la posibilidad de organizar el


flujo de trabajo de una forma más amigable a la lectura y más práctica para ejecutar
la división de celdas. A su vez, permite visualizar las salidas de cada sección y es
compatible con otros lenguajes de programación (como R o Julia).
Las principales librerías con las que vamos a trabajar en este módulo son Numpy y
Pandas.

Pandas brinda distintas herramientas para el análisis de datos y usa


principalmente la estructura de datos dataframe, tablas con filas y columnas
(como las que usamos en Excel).
Numpy está más enfocada en operaciones matemáticas y usa principalmente
datos estructurados en matrices (no necesariamente de dos dimensiones).

Seleccioná las 4 (cuatro) ventajas de Jupyter.

Permite organizar el código en celdas que pueden ejecutarse independientemente.


Sólo permite escribir código en lenguaje Python.

Permite también usar otros lenguajes como R y Julia.

Permite visualizar las salidas del código.

Permite incluir celdas con comentarios y fórmulas.

Justificación
Tema 2: Importación de datos crudos y chequeos básicos del dataset

Anteriormente trabajaste con un conjunto de datos listos para usar incorporados a


Tableau. Asimismo, lo más frecuente es que los datos no estén listos y requieran
distintas transformaciones antes de comenzar a analizarlos.

Los datos pueden provenir de fuentes distintas, tener distintos formatos y


extensiones o tener problemas de calidad como inconsistencias, errores o valores
faltantes. Un dato es una representación de algún aspecto de la realidad y el análisis
depende de la calidad de esa representación. La presencia de problemas de calidad
afecta en gran medida al análisis que podamos hacer y a la validez de las
conclusiones que extraigamos.
A la hora de analizar datos, debemos aplicar el siguiente criterio: “garbage in,
garbage out”. Significa que si lo que entra es basura, lo que sale es basura
también.
Dentro del flujo de trabajo de un proyecto de datos es necesario pasar por una etapa
de limpieza de los datos. Suele ser uno de los principales cuellos de botella en
términos de tiempo ya que, frecuentemente, esta etapa puede demandar
aproximadamente un 70% del tiempo y de los recursos del proyecto.

El flujo de trabajo en Python


Para empezar nuestro flujo vamos a importar los datos para procesarlos. Como
señalamos en el tema anterior, vamos a usar principalmente las librerías de Pandas
y Numpy dentro de Jupyter. Vamos a generar un objeto dataframe (conjunto de
datos, una tabla con filas y columnas) a partir de la importación de un archivo de
texto plano, en este caso un .csv (valores separados por coma).

Figura 3. Importamos las librerías y los inputs (archivos .csv=

Fuente: elaboración propia.


Dentro de los paréntesis podemos definir los argumentos. Algunos de los principales
son:

El nombre del archivo (entre comillas y con la extensión). Puede incluir la ruta
completa donde está ubicado.
El carácter que separa las columnas es, por defecto, la coma, pero podría ser
otro como punto y coma o una barra vertical (el argumento es opcional).
Si el archivo tiene un encabezado con el nombre de las variables o campos, la
opción header (el argumento es opcional).

Además, podemos usar previamente la función os.chdir() para fijar una ruta en la
que vamos a trabajar. Allí podrán estar ubicados los inputs y outputs.

Corremos las celdas de código presionando Ctrl+Enter y una vez que ya tenemos
los archivos cargados en memoria, podemos usarlos dentro del notebook. Uno de
los primeros pasos es verificar que se haya importado correctamente. Hay varias
maneras de chequearlo, por ejemplo, si escribimos el nombre del dataframe en una
celda y la ejecutamos, vamos a ver impresas las primeras líneas.

Figura 4. Chequeamos las primeras filas del dataframe importado


Fuente: elaboración propia.
Figura 5. Chequeamos las últimas filas del dataframe importado

Fuente: elaboración propia.


Algunas funciones que sirven para verificar lo mismo son «head» y «tail». Muestran
las primeras y últimas cinco filas de la tabla respectivamente. En este caso notamos
que en las últimas filas del archivo hay registros que corresponden a notas de
metodología y no a datos, vamos a corregir eso más adelante.

Figura 6. Verificamos la cantidad de filas y columnas del dataframe

Fuente: elaboración propia.


Otro de los pasos necesarios es chequear cuántas filas/observaciones y
columnas/variables contiene el conjunto de datos. Para esto podemos usar la
propiedad shape, cuyo output es primero la cantidad de filas y después la cantidad
de columnas.

Figura 7. Chequeamos los tipos de variables que asignó al importar el


dataframe
Fuente: elaboración propia.
También es útil tener claro el tipo de variable que se asigna a cada columna de la
tabla y compararlo con el que necesitaríamos. Esto podría afectar a las operaciones
que hagamos con la tabla, como agregaciones o combinaciones con otras tablas
usando un campo común. Por ejemplo, si a una variable numérica la importó como
texto, no podríamos hacer agregaciones sobre ella. Para saber esto usamos la
propiedad de Pandas dtypes. En este caso se importaron todas las variables como
tipo de datos object, que es la opción por defecto cuando encuentra tanto valores
numéricos como de texto. Luego vamos a cambiar esto (dejar los textos como textos
y los números como números) y lo que necesitemos para operar mejor.
Es necesario entender las variables del dataset. Debemos comprender cuáles son
las dimensiones, medidas y unidades de observación. Para poder lograrlo es útil
tener -si existiere- un diccionario de datos que contenga las definiciones de los
campos.

Seleccioná la afirmación correcta.

Dtypes sirve para mostrar las primeras filas de un dataframe.

Head sirve para importar datos de un archivo de texto delimitado por comas.

Shape sirve para mostrar la cantidad de filas y columnas que tiene un dataframe.

Read_csv sirve para mostrar qué tipo de variable se está almacenando en cada columna de un
dataframe.
Justificación
Tema 3: Filtros de columnas y filas, integración de datos (join, append),
transposición

Ahora vamos a ver algunas de las operaciones más comunes con tablas, como los
filtros de filas o columnas, la integración de distintas tablas (una debajo de otra o
agregando nuevas columnas usando campos en común) y la reestructuración de las
filas y columnas de forma que sean más fáciles de procesar (transposición).

Figura 8. Importamos el dataframe (sin las últimas 3 filas) y filtramos las


observaciones/filas que vamos a usar

Fuente: elaboración propia.


En nuestro notebook de Jupyter vamos a filtrar la tabla según los valores de algunas
variables: se conservará sólo a las filas que cumplan con condiciones de igualdad
para los campos country, subject descriptor y units.

Primero importamos de vuelta el archivo, quitándoles las últimas 3 filas (con la


opción «skipfooter»).

Figura 9. Eliminamos algunas columnas del dataframe

Fuente: elaboración propia.


Ahora vamos a conservar solo algunos de los campos originales, únicamente los que
necesitamos para este análisis. Usamos la función «drop» y listamos las columnas
que no necesitamos.
Los dataframes que usemos idealmente deberían estar en formato tidy, es decir, que
cada columna contenga una variable y cada fila una observación. A veces, para
lograr esto vamos a necesitar reestructurar la tabla. En este caso, los años están en
columnas, lo que nos va a dificultar poder manipularlos y analizarlos. Suele pasar
que las tablas que son más fáciles de leer o de manipular en Excel son más difíciles
de manipular con un lenguaje de programación, y viceversa.

Figura 10. Transponemos el dataframe para que sea más fácil de procesar

Fuente: elaboración propia.


Entonces, para transponer usamos la función «melt» de Pandas. Definimos el
dataframe a usar, la lista de variables que queremos fijar (country en este caso), el
nombre que vamos a asignar a la nueva dimensión (year) y la columna de medida
(crecimiento_pbi).

Figura 11. Renombramos la variable country por país

Fuente: elaboración propia.


Figura 12. Transposición: de formato ancho a largo (melt) y de largo a ancho
(pivot)
Fuente: [Imagen sin título sobre proceso]. (s.f.). Recuperado de
https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html
En términos generales, «melt» nos sirve para pasar de un formato ancho a un
formato largo y su opuesto es la función «pivot».

También podemos renombrar la columna country a país. Es una buena práctica que
los nombres de las columnas estén en minúscula y que las palabras estén
separadas por guión bajo y sin usar espacios en blanco. Eso hace que nuestra tabla
sea más fácil de usar.

Figura 13. Ordenamos las filas del dataframe por las variables país y año

Fuente: elaboración propia.


Después de transponer, y para que nos sea más cómodo leer, vamos a ordenar las
filas primero por país y luego por año, usando la función «sort_values ». Con la
opción «By» señalamos las variables por las que queremos que ordene.

Figura 14. Chequeamos los tipos de variables y cambiamos los que


necesitamos

Fuente: elaboración propia.


Con la tabla ya transpuesta, chequearás los tipos de variables usando dtypes: las
tres están almacenadas como texto (object) y podrás cambiar el tipo de variable con
el que se almacena cada columna usando «astype».
Figura 15. Conservamos solo las filas correspondientes a los años hasta 2020

Fuente: elaboración propia.


El dataset tiene datos hasta 2026, desde 2021 en adelante son proyecciones. Por
eso nos quedamos con las filas en las que el año es menor o igual a 2020.

Figura 16. Calculamos las principales estadísticas descriptivas de la variable


crecimiento

Fuente: elaboración propia.


Una parte importante del análisis exploratorio consiste en tener una idea general del
contenido de las variables. Para las numéricas, vamos a buscar entender su
distribución, utilizarás el método describe que computa las principales estadísticas
descriptivas. Por ejemplo: percentiles, media, desvío estándar y cantidad de
observaciones. Mientras que, para las variables de texto, resulta útil entender
cuántos y cuáles son los valores únicos (vamos a volver sobre este tema en la
Unidad 2).

Figura 17. Integramos los dataframes, usando append y merge

Fuente: elaboración propia.


Ahora necesitamos integrar los tres conjuntos de datos: primero vamos a concatenar
(método append en Python) los cambios de Argentina y Brasil. Luego, usaremos la
función «merge» para la que tenemos que indicar las dos tablas a combinar, los
campos comunes por los que vamos a cruzarlas (en las opciones «left_on» y
«right_on») y el tipo de merge, en este caso outer. Esto significará que va a
conservar todos los registros que estén en cualquiera de las dos tablas. Vemos que
no pudo combinar correctamente los de Brasil por una inconsistencia (“Brasil” vs
“Brazil”), vamos a corregir eso más adelante.

Figura 18. Tipos de merge o join (usados en la opción how)

Fuente: [Imagen sin título sobre conjunto de datos]. (s.f.). Recuperado de


https://www.datasciencemadesimple.com/join-merge-data-frames-pandas-python/

La función «melt» sirve para pasar de un formato


ancho a un formato largo (y viceversa).

Verdadero.

Falso.

Justificación
Tema 4. Agregaciones

Cuando analizamos datos, generalmente no lo hacemos a nivel de cada observación


o registro que tienen las tablas, sino que usamos medidas que resuman esa
información. Es decir, que agreguen o colapsen la información por encima del nivel
de los registros individuales. Para ello, utilizamos funciones de agregación (como
la suma o el promedio).

Figura 19. Agregación: calculamos la media de la tasa de crecimiento por país

Fuente: elaboración propia.


Ahora vamos a construir una tabla resumen utilizando Pandas. Definiremos las
agregaciones a computar y las dimensiones por las cuales sumarizar. Vamos a
generar un nuevo dataframe agregado (macro_ag): necesitaremos señalar cuál es el
input (macro_tr) y qué variables agrupar (en este caso por país, country u otro tipo
de variables).

También usamos la opción «as_index = False» para que los campos por los que
agregamos sean variables y no índices de la tabla. Dentro de agg vamos a listar las
medidas que queremos (crecimiento_pbi) y las métricas (en este caso mean, la
media). Se podrían agregar más operaciones para una misma variable
escribiéndolas entre corchetes y separadas por comas (ej. [“mean”, “std”]).

Figura 20. Agregación usando Numpy

Fuente: elaboración propia.


Otra forma de usar agregaciones es generar totales (por ejemplo, suma o promedio)
y guardarlos como valores usando Numpy. En este caso, vamos a usar la función
«np.max()» y vamos a calcular el máximo de las tasas de crecimiento anual (esto
incluye a los tres países).

Casi siempre analizaremos los conjuntos de datos


de forma manual, fila por fila.
Verdadero.

Falso.

Justificación

Unidad 2: Chequeos de calidad y limpieza

Tema 1: Chequeos básicos de calidad

En la unidad anterior hicimos un análisis general del contenido de los datasets.


Asimismo, resulta más importante que entendamos en profundidad qué tan bien las
variables representan los aspectos que necesitamos. Si bien cada proyecto y cada
conjunto de datos es único, en esta unidad vamos a hacer una lista de los posibles
temas que podemos encontrar de forma más frecuente.

En la práctica, puede pasar que se hayan generado datos con un criterio que no es
el que nos sirve para la pregunta que debemos responder. Para este proceso es muy
importante el conocimiento de dominio, debemos saber cómo y con qué objetos se
generaron los datos.

El conocimiento de dominio es el especializado en el campo o la industria sobre la


que estamos analizando los datos: por ejemplo, los científicos de datos que trabajen
en el área de salud van a necesitar una formación en el área, además de la
experiencia en programación y estadística.

Saber cómo se generaron los datos nos va a ayudar a entender cualquier potencial
problema de calidad. Algunas de las fuentes con las que podremos trabajar son: con
datos provenientes de procesos de ingreso manual (formularios), de sistemas
transaccionales o de sensores.
El conocimiento especializado del campo sobre el cual analizamos
los datos se conoce como conocimiento de inclusión.

Verdadero.

Falso.

Justificación
Tema 2: Valores faltantes (missings) e inconsistencias

Un desafío frecuente en el análisis de datos es la presencia de valores faltantes o


perdidos (missings). Por ejemplo, puede darse el caso de que no todos los registros
o filas tengan datos, sino que existan “celdas vacías”.

El hecho de que falte un dato no resulta necesariamente algo malo. Asimismo,


primero debemos entender si esos missings tienen sentido o no (es decir, si es
correcto que se admitan valores nulos). Dicha cuestión dependerá de la variable ya
que no es lo mismo tener un faltante en la variable de ingreso que en la de edad.
Otro ejemplo que podemos pensar es con los datos de una encuesta, sabemos que
algunos datos pueden estar vacíos porque no necesariamente corresponden con la
realidad de los encuestados. Lo correcto es afirmar que los missings podrían
deberse a errores de ingreso en los datos.

Por otro lado, también es necesario tener en cuenta qué porcentaje de las
observaciones totales tienen valores faltantes para definir si es razonable
descartarlas o buscar corregirlo de alguna forma.

Figura 21. Contamos la cantidad de missings

Fuente: elaboración propia.


Muchas veces los missings se suelen codificar con números que no podrían
pertenecer a un valor válido de la variable. Por ejemplo, para un campo de edad un
valor especial como -99 podría codificar la opción “No sabe/No contesta”. También
con códigos de texto como “N/A” (not available) y “S/D” (sin datos).

Es importante también saber si los valores faltantes son aleatorios o siguen algún
patrón (si están correlacionados con alguna otra variable).

Figura 22. Eliminamos las filas en las que aparece por lo menos un missing

Fuente: elaboración propia.


Figura 23.Eliminamos las filas en las que aparece algún missing en la columna
tipo_de_cambio

Fuente: elaboración propia.


En Pandas podemos utilizar la función «dropna()» para eliminar los faltantes. En la
opción «how» podemos definir «all» si preferimos que borre las filas en las que todas
las columnas están vacías o «any» para descartar los registros en los que aparezca,
por lo menos, una columna vacía. También podríamos usar la opción «subset» para
elegir una o más columnas en particular.

​Inconsistencias

También es importante encontrar inconsistencias en los valores de las distintas


variables: en el caso de las numéricas, podemos analizar si hay valores que no se
corresponden con los posibles o lógicos para esa variable o si hay combinaciones de
valores que no podrían observarse en la realidad.

Por ejemplo, en un campo de unidades vendidas podríamos encontrar valores


negativos, lo que podría ser una inconsistencia, pero también podría representar
devoluciones que compensan otros valores positivos. Si estuviéramos trabajando
con datos de propiedades y encontráramos un caso en el que una vivienda tiene uno
o más dormitorios, pero cero ambientes en total, esos casos podrían ser
inconsistencias o errores. Para estos casos es muy importante conocer en
profundidad las variables que estamos usando, para saber qué valores pueden tener
sentido y qué valores no.

Para las variables de texto necesitamos entender cuáles son sus valores únicos y
definir si existen duplicados. La presencia de estos puede hacer que tomemos como
entidades distintas (en este caso entidades geográficas) a aquellas que son las
mismas, pero están escritas de distinta forma.

Tabla 1. Ejemplos de inconsistencias en variables de texto

Errores o
diferencias de “BuenosAires” “Buenos Aires”
tipeo

Sinónimos “CABA” “Capital Federal”


Espacios en
blanco “Buenos Aires ” “Buenos Aires”
adicionales

Abreviaturas “Bs. As.” “Buenos Aires”

Errores de
codificación “C¢rdoba” “Córdoba”
(encoding)

Mayúsculas/m
“CAPITAL FEDERAL” “Capital Federal”
inúsculas
Fuente: elaboración propia.
Si son pocos casos pueden corregirse manualmente. De lo contrario, es necesario
aplicar otras reglas como las de similitud de cadenas de texto. Ellas pueden
identificar el grado de cercanía entre palabras o frases muy parecidas (por ejemplo:
CABA y C.A.B.A). En ambos escenarios, es necesario definir el costo-beneficio de
hacer estas correcciones.

Figura 24. Analizamos y corregimos las inconsistencias en la variable país

Fuente: elaboración propia.


Para analizar los valores únicos de la variable país usamos la función «unique()»
que nos devuelve una lista con los valores una vez removidos los duplicados. Como
señalamos, podemos ver que Brasil está duplicado (Brasil y Brazil). Vamos a
corregirlo usando la función «np.where» que es similar a la función «si» de Excel.
Definiremos la condición, qué valor toma, si cumple con la condición planteada y que
valor toma si no cumple con lo esperado.

En un conjunto de datos, todos los valores faltantes


son debido a errores y es necesario eliminarlos.

Verdadero.

Falso.
Justificación
Tema 3: Valores atípicos/extremos (outliers)

Otro tipo de valores que es necesario identificar son los atípicos o extremos
(outliers). Estos son valores inusuales que pueden darse por un comportamiento
muy distinto de algunas de las unidades de análisis o por error en los datos. Para
poder saber qué constituye un outlier es necesario comprender la variable y cuándo
sus valores tienen sentido. Por ejemplo, en variables como edad o altura es más fácil
identificar outliers por errores (el rango de valores lógicos es limitado), mientras que,
en variables como el ingreso, algunos valores pueden ser atípicos pero factibles.

La presencia de estos casos puede generar distorsiones en el análisis y en sus


conclusiones. Una vez identificadas estas observaciones atípicas es necesario
definir qué acción tomar: se pueden excluir del análisis, se pueden reemplazar estos
valores por otros basados en alguna regla o se puede utilizar otras técnicas de
análisis.

En nuestro caso, vamos a analizar outliers respecto de cada variable por separado,
es decir, outliers univariados. Esto representa valores atípicos dentro de un campo
sin considerar el comportamiento del resto. Otra posibilidad es identificar estos
valores de forma conjunta entre distintas variables.
Figura 25. Outliers
Fuente: Kozak, M.; Krzanowski, W.; Tartanus, M. (2012). Use of the correlation
coefficient in agricultural sciences: Problems, pitfalls and how to deal with them.
Anais da Academia Brasileira de Ciências Recuperado de
.https://www.researchgate.net/figure/A-bivariate-outlier-a-value-that-is-not-atypical-
for-the-distributions-of-variables-x_fig2_233838897
Descripción de la figura 25: en este caso, el punto de arriba a la izquierda no es un
outlier en términos de X o de Y por separado. Sí lo es en términos de ambas de
forma conjunta.

Para identificar outliers univariados existen distintas opciones. Una muy frecuente es
calcular la variable estandarizada, es decir, la variable que resulta de restar la
media a la original y dividirla por el desvío estándar. Una vez computada, se puede
definir un umbral a partir del cual los valores son atípicos. Por ejemplo, las
observaciones que se ubican a más de 3 desvíos estándar de la media (en ambos
sentidos). Otra opción es basarse en los percentiles: por ejemplo, tomar el 1% o el
5% de los registros con valores más altos o más bajos. O bien, puede definirse un
umbral fijo a partir del cual los valores son outliers (se podría usar para los ingresos,
por ejemplo).

Muchas veces, los outliers pueden observarse por casos como episodios de crisis
económicas o políticas (por ejemplo, el año 2001 en Argentina), desastres naturales
(sequías, sismos y huracanes) o eventos muy improbables (por ejemplo, la
pandemia del COVID-19).
Figura 26, 27 y 28. Identificamos outliers de formas distintas

Fuente: elaboración propia.


En el notebook vamos a usar las primeras dos opciones. Para la tabla de tipo de
cambio de Brasil vamos a calcular la variable estandarizada. Vemos que tenemos
una observación atípica en el año 1994 (está a más de 5 desvíos estándar de la
media). Este valor corresponde a un período previo a la introducción del real (la
moneda actual). Por estas razones es mejor excluir este registro de la tabla. Otra
opción que podemos usar es calcular un percentil (en este caso el 99). En el ejemplo
filtramos los valores por encima de P99 y los mostramos, podríamos eliminarlos de
la misma forma que en el punto anterior.

La presencia de observaciones atípicas o extremas


puede generar ________ en el análisis y en sus
conclusiones por la influencia que pueden tener.
Distorsiones.

Errores.

Mejoras.

Justificación
Tema 4: Corrección e imputación

Como señalamos, una vez que identificamos los valores atípicos y faltantes,
debemos definir cómo vamos a tratarlos para que no afecten las conclusiones de
nuestro análisis. Si bien una de las opciones es eliminar esos registros de nuestro
conjunto de datos, existen otras alternativas.

Podemos reemplazar el valor de los registros faltantes por otros basados en una
regla: esto se conoce como imputación. Frecuentemente, esta puede ser una
estadística descriptiva del resto de los valores válidos de ese campo. Por ejemplo,
los valores faltantes: si tuviéramos datos de empresas y en algunas de ellas faltaran
los datos de facturación, podríamos imputarles el promedio de la facturación de las
empresas para las que sí tienen ese dato. Otra opción podría ser computar esa
descriptiva por distintos grupos. Podríamos imputar a los missings la facturación
promedio de una empresa en una industria en particular.

Una posibilidad distinta es explorar si la variable que estamos analizando tiene


alguna relación estadística con otra entre los casos completos (sin missings), para
ver si se podrán inferir los valores faltantes. Para esto se podría usar un análisis de
regresión (cuestión que desarrollaremos más adelante).

Para los valores atípicos, una opción es sustituirlos por un valor fijo que corresponda
a un percentil: por ejemplo, a todas las observaciones por encima del percentil 99 de
una variable, reemplazarlas por el valor del percentil 99. Si bien esto elimina el
outlier para esa variable, podría generar un caso que sea atípico en su combinación
con otras variables.

También podríamos mantener esos registros en la base y usar en el análisis técnicas


que sean robustas, es decir, que no estén tan afectadas por esos valores extremos.
Por ejemplo, usar la mediana en vez de la media para estadísticas descriptivas.

Si quisiéramos filtrar valores extremos en una


variable, ¿cuáles de las siguientes opciones son
correctas? Seleccione las 2 (dos) opciones
correctas.

Tomar un valor fijo (máximo/mínimo) definido con conocimiento de dominio.

Tomar un valor aleatorio.

Tomar el valor de un percentil.

Video de habilidades

Preguntas de habilidades. Módulo 2

Para aplicar este conocimiento vamos a hacer un ejercicio práctico:


Vamos a tomar el dataset “actividad_modulo2.csv”. Lo importaremos en un
notebook de Jupyter y vamos a generar un reporte de perfilamiento. Este
conjunto de datos contiene distintas variables macroeconómicas para
Argentina.
Construí un reporte interactivo de perfilamiento de datos usando Pandas
Profiling y analizá en detalle cada una de las variables numéricas y de texto.


¿Qué problemas de calidad pueden tener? ¿Podrían afectar el análisis en una
etapa posterior? ¿Qué tratamientos podrían requerir? ¿Cuáles serían las
ventajas y desventajas?
Si querés, podés pausar el video y luego volver aquí para ver la resolución.
☰ Resolución
Este conjunto de datos, como cualquier otro, podría tener distintos problemas de
calidad. Los más generales pueden ser inconsistencias, errores, valores faltantes o
valores atípicos.

Como vimos anteriormente, estos problemas de calidad pueden afectar a la validez


del análisis y las conclusiones que extraigamos de él.

También vimos que hay distintos tratamientos que podemos darle a estos valores:
por ejemplo, excluirlos del análisis o reemplazarlos por otros valores. Obviamente
tenemos que tener conocimiento y criterio suficiente para saber en qué casos tiene
sentido cada uno de ellos. Cada una de estas soluciones tiene costos y beneficios:
por ejemplo, eliminar registros puede evitar que distorsionen el análisis, pero
también podría causar que perdamos información relevante en otras variables.

Cierre

En este módulo aprendimos sobre una etapa clave en todos los proyectos de datos:
el preprocesamiento. Estudiamos la forma de manipularlos para llevarlos del formato
original de los datos crudos a un formato que nos facilite su análisis. Para esto,
trabajamos en el entorno de Jupyter y usamos las librerías de Python Numpy y
Pandas.

Estas herramientas nos van a servir para las próximas etapas del flujo de trabajo: la
visualización y el análisis exploratorio de los datos.

Glosario

Glosario Interactivo

Buscar...
Accionable
A
Elemento que permitirá a una organización poder tomar decisiones informadas para
Accionable
alcanzar sus objetivos.
Análisis exploratorio de los datos

Atributos preatentivos

C
Calidad de datos

Campos calculados

Chartjunk

Ciclo analítico

Color

Condensar información

Conocimiento de dominio

ANTERIOR SIGUIENTE

Referencias

Anaconda (2021). Página web oficial. Recuperado de https://www.anaconda.com/

Kozak, M.; Krzanowski, W.; Tartanus, M. (2012). Use of the correlation coefficient
in agricultural sciences: Problems, pitfalls and how to deal with them. Anais da
Academia Brasileira de Ciências Recuperado de
.https://www.researchgate.net/figure/A-bivariate-outlier-a-value-that-is-not-atypical-
for-the-distributions-of-variables-x_fig2_233838897

[Imagen sin título sobre conjunto de datos]. (s.f.). Recuperado de


https://www.datasciencemadesimple.com/join-merge-data-frames-pandas-python/

[Imagen sin título sobre proceso]. (s.f.). Recuperado de


https://pandas.pydata.org/pandas-docs/stable/user_guide/reshaping.html

También podría gustarte