La estadística descriptiva es una rama de las matemáticas que se encarga de analizar, interpretar y presentar de manera estructurada los datos obtenidos a través de diferentes fuentes. Con Python y sus múltiples librerías de análisis de datos, podemos realizar de manera sencilla estadística descriptiva.
Los siguientes son los pasos generales para realizar estadística descriptiva con Python:
Instalar las bibliotecas necesarias:
pip install pandas numpy scipy matplotlib
Antes de poder usar estas bibliotecas, necesitamos importarlas a nuestro código:
from statistics import median
from math import isnan
from itertools import filterfalse
data = [20.7, float('NaN'),19.2, 18.3, float('NaN'), 14.4]
sorted(data)
## [20.7, nan, 14.4, 18.3, 19.2, nan]
En Python, podemos usar la función isna() de pandas para verificar si existen datos faltantes en nuestro DataFrame.
import math
# buscamos los NaNs
nan_values = [value for value in data if math.isnan(value)]
print(nan_values)
## [nan, nan]
Para calcular la mediana de una lista de números en Python, puedes utilizar la función median() del módulo statistics. En cuanto a los valores NaN, la función median() no los puede procesar, por lo que primero debes eliminarlos o reemplazarlos. Aquí te muestro cómo hacerlo:
import math
import statistics
# Tus datos
data = [20.7, float('NaN'),19.2, 18.3, float('NaN'), 14.4]
# Eliminamos los NaNs
data_without_nan = [value for value in data if not math.isnan(value)]
# Calculamos la mediana sin los NaNs
median_without_nan = statistics.median(data_without_nan)
print("La mediana sin los NaNs es: ", median_without_nan)
## La mediana sin los NaNs es: 18.75
# Supongamos que reemplazamos los NaNs por la media de los valores existentes
mean_data = statistics.mean(data_without_nan)
data_replacing_nan = [value if not math.isnan(value) else mean_data for value in data]
# Calculamos la mediana reemplazando los NaNs
median_replacing_nan = statistics.median(data_replacing_nan)
print("La mediana reemplazando los NaNs es: ", median_replacing_nan)
## La mediana reemplazando los NaNs es: 18.225
Estas funciones están destinadas a calcular el promedio o el valor característico de una población o muestra.
mean(): Esta función calcula la media aritmética (“promedio”) de los datos.
fmean(): Esta función proporciona una media aritmética rápida utilizando aritmética de punto flotante, con opción a ponderaciones.
geometric_mean(): Calcula la media geométrica de los datos, que es la raíz n-esima del producto de todos los n números.
harmonic_mean(): Calcula la media armónica de los datos, que es el recíproco de la media aritmética de los recíprocos.
median(): Determina la mediana (valor medio) de los datos.
median_low(): Encuentra la mediana baja de los datos, que es el valor más bajo en el caso de un número par de datos.
median_high(): Encuentra la mediana alta de los datos, que es el valor más alto cuando hay un número par de datos.
median_grouped(): Calcula la mediana, o percentil 50, de los datos agrupados, que es el valor que divide los datos en dos grupos iguales.
mode(): Determina la moda única (el valor más común) en el caso de datos discretos o nominales.
multimode(): Proporciona una lista de modas (los valores más comunes) para datos discretos o nominales.
quantiles(): Esta función divide los datos en intervalos con las mismas probabilidades.
import statistics
data = [1, 2, 3, 4, 4, 4, 5, 6]
print("Media aritmética: ", statistics.mean(data))
## Media aritmética: 3.625
print("Media geométrica: ", statistics.geometric_mean(data))
## Media geométrica: 3.2187078550942467
print("Media armónica: ", statistics.harmonic_mean(data))
## Media armónica: 2.711864406779661
print("Mediana: ", statistics.median(data))
## Mediana: 4.0
print("Mediana baja: ", statistics.median_low(data))
## Mediana baja: 4
print("Mediana alta: ", statistics.median_high(data))
## Mediana alta: 4
print("Moda: ", statistics.mode(data))
## Moda: 4
print("Multimodas: ", statistics.multimode(data))
## Multimodas: [4]
Estas funciones son utilizadas para calcular una medida de cuánto se desvían los datos de una población o muestra de los valores típicos o promedios.
pstdev(): Calcula la desviación estándar de la población para los datos proporcionados. Es una medida que expresa cuánto se desvían los valores de los datos del promedio de la población.
pvariance(): Calcula la varianza de la población para los datos proporcionados. Es el cuadrado de la desviación estándar poblacional y significa la variabilidad promedio de la población con respecto al promedio.
stdev(): Calcula la desviación estándar de la muestra para los datos proporcionados. Similar a pstdev(), pero esta función se utiliza cuando los datos representan una muestra de la población, en lugar de la población completa.
variance(): Calcula la varianza de la muestra para los datos proporcionados. Al igual que la pvariance(), pero se utiliza cuando los datos son una muestra de la población en lugar de la población completa.
import statistics
data = [1, 2, 3, 4, 4, 4, 5, 6]
#Utilicemos las funciones
print("Desviación estándar poblacional: ", statistics.pstdev(data))
## Desviación estándar poblacional: 1.4947825928876748
print("Varianza poblacional: ", statistics.pvariance(data))
## Varianza poblacional: 2.234375
print("Desviación estándar muestral: ", statistics.stdev(data))
## Desviación estándar muestral: 1.5979898086569353
print("Varianza muestral: ", statistics.variance(data))
## Varianza muestral: 2.5535714285714284