Está en la página 1de 19

Universidad Tecnológica de

la Mixteca

Estancias profesionales
mes agosto-septiembre

Limpieza de datos en Python

Jaquelin Areli Galindo Luna


Galj981111@gs.utm.mx
Esteban Jimenez Rojas
jire980604@gs.utm.mx

Dr. Raúl Cruz Barbosa


La limpieza de datos es un paso necesario antes de realizar cualquier tarea relevante en
análisis/ciencia de datos, desde elaborar un simple análisis gráfico, hasta implementar un
modelo de aprendizaje automático.
¿Qué es Limpieza de Datos?
Denominado en Inglés Data Cleaning o Data Cleansing, este proceso involucra detectar,
eliminar, corregir o transformar cualquier anomalía, perturbación o irrelevancia de los
datos.
Razones para efectuar Limpieza de Datos
Este proceso ayuda a obtener resultados confiables, un error peligroso a la hora de realizar
un análisis es abstraerse en exceso en el modelo a implementar, y no empezar por lo más
simple. Tu fuente de información y su tratamiento. Los datos en el mundo real rara vez son
homogéneos y directamente intuitivos. Asimismo, realizar este proceso puede reducir
posibles sesgos en el análisis. He aquí varias de las razones más comunes:
• Remover Outliers: Por outlier nos referimos a cualquier dato que difiere
significativamente del promedio o rango observado del resto de nuestros datos.
Aunque los outliers son mucho más fáciles de apreciar gráficamente, también
pueden detectarse a primera vista en un conjunto de datos, por ejemplo, encontrar la
variable edad de una persona en 480. Inmediatamente nos indica que es un error de
entrada de datos, conocido en inglés como "data entry error" probablemente la edad
sea 48.
• Trabajar datos Nulos: No se ha introducido información alguna en alguno de los
elementos de la variable. Estos pueden deberse a falta de información o bien a no
haber podido estimar la variable, un error de entrada, o bien hubo un fenómeno
externo que impidió la recolección de datos. Cualquiera sea la razón es importante
estar consciente de esta situación, puesto que conociendo la localización y el tipo de
datos que se encuentran nulos, podremos extrapolarlos, efectuar una transformación
o bien, al menos conocer las limitaciones de nuestra información. Este fenómeno
también puede ser conocido como "Missing Data".

• Eliminar o transformar datos erróneos e irrelevantes: Estos representan


información fuera de contexto en nuestra base de datos, por ejemplo, tener la
variable precio de venta en números negativos.

Limpieza de datos con pandas.


Pandas nos ofrece una gran variedad de opciones para resolver problemas de este tipo.
Cargamos el archivo.

Como se puede observar tenemos una recolección de datos acerca del colesterol y algunas
variables que pueden influir en el, podemos observar que hay presencia de datos nulos,
además están dispersos en distintas variables.
Isnull
Isnull nos permite detectar datos nulos, simplificando este proceso independientemente de
la dimensión de nuestra base de datos.
La función panda.isnull devuelve una estructura con las mismas dimensiones que la que se
cede como argumento sustituyendo cada valor por el booleano True si el correspondiente
elemento es un valor nulo, y por el booleano False en caso contrario.

Limpieza de Datos
Ahora que sabemos localizar los datos nulos. Veamos como trabajar con ellos. A partir de
este punto estaremos modificando datos.

Dropna
dropna() elimina las filas que contienen datos nulos, por tanto, es muy útil para eliminar
filas con varios datos nulos a la vez, ya que dichas filas no aportarían información
significativa más que para unas cuantas variables.

La desventaja al usar dropna() es que puede eliminar información importante, como se


muestra en el ejemplo, incluso las filas que solo tenían un solo dato nulo fueron eliminadas.
Fillna
fillna() rellena los valores nulos con un valor predeterminado. Es importante destacar que
existen distintos métodos a la hora de trabajar con fillna. Esta función es muy útil cuando
solo necesitas corregir un número mínimo de datos nulos.

En el ejemplo rellenamos los datos nulos con fillna(value=100) asignándole el valor de 100
a todos los datos nulos
¿Desventaja? Como habrás notado la asignación de dicho valor puede llegar a ser arbitraria.

bfill
Este método rellena los datos nulos, en base al valor de la siguiente fila.
Ventajas: Sin duda es mucho mejor que asignar un valor arbitrario a los datos, además
garantiza que los datos se mantengan dentro de un rango específico. Es especialmente útil
en bases de datos de gran extensión y con poca proporción de datos nulos.
Desventajas: Sin embargo, debes asegurarte de que el número de datos nulos NO sea
significativo, para que el coeficiente de variación y otras medidas de dispersión no sufran
de un sesgo muy grande. Por otra parte, no involucra ninguna estimación en pleno sentido.

Outliers
Un outlier es un valor que numéricamente es muy diferente al resto de los datos, lo que
puede afectar al momento su análisis, por lo que es aconsejable retirarlos antes de seguir
adelante con el mismo.
Los valores atípicos (outliers) se pueden detectar mediante visualización, implementando
fórmulas matemáticas en el conjunto de datos o utilizando el enfoque estadístico.
Ejemplo:
Si analizáramos una sola variable, por ejemplo “edad”, veremos donde se concentran la
mayoría de las muestras y los posibles valores “extremos”.

Sin embargo, también podemos lograr buenos resultados de forma visual.


Usando describe.
usando el diagrama de cajas y bigotes.
Eliminación de datos atípicos con el rango IRQ
Un valor atípico es un valor que es mucho menor o mayor que la mediana. Aquellos datos
que se hallan a una distancia del primer cuartil y del tercer cuartil, superior a 1.5 veces el
rango intercuartílico se llaman valores atípicos.
¿Cómo calcular el rango IRQ?
Para poder calcular el rango necesitamos calcular el primer cuartil y el tercer cuartil, luego
calculamos el rango 𝐼𝑄𝑅 = 𝑄3 − 𝑄1.
Después que calculamos el rango, obtenemos los limites:
superior 𝑄3 + 1.5 ∗ 𝐼𝑄𝑅
inferior 𝑄1 − 1.5 ∗ 𝐼𝑄𝑅
Los valores que se encuentra fuera de esos límites, se les considera valores atípicos.
Método numpy.where()
El método numpy.where() con el que se puede seleccionar elementos en base a una
condición. Simplemente en una línea de código. El método numpy.where() puede evitar la
necesidad de crear un bucle para crear un nuevo vector en base a una condición.
Método numpy.percentile()
función numpy.percentile() utilizada para calcular el percentil n de los datos
dados(elementos de la matriz) .

Sintaxis: numpy.percentile(arr, n,)


Parámetros:
arr: matriz de entrada.
n: valor percentil.
Devuelve: n-ésimo percentil de la matriz(un valor escalar si el eje es ninguno) o matriz con
valores de percentil a lo largo del eje especificado.

Método pandas.drop()
El método .drop() asociado a un dataframe pandas devuelve una copia de este tras eliminar
las filas o columnas indicadas. Éstas deberán referenciarse por sus etiquetas explícitas, no
por su posición en el eje.
La eliminación se realiza, por defecto, en el eje vertical (se eliminan filas, por lo tanto).

Detección de valores atípicos utilizando las puntuaciones z


Usar la puntuación Z es una de las formas de eliminar los valores atípicos del conjunto de
datos. El principio detrás de este enfoque es crear una distribución normal estándar de las
variables y luego verificar si los puntos caen por debajo de la desviación estándar de + -3.
Si los valores se encuentran fuera de este rango, se denominan valores atípicos y se
eliminan.
Usamos la siguiente fórmula para calcular una puntuación z:
z = (X – μ) / σ
dónde:

• X es un único valor de datos sin procesar


• μ es la media de la población
• σ es la desviación estándar de la población
veamos un ejemplo:
Podemos calcular los puntajes z en Python usando scipy.stats.zscore , que usa la siguiente
sintaxis:
scipy.stats.zscore (a)
dónde:
• a : una matriz, datafrrame como un objeto que contiene datos

ya que tenemos ubicados nuestros datos atípicos se procede a trabajar con ellos los
podemos eliminar como lo vimos en el caso anterior.
Otro método es la imputación de la media/mediana, como el valor medio esta muy
influenciado por los valores atípicos se recomienda reemplazar los valores atípicos con el
valor de la mediano.
Variables Ficticias
Un conjunto de datos puede contener varios tipos de valores, a veces consta de valores
categóricos. Entonces, con el fin de usar esos valores categóricos para programar de manera
eficiente, creamos variables ficticias. Una variable ficticia es una variable binaria que
indica si una variable categórica separada toma un valor específico.

Podemos crear variables ficticias en Python usando el método get_dummies() .


Sintaxis: pandas.get_dummies(data)
Parámetros:
▪ datos = datos de entrada, es decir, incluye el marco de datos de pandas. lista.
establecer. matrices numpy, etc
Tipo de retorno: variables ficticias
Ejemplos:
Veamos que sucede al crear variables ficticias con una variable categórica y una variable
numérica.

Podemos observar que a nuestra variable numérica no la transforma solo la anexa tal como
esta.

También podría gustarte