Cómo limpiar tus datos en Python
Una guía detallada sobre cómo limpiar tus datos para poner en marcha tus proyectos personales
Foto de Towfiqu barbhuiya en Unsplash
Cuando participé en el programa de lectura dirigida de mi universidad (un mini programa de investigación donde los estudiantes universitarios reciben tutoría de estudiantes de posgrado), Solo había tomado 2 cursos de estadística en R. Si bien estas clases me enseñaron mucho sobre cómo manipular datos, crear visualizaciones de datos y extraer análisis, trabajar en mi primer proyecto personal en el programa me hizo me doy cuenta de que nunca había trabajado con "datos desordenados". Esos cursos implicaban conjuntos de datos previamente limpiados y procesados, pero No enseñó a los estudiantes cómo limpiar conjuntos de datos cual Crea una barrera para comenzar con proyectos personales. Por lo tanto, espero que este artículo sirva como punto de partida para usted Aprenda a limpiar sus datos de manera eficiente y Poner en marcha tus proyectos personales.
Para este artículo, trabajaré con el Conjunto de datos de programas de televisión y películas de Netflix que presenta muchas inconsistencias y datos faltantes.
Tabla de contenidos
- Revisa tus datos
- Mira la proporción de datos faltantes
- Comprueba el tipo de datos de cada columna
- Si tiene columnas de cadenas, verifique espacios en blanco finales
- Cómo afrontar los valores faltantes (Valores de NaN)
- Extraer más información de su conjunto de datos para obtener más variables
- Comprueba el valores únicos de columnas
Todas las imágenes, a menos que se indique lo contrario, son del autor.
Paso 1: Revisa tus datos
Antes incluso de realizar cualquier limpieza o manipulación de su conjunto de datos, debe echar un vistazo a sus datos para comprenderlos con qué variables estás trabajando, cómo se estructuran los valores en función de la columna en la que se encuentran y tal vez puedas tener una idea aproximada de las inconsistencias que necesitarás abordar o serán engorrosas en la fase de análisis. Aquí también podrás eliminar ciertas columnas que no necesitarás dependiendo del análisis que quieras realizar.
1. Imprima las primeras filas de su conjunto de datos
Aquí imprimí las primeras 7 filas de mi conjunto de datos, pero puedes imprimir 5 o 10. Recomiendo mantenerlo en menos de 10 o de lo contrario será demasiado abrumador para lo que estás tratando de hacer actualmente –un vistazo rápido del conjunto de datos.

Hacer esto le dará una buena idea de con qué tipos de datos podría estar tratando, qué columnas necesita para realizar transformaciones o limpieza y otros datos que podría extraer.
Antes de analizar esto más de cerca, realicemos el siguiente paso.
2. Guarde las variables en una lista
Quieres hacer esto para tener Fácil acceso a las diferentes columnas del conjunto de datos, especialmente cuando desea realizar las mismas transformaciones en diferentes subconjuntos de columnas.
3. Anote los posibles problemas que deberá abordar en cada columna.
Para mantenerse organizado, tenga en cuenta los problemas que ve en su conjunto de datos (echando un vistazo a su conjunto de datos como en el Paso 1).

Esta imagen de arriba representa lo que puedo ver con solo echar un vistazo al conjunto de datos y es algo que Deberías pensar en ello cuando mires tu conjunto de datos. Aquí hay algunas cosas que me llaman la atención:
- Hay algunas columnas a las que les faltan valores. Esto podría causar muchos problemas de análisis y trazado si no se aborda y resuelve al principio del proceso.
- Hay columnas con palabras y números, como
date_addedyduration. Esto puede ser un problema si queremos hacer gráficos de series temporales por la fecha, o otros gráficos para explorar la relación de la duración con otras variables. - Hay 2 columnas con varias palabras distintas unidas por una coma. Este es un problema si queremos hacerlo parcelas que exploran la distribución de
listed_in(género) o los actores de Netflix. - Es posible que a otras columnas les falten valores. El siguiente paso analiza el camino a seguir compruebe qué columnas tienen valores faltantes y cuántos datos faltantes tienen.
Paso 2: Observa la proporción de datos faltantes
A partir de este fragmento de código, puede observar fácilmente la distribución de los valores faltantes en el conjunto de datos para tener una buena idea de con qué columnas deberá trabajar para resolver el problema de los valores faltantes.
A partir del resultado, estos son los conocimientos que puede obtener:
directorLa columna tiene el mayor porcentaje de datos faltantes ~ 30%castycountryLa columna también tiene un porcentaje considerable de datos faltantes ~ 9%date_added, ratingydurationno faltan tantos datos ~ 0% – 0,1%- Afortunadamente, la mayoría de las demás columnas no están vacías.
Tu próxima pregunta probablemente sea: ¿Cómo manejo estas columnas con valores faltantes?
Hay algunas formas de abordarlo:
- Elimina la columna por completo. Si la columna no es tan importante para su análisis, simplemente elimínela.
- Mantén la columna. En este caso, porque el
director, castycountryLas columnas son bastante importantes para mi análisis, los conservaré. - Imputación – el proceso de reemplazar datos faltantes con valores sustituidos. Aquí no es posible hacerlo porque la mayoría de los datos son valores de cadena y no valores numéricos. Sin embargo, escribiré un artículo que habla más sobre la imputación en detalle, por qué y cuándo se debe utilizar y cómo se puede utilizar en R y Python con la ayuda de algunos paquetes.
Antes de continuar, plantearé la cuestión de los valores faltantes a través de filas.
En algunos casos, es posible que desees examinar el distribución de valores faltantes en todas las filas de su conjunto de datos (dado que su conjunto de datos no tiene una gran cantidad de observaciones/filas). Desde aquí, puedes Elija entre las opciones anteriores dependiendo de qué tan importantes sean las filas para su análisis. Por ejemplo, su conjunto de datos contiene datos registrados de algo que cambia con el tiempo. Aunque una fila puede contener valores faltantes, es posible que no desees eliminarla porque hay información de tiempo importante que deseas conservar.
Continuemos con el paso 3 antes de mostrarles cómo manejar los valores de NaN incluso después de mantener las columnas.
Paso 3: Verifique el tipo de datos de cada columna
Aquí puedes ver que todas las columnas tienen object como su tipo de datos aparte de release_year. En pandas, objeto significa cadena o tipo mixto (tipo numérico y no numérico mixto). Y a partir de nuestro conjunto de datos, podrá saber qué columnas son estrictamente de cadena y de tipo mixto.
Paso 4: Si tiene columnas de cadenas, verifique los espacios en blanco finales
Una vez que sepamos con qué tipos de datos estamos tratando, asegurémonos de eliminar los caracteres finales y los espacios en blanco strip .
Paso 5: Cómo lidiar con los valores faltantes (valores NaN)
Volviendo a las columnas de valores faltantes, echemos un vistazo a las columnas: director, cast, country, date_added, rating, duration. Podemos segmentar estas columnas según sean de tipo cadena o mixto.
Cadena: director, cast, country, rating (aquí es una cadena y no está mezclada porque los valores numéricos no tendrán ningún significado si se separan)
Mixto: date_added, duration
NaN significa No es un número en pandas. Es un valor especial de punto flotante que es diferente de NoneType en Python. NaN Puede resultar molesto trabajar con valores, especialmente cuando desea filtrarlos para gráficos o análisis. Para hacernos la vida más fácil, reemplace estos valores de NaN con otra cosa.
Para valores de tipo cadena, podemos reemplazarlos NaN valores con "" o "Ninguno" o cualquier cadena que pueda indicarle que no hay ningún valor en esa entrada. Aquí, elegí reemplazarlo con "" usando el fillna función. Como no es una función in situ, reasigné los valores modificados a la columna del conjunto de datos.
Aquí debes haber notado que omití la columna de duración. Esto se debe a que haremos algo con esa columna más adelante.
Paso 6: Vea si hay otras variables que pueda obtener extrayéndolas de otras variables
Para valores de tipo mixto, antes de abordar el problema del valor faltante, veamos si podemos extraer algún dato para enriquecer nuestro análisis o facilitar el proceso.

Mirando date_added, podemos ver que contiene el mes, la fecha y el año en que se agregó la película/programa. En lugar de tener toda esta información en una columna, ¿por qué no intentar separarla? De esa manera, podemos optar por aislar cómo el mes o el año interactúa con las otras variables en lugar de mirar date_added donde su granularidad dificultará el descubrimiento de cualquier tendencia.
A continuación, escribí código no solo para separar la información en otras 2 columnas, sino que también filtré las filas con NaN valores y los reemplazó con 0, tal como se hizo antes con "".

Ahora, el nuevo conjunto de datos contiene el month_added y year_added columnas. Esto nos permitirá realizar algún análisis de tendencias más adelante.
Mirando duration, además de ser de tipo mixto, también hay 2 unidades de tiempo diferentes en esta columna. Esto es un problema porque estamos tratando con dos tipos diferentes de contenido que se miden de manera diferente en función del tiempo. Así, haciendo gráficos para durationSerá bastante difícil de interpretar si los mantenemos como están. Lo bueno es que hay muchas maneras de abordar este problema. La forma en que he elegido afrontarlo es mediante separando el tipo de contenido en 2 conjuntos de datos diferentes y, naturalmente, la columna de duración será simplemente numérica y tendrá solo 1 tipo de unidad de tiempo. De esta manera, puedes Trazar fácil y claramente utilizando los valores.
Porque el duration La columna tiene cadenas y números, También tendré que crear una función para extraer el número de esa columna para que pueda insertarse en las columnas de los 2 nuevos conjuntos de datos.
Paso 7: Verifique los valores únicos de las columnas
Más allá de los valores potencialmente faltantes, podría haber valores corruptos con los que puede encontrarse una vez que realice el análisis. Para comprobar esto, podemos comprobar valores únicos para algunas de las columnas. Tomemos como punto de partida las primeras 5 filas de los conjuntos de datos.


Puede que no sea estratégico comprobar los valores únicos de todas las columnas, especialmente el título, el director y el elenco, ya que podría haber una gran cantidad de valores únicos para examinar. En lugar de ello, centrémonos en una lista de posibles valores únicos que podrían ser más fáciles e importantes de comprobar, dado que podrían ser más esclarecedores para análisis futuros. De un vistazo a los conjuntos de datos, las columnas country, rating, listed_in son probablemente los de interés. Examinemos primero la columna de calificación, ya que parece ser la menos complicada de abordar.
Puede obtener fácilmente los valores únicos de una columna como la calificación utilizando la función incorporada de Python unique. ¡Probemos eso!
Esto parece interesante. ¿Por qué hay 74 min, 84 min y 66 min en los tipos únicos de clasificación de películas? ¿Y por qué existen UR (sin clasificación) y NR (sin clasificación)? ¿No se supone que significan lo mismo? Investiguemos esto más a fondo extrayendo las filas que tienen estas entradas extrañas.
Usando este fragmento de código, podemos ver que 3 filas distintas contienen esta calificación extraña y que en realidad pertenece a la columna de longitud. También podemos ver el número de fila donde se encuentra el problema, que será útil utilizar para corregir las entradas.
Después de una búsqueda rápida en Google, podemos proceder a corregir estas entradas moviendo las "calificaciones incorrectas" (en realidad, duración) a la columna de longitud e ingresando las calificaciones correctas.
Para los valores UR y NR en la columna de calificación, debemos mantener la coherencia donde se utiliza NR en el netflix_shows conjunto de datos y cambie los valores de UR a NR.
Ahora que hemos limpiado el rating columna, veamos el país y listed_in columna. A estas alturas ya te habrás dado cuenta de que no es tan fácil como el rating columna para extraer valores únicos. Esto se debe a que los valores en esas columnas son palabras unidas por comas, lo que hace más difícil extraer el conjunto de palabras y luego encontrar palabras únicas de ese conjunto.
La forma en que vamos a solucionar este problema es implementando una función única para este caso especial.
Para empezar, pensemos en qué estructura de datos puede darnos valores únicos fácilmente. Si adivinaste conjuntos, ¡tienes razón! Dada su capacidad para almacenar elementos únicos del mismo tipo en orden ordenado, Es una estructura de datos adecuada para lo que queremos hacer.
Luego, para extraer aquellas palabras que están unidas por comas, podemos utilizar el split función para dividir la cadena por la coma.
Después de usar la función, podemos obtener fácilmente los valores únicos para el country y listed_in columnas.
A continuación, examinemos la lista de países únicos para ver si hay inconsistencias o errores. Al hacerlo y con un poco de búsqueda en Google, podemos ver que hay algunos problemas con esta lista:
- Están tanto la Unión Soviética como Rusia
- Existe tanto Alemania Occidental/Este como Alemania
Podemos solucionar esto fácilmente con algunas modificaciones al conjunto de datos.
En cuanto a la lista de géneros, podemos ver que hay algunos géneros que quizás no queramos o necesitemos incluir. De esta forma, podemos eliminarlo fácilmente del conjunto de datos para que nuestro análisis sea menos confuso.
Tanto en el conjunto de datos de programas de televisión como de películas, existe un género de "programas de televisión" y "películas". Técnicamente, esto no es un género, pero podría ser una etiqueta del tipo de contenido. Para confirmar esto, debemos imprimir los recuentos de estos "géneros" que aparecen en los respectivos conjuntos de datos.
La hipótesis es que si estos "géneros" aparecen en todas las filas de los conjuntos de datos, significa que son simplemente etiquetas. De lo contrario, tendremos que investigar más a fondo qué representan esos "géneros".
Como el recuento de los "géneros" es menor que el tamaño de los conjuntos de datos, usemos la salida del código para examinar las filas.
Dado que escribí el código para generar específicamente los índices de fila en una lista, podemos usar fácilmente esa lista y la iloc función para obtener una vista de las filas.


Al echar un vistazo a las filas, ahora es obvio que el género "Programas de televisión" y "Películas" se utilizó para indicar que estos contenidos no tenían un género en primer lugar. Ahora que entendemos lo que esto significa, podemos optar por excluirlo o incluirlo en nuestro análisis. Aquí he elegido incluirlo porque no afecta mi análisis.
Aunque este paso es tedioso, también es bastante importante ya que nos permite encontrar los problemas en nuestro conjunto de datos que están ocultos a primera vista.
Paso 8: Unir los conjuntos de datos limpios para crear otro conjunto de datos [Opcional]
Este paso es opcional, pero en el caso de que desee el conjunto de datos de programas de televisión y películas limpios en un solo lugar, debe concatenar ellos.
¡Y eso es todo! Has limpiado este conjunto de datos con éxito. Tenga en cuenta que cada uno tiene su metodología de limpieza de datos, y gran parte de ella se debe simplemente a que se esfuerza por comprender su conjunto de datos. Sin embargo, espero que este artículo le haya ayudado a comprender por qué los científicos de datos dedican el 80% de su tiempo a limpiar sus conjuntos de datos. Con toda seriedad, este artículo destaca la importancia de la limpieza de datos y, lo que es más importante, la necesidad de una buena metodología de limpieza de datos que le ayude a mantener su trabajo organizado y que le ayude si necesita volver a ello durante el proceso de análisis. Puedes consultar el cuaderno completo aquí.
Escrito por
No hay comentarios.:
Publicar un comentario