0% encontró este documento útil (0 votos)
18 vistas23 páginas

Manipulación de Datos en Python: Guía Práctica

El módulo 2 se centra en la manipulación de datos utilizando Python, específicamente a través de Jupyter Notebooks y las bibliotecas Numpy y Pandas. Se abordan temas como la importación de datos, limpieza y transformación de conjuntos de datos, así como operaciones básicas como filtros, integración y transposición de datos. El flujo de trabajo enfatiza la importancia de la calidad de los datos y proporciona ejemplos prácticos de cómo preparar datos para análisis.
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)
18 vistas23 páginas

Manipulación de Datos en Python: Guía Práctica

El módulo 2 se centra en la manipulación de datos utilizando Python, específicamente a través de Jupyter Notebooks y las bibliotecas Numpy y Pandas. Se abordan temas como la importación de datos, limpieza y transformación de conjuntos de datos, así como operaciones básicas como filtros, integración y transposición de datos. El flujo de trabajo enfatiza la importancia de la calidad de los datos y proporciona ejemplos prácticos de cómo preparar datos para análisis.
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

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

[1]
En esta lectura utilizaremos el lenguaje Python aplicado en Jupyter, una herramienta 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 a trabajar con análisis de datos, es necesario instalar algunas herramientas clave. Existen herramientas que se
pueden descargar en la PC como Anaconda [Link] una herramienta que facilita la
instalación y gestión de dependencias, asegurando un entorno estable para trabajar con grandes volúmenes de datos y modelos
estadísticos sin conflictos entre bibliotecas.

También, en lugar de utilizar Anaconda, podemos instalar Python y Jupyter de manera individual para mayor flexibilidad.
Pasos de instalación:

1. Descarga la versión más reciente de Python desde la página oficial ([Link] y sigue las
instrucciones de instalación según tu sistema operativo.
2. Una vez instalado Python, abre la terminal o el cmd y ejecuta: pip install jupyter pandas numpy matplotlib seaborn
Esto instalará Jupyter Notebook junto con las bibliotecas necesarias para análisis y visualización de datos.
3. Para iniciar Jupyter Notebook, usa el siguiente comando en la terminal: jupyter notebook

Alternativamente, puedes ejecutar Python en la nube, sin necesidad de instalación local para facilitar la colaboración y el acceso a
los datos. A continuación, te mostramos dos opciones:

1. Google Drive con Jupyter Notebook


Instala la biblioteca necesaria: pip install gdown
Sube tu archivo de datos a Google Drive.
Obtén el ID del archivo de Google Drive y descárgalo usando:
import gdown
file_id = "TU_ID_DE_ARCHIVO"
url = f"[Link]
[Link](url, "[Link]", quiet=False)
2. AWS con Jupyter Notebook
Instala la biblioteca boto3 para interactuar con AWS: pip install boto3
Configura tus credenciales de AWS.
Descarga un archivo desde un bucket S3:
import boto3
s3 = [Link]('s3')
s3.download_file('nombre-del-bucket', 'ruta/[Link]', '[Link]')

Con estas opciones, puedes trabajar con datos almacenados en la nube sin necesidad de mantener archivos locales.

Trabajar con Jupyter

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


Ampliar imagen

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. Sin embargo, 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.

Veamos un ejemplo completo de transformación de datos.

Supongamos que trabajas en una consultora de datos y un cliente te proporciona un archivo CSV con información sobre ventas
diarias en su tienda. Sin embargo, al inspeccionar los datos, notas que hay valores faltantes, tipos de datos incorrectos y registros
duplicados. Tu tarea es limpiar estos datos antes de analizarlos.

Paso 1: Importación de datos


Primero, cargamos el archivo CSV utilizando pandas y verificamos las primeras filas para asegurarnos de que la importación se
realizó correctamente.

```python
import pandas as pd

# Cargar el archivo CSV


df = pd.read_csv("[Link]", encoding="latin-1")

# Ver las primeras filas


print([Link]())
```

Paso 2: Inspección de datos


Ahora, revisamos si hay valores faltantes y registros duplicados para entender qué tipo de limpieza será necesaria.

```python
# Verificar valores faltantes
print([Link]().sum())

# Eliminar registros duplicados


df = df.drop_duplicates()
```

Paso 3: Corrección de tipos de datos


Los datos deben estar en el formato correcto para su análisis. Convertimos fechas a tipo datetime y aseguramos que los precios
sean numéricos.

```python
# Convertir la columna 'fecha' a formato datetime
df['fecha'] = pd.to_datetime(df['fecha'])

# Convertir la columna 'precio' a tipo float


df['precio'] = df['precio'].astype(float)
```

Paso 4: Manejo de valores nulos


Si hay valores faltantes en la columna 'cantidad', los rellenamos con la media de la columna para evitar sesgos en el análisis.

```python
# Rellenar valores nulos con la media
df['cantidad'].fillna(df['cantidad'].mean(), inplace=True)
```

Paso 5: Filtrar los datos relevantes


Eliminamos los registros donde la cantidad de ventas es cero o negativa, ya que no son relevantes para el análisis.

```python
# Filtrar solo las filas con cantidad mayor a 0
df = df[df['cantidad'] > 0]
```

Paso 6: Validación final


Finalmente, verificamos que los datos estén limpios y listos para su análisis.

```python
# Mostrar información final del dataframe
print([Link]())
```

Este ejemplo ilustra el flujo de transformación de datos desde su importación hasta su limpieza, asegurando que los valores sean
consistentes y estén listos para análisis.

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).
Para seguir el paso a paso, descarga los siguientes archivos:

Ampliar imagen

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 [Link]() 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

Ampliar imagen

Fuente: elaboración propia.

Figura 5. Chequeamos las últimas filas del dataframe importado

Ampliar imagen

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


Ampliar imagen

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

Ampliar imagen

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

Ampliar imagen

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


Ampliar imagen

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

Ampliar imagen

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


Ampliar imagen

Fuente: elaboración propia.

Figura 12. Transposición: de formato ancho a largo (melt) y de largo a ancho (pivot)

Ampliar imagen

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

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
Ampliar imagen

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

Ampliar imagen

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

Ampliar imagen

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

Ampliar imagen

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

Ampliar imagen

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)


Ampliar imagen

Fuente: [Imagen sin título sobre conjunto de datos]. (s.f.). Recuperado de [Link]
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

Ampliar imagen

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

Ampliar imagen

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 «[Link]()» 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

Ampliar imagen

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

Ampliar imagen

Fuente: elaboración propia.

Figura [Link] las filas en las que aparece algún missing en la columna
tipo_de_cambio

Ampliar imagen

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 “Buenos


“BuenosAires”
de tipeo Aires”

“Capital
Sinónimos “CABA”
Federal”

Espacios en blanco “Buenos “Buenos


adicionales Aires ” Aires”

“Buenos
Abreviaturas “Bs. As.”
Aires”

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

“CAPITAL “Capital
Mayúsculas/minúsculas
FEDERAL” Federal”

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


Ampliar imagen

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 «[Link]» 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

Ampliar imagen

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 .[Link]
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


Ampliar imagen

Ampliar imagen

Ampliar imagen

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

Descargá el siguiente archivo con las consignas:

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

También podría gustarte