"Clase 35 - Análisis de Datos de Ventas con Python y Statistics"
import csv
import statistics
# # Leer los datos de la BdD
# ventas_mensuales = {} # Crear diccionario en blanco
# print(ventas_mensuales)
# with open('ventas_datos.csv', mode='r') as archivo: # abrir el archivo.csv
# leer = csv.DictReader(archivo) # leer los datos y convertirlos en un diccionario
# print(leer)
# for row in leer: # por cada fila leer
# mes = row['mes'] # clave mes por cada mes
# print(mes)
# venta = int(row['venta']) # valor venta por cada venta
# print(venta)
# ventas_mensuales[mes] = venta # del diccionario ventas_mensuales tomar las ventas de cada mes
# print(ventas_mensuales)
# ventas = list(ventas_mensuales.values()) # crear una lista con los valores de las ventas
# print(ventas)
ventas = [120,130,150,170,160,180,190,200,210,190,185,210]
print(f"Ventas: {ventas}")
### Funciones
## Promedios y medidas de tendencia central: Estas funciones calculan el promedio o el valor típico de una población o muestra.
# mean: Media aritmética (promedio) de los datos.
mean = statistics.mean(ventas)
print(f"mean: {mean}") # mean: 174.58333333333334
# fmean: Media aritmética rápida de punto flotante.
fmean = statistics.fmean(ventas)
print(f"fmean: {fmean}") # fmean: 174.58333333333334
# geometric_mean: Media geométrica de los datos.
geometric_mean = statistics.geometric_mean(ventas)
print(f"geometric_mean: {geometric_mean}") # geometric_mean: 172.09452944787978
# harmonic_mean: Media armónica de los datos.
harmonic_mean = statistics.harmonic_mean(ventas)
print(f"harmonic_mean: {harmonic_mean}") # harmonic_mean: 169.40599236754534
# kde: Función que estimar la distribución de densidad de probabilidad de los datos.
kde = statistics.kde(ventas, h=200)
print(f"kde: {kde}") # kde: <function kde.<locals>.pdf at 0x000002B07019E3E0>
# kde_random: Función de muestreo aleatorio del PDF generado por kde(). PDF: función de densidad de probabilidad (FPD o PDF en inglés)
kde_random = statistics.kde_random(ventas, h=200)
print(f"kde_random: {kde_random}") # kde_random: <function kde_random.<locals>.rand at 0x000002B06FF7DDA0>
# median: Mediana (valor medio) de los datos.
median = statistics.median(ventas)
print(f"median: {median}") # median: 182.5
# median_low: Mediana baja de los datos.
median_low = statistics.median_low(ventas)
print(f"median_low: {median_low}") # median_low: 180
# median_high: Mediana alta de los datos.
median_high = statistics.median_high(ventas)
print(f"median_high: {median_high}") # median_high: 185
# median_grouped: Mediana o percentil 50 de los datos agrupados.
median_grouped = statistics.median_grouped(ventas)
print(f"median_grouped: {median_grouped}") # median_grouped: 184.5
# mode: Moda (valor más común) de los datos.
mode = statistics.mode(ventas)
print(f"mode: {mode}") # mode: 190
# multimode: Lista de modas (valores más comunes de los datos).
multimode = statistics.multimode(ventas)
print(f"multimode: {multimode}") # multimode: [190, 210]
# quantiles: Divide los datos en intervalos con la misma probabilidad.
quantiles = statistics.quantiles(ventas)
print(f"quantiles: {quantiles}") # quantiles: [152.5, 182.5, 197.5]
## Medidas de dispersión: Estas funciones calculan una medida de cuánto tiende a desviarse la población o muestra de los valores típicos o promedios.
# pstdev: Desviación típica poblacional de los datos.
pstdev = statistics.pstdev(ventas)
print(f"pstdev: {pstdev}") # pstdev: 28.244345550137208
# pvariance: Varianza poblacional de los datos.
pvariance = statistics.pvariance(ventas)
print(f"pvariance: {pvariance}") # pvariance: 797.7430555555555
# stdev: Desviación típica muestral de los datos.
stdev = statistics.stdev(ventas)
print(f"stdev: {stdev}") # stdev: 29.50025680422378
# variance: Varianza muestral de los datos.
variance = statistics.variance(ventas)
print(f"variance: {variance}") # variance: 870.2651515151515
## Estadísticas para relaciones entre dos entradas: Estas funciones calculan estadísticas sobre las relaciones entre dos entradas.
ventas1 = [120,130,150,170,160,180,190,200,210,190,185,210]
ventas2 = [122,132,152,172,162,182,192,202,212,192,187,212]
print(f" Ventas 1 y 2: {ventas1},{ventas2}")
# covariance: Covarianza muestral de dos variables.
covariance = statistics.covariance(ventas1,ventas2)
print(f"covariance: {covariance}") # covariance: 870.2651515151515
# correlation: Coeficiente de correlación de Pearson y Spearman.
correlation = statistics.correlation(ventas1,ventas2)
print(f"correlation: {correlation}") # correlation: 1.0
# linear_regression: Pendiente e intersección para regresión lineal simple.
linear_regression = statistics.linear_regression(ventas1, ventas2)
print(f"linear_regression: {linear_regression}") # linear_regression: LinearRegression(slope=1.0, intercept=2.0)
# Resultados:
# Ventas: [120, 130, 150, 170, 160, 180, 190, 200, 210, 190, 185, 210]
# mean: 174.58333333333334
# fmean: 174.58333333333334
# geometric_mean: 172.09452944787978
# harmonic_mean: 169.40599236754534
# kde: <function kde.<locals>.pdf at 0x00000222DFE763E0>
# kde_random: <function kde_random.<locals>.rand at 0x00000222DFC4DDA0>
# median: 182.5
# median_low: 180
# median_high: 185
# median_grouped: 184.5
# mode: 190
# multimode: [190, 210]
# quantiles: [152.5, 182.5, 197.5]
# pstdev: 28.244345550137208
# pvariance: 797.7430555555555
# stdev: 29.50025680422378
# variance: 870.2651515151515
# Ventas 1 y 2: [120, 130, 150, 170, 160, 180, 190, 200, 210, 190, 185, 210],[122, 132, 152, 172, 162, 182, 192, 202, 212, 192, 187, 212]
# covariance: 870.2651515151515
# correlation: 1.0
# linear_regression: LinearRegression(slope=1.0, intercept=2.0)