El análisis exploratorio de datos, también conocido como EDA, se ha convertido en un tema cada vez más candente en la ciencia de datos. Como su nombre indica, es un proceso de prueba y error en un espacio incierto, con el objetivo de encontrar información. Esto suele ocurrir al principio del ciclo de vida de la ciencia de datos. En esta página, presento un proceso EDA (análisis de datos semiautomático) semiautomático.
Contenido
PalancaAnálisis semiautomático de datos: conociendo sus datos
Usaré cuatro bibliotecas principales: Numpy, para trabajar con arreglos; Pandas: para manipular datos en un formato de hoja de cálculo que conocemos; Seaborn y matplotlib: para crear una visualización de datos.
importar pandas como pd
importar seaborn como sns
importar matplotlib.pyplot como plt
importar numpy como np desde pandas.api.types
importar is_string_dtype, is_numeric_dtype
Cree un marco de datos a partir del conjunto de datos importado copiando la ruta del conjunto de datos y use df.head(5) para ver las primeras 5 filas de datos.
Antes de acercarnos a cada campo, veamos primero las características generales del conjunto de datos. info() da la cantidad de valores no nulos para cada columna y su tipo de datos.
describe() proporciona estadísticas básicas sobre cada columna. Al pasar el parámetro 'include='all', genera el recuento de valores, el recuento único, el valor de frecuencia superior de las variables categóricas y el recuento, la media, la desviación estándar, el mínimo, el máximo y el percentil de las variables numéricas.
Valor faltante y preprocesamiento
Con respecto al tema de los valores faltantes, los invito a elegir la pestaña Correlación y regresiones en la rúbrica Análisis de los datos.
Análisis univariado
La función describe() mencionada en la primera sección ya ha proporcionado un análisis univariado de forma no gráfica. En esta sección, generaremos más información al visualizar los datos y detectar patrones ocultos a través del análisis gráfico.
Variables categóricas → Histogramas
La forma más sencilla e intuitiva de visualizar la propiedad de una variable categórica es utilizar un gráfico de barras para trazar la frecuencia de cada valor categórico.
Variables cuantitativas → Histogramas
Para representar gráficamente la distribución de variables numéricas, podemos utilizar un histograma que es muy similar a un gráfico de barras. Divide números continuos en grupos de igual tamaño y traza la frecuencia de registros entre el intervalo.
Uso este bucle for para recorrer las columnas del marco de datos y crear un gráfico para cada columna. Luego use un histograma si son variables numéricas y un gráfico de barras si son variables categóricas.
Análisis multivariado: cuantitativo vs. cuantitativo
Una parte muy importante del análisis de datos semiautomático es el análisis multivariante, cómo las columnas se influyen entre sí.
Primero, usemos la matriz de correlación para encontrar la correlación de todas las columnas de tipos de datos numéricos. Luego use un mapa de calor para visualizar el resultado. La anotación dentro de cada celda indica el coeficiente de correlación de la relación.
En segundo lugar, dado que la matriz de correlación solo indica la fuerza de la relación lineal, es mejor trazar las variables numéricas mediante la función seaborn sns.pairplot(). Tenga en cuenta que las funciones sns.heatmap() y sns.pairplot() ignoran los tipos de datos no numéricos.
Aquí hay un ejemplo con otro conjunto de datos:
El diagrama de pares o diagrama de dispersión es un buen complemento para la matriz de correlación, especialmente donde pueden existir relaciones no lineales (por ejemplo, relación exponencial, inversa). Por ejemplo, la relación inversa entre "Clasificación" y "Ventas" que se ve en el conjunto de datos del restaurante puede confundirse con una fuerte relación lineal si solo observamos el número "-0.92" en la matriz de correlación.
Categoría vs Categoría
La relación entre dos variables categóricas se puede visualizar utilizando histogramas agrupados. La frecuencia de las variables categóricas primarias se desglosa por categoría secundaria. Esto se puede lograr usando sns.countplot().
Estoy usando un bucle for anidado, donde el bucle externo recorre todas las variables categóricas y las asigna como la categoría principal, luego el bucle interno recorre la lista nuevamente para asociar la categoría principal con otra categoría secundaria.
En un gráfico de barras agrupadas, si la distribución de frecuencia siempre sigue el mismo patrón en diferentes agrupaciones, sugiere que no hay dependencia entre la categoría primaria y la categoría secundaria. Sin embargo, si la distribución es diferente, indica que es probable que exista una dependencia entre dos variables.
Categoría vs Cuantitativo
El diagrama de caja generalmente se adopta cuando necesitamos comparar la variación de datos numéricos entre grupos. Esta es una forma intuitiva de representar gráficamente si la variación en las características categóricas contribuye a la diferencia en los valores, que se pueden cuantificar aún más mediante el análisis ANOVA.
En este proceso, asocio cada columna de la lista categórica con todas las columnas de la lista numérica y trazo el diagrama de caja en consecuencia.
En el conjunto de datos “reddit_wsb” no se observan diferencias significativas entre las distintas categorías.
Veamos las diferencias que pueden existir utilizando otro conjunto de datos.
Otro enfoque se basa en el diagrama de pares que hicimos anteriormente para numérico versus numérico. Para introducir la variable categórica, podemos usar diferentes tonalidades para representar. Al igual que lo que hicimos para countplot. Para hacer esto, simplemente podemos iterar sobre la lista categórica y agregar cada elemento como un matiz del diagrama de pares.
Aquí están los resultados en el segundo conjunto de datos:
Esto marca el final de nuestro análisis de datos semiautomático que puede usar para todos sus conjuntos de datos.