Ejemplo con iris.arff
Para calcular conceptos como la media, mediana, moda, asimetría, kurtosis, y las tablas de frecuencia utilizando el famoso conjunto de datos de Iris (disponible en formato ARFF), primero debemos cargar el archivo de datos y procesarlo. Luego, aplicaremos las medidas estadísticas a las variables del conjunto.
El conjunto de datos Iris contiene 150 observaciones de flores de iris, con cuatro características (longitud y ancho del sépalo, longitud y ancho del pétalo) y una etiqueta de clase (tipo de iris).
Paso 1: Cargar los datos de Iris
Primero, asegúrate de tener instalado el paquete scipy
para cargar el archivo ARFF. Si no lo tienes, puedes instalarlo usando pip install scipy
.
A continuación, el código que carga el conjunto de datos de Iris y calcula las estadísticas necesarias:
import pandas as pd from scipy.stats import skew, kurtosis, mode # Cargar el archivo ARFF de Iris df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']) # Mostrar las primeras filas del DataFrame print("Primeras filas del conjunto de datos:") print(df.head())
Paso 2: Calcular Medidas Descriptivas
Ahora calcularemos las medidas de posición (media, mediana, moda) y de forma (asimetría, kurtosis) para cada una de las características numéricas.
# Cálculo de medidas de posición y dispersión para cada característica for column in df.columns[:-1]: # Excluyendo la columna 'class' print(column) media = df[column].mean() mediana = df[column].median() moda = mode(df[column])[0] asimetria = skew(df[column]) kurtosis_value = kurtosis(df[column]) print(f"\nAnálisis para {column}:") print(f"Media: {media:.2f}") print(f"Mediana: {mediana:.2f}") print(f"Moda: {moda:.2f}") print(f"Asimetría: {asimetria:.2f}") print(f"Kurtosis: {kurtosis_value:.2f}")
Paso 3: Calcular la Tabla de Frecuencia
También podemos crear una tabla de frecuencia para la variable class
que representa el tipo de iris.
# Tabla de frecuencia para la clase tabla_frecuencia = df['species'].value_counts().reset_index() tabla_frecuencia.columns = ['Tipo de Iris', 'Frecuencia'] print("\nTabla de Frecuencia de Tipos de Iris:") print(tabla_frecuencia)
Código Completo
Aquí tienes el código completo en un solo bloque para que lo puedas ejecutar:
import numpy as np import pandas as pd from scipy.io import arff from scipy.stats import skew, kurtosis, mode # Cargar el archivo ARFF de Iris df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']) # Mostrar las primeras filas del DataFrame print("Primeras filas del conjunto de datos:") print(df.head()) # Cálculo de medidas de posición y dispersión para cada característica for column in df.columns[:-1]: # Excluyendo la columna 'class' media = df[column].mean() mediana = df[column].median() moda = mode(df[column])[0] asimetria = skew(df[column]) kurtosis_value = kurtosis(df[column]) print(f"\nAnálisis para {column}:") print(f"Media: {media:.2f}") print(f"Mediana: {mediana:.2f}") print(f"Moda: {moda:.2f}") print(f"Asimetría: {asimetria:.2f}") print(f"Kurtosis: {kurtosis_value:.2f}") # Tabla de frecuencia para la clase tabla_frecuencia = df['species'].value_counts().reset_index() tabla_frecuencia.columns = ['Tipo de Iris', 'Frecuencia'] print("\nTabla de Frecuencia de Tipos de Iris:") print(tabla_frecuencia)
Resultados Esperados
Cuando ejecutes este código, deberías obtener:
- Las primeras filas del conjunto de datos Iris.
- Las medidas de posición (media, mediana, moda) y de forma (asimetría, kurtosis) para cada característica numérica.
- La tabla de frecuencia de los diferentes tipos de iris en el conjunto de datos.