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.