Proyecto finalizado

parent a63973c8
import matplotlib.pyplot as plt
import statistics as stat
from tkinter import messagebox
......@@ -12,9 +13,9 @@ def getRelacionVisitasDuracion(reg):
# Se obtiene la ecuacion de regresión estimada según los máximos y mínimos
ecuacion = obtenerRegresion(paginas, tiempo)
x0 = min(paginas)
y0 = x0*ecuacion[0] + ecuacion[1]
y0 = x0 * ecuacion[0] + ecuacion[1]
x1 = max(paginas)
y1 = x1*ecuacion[0] + ecuacion[1]
y1 = x1 * ecuacion[0] + ecuacion[1]
plt.plot([x0, x1], [y0, y1], marker='o')
# Mostramos el gráfico y devolvemos la pendiente (ecuacion[0] con el tiempo medio de pagina)
......@@ -23,7 +24,8 @@ def getRelacionVisitasDuracion(reg):
plt.xlabel("Tiempo total de la Sesion")
plt.show()
datos = "Tiempo Medio de Pagina: {}. Pendiente: {}."
messagebox.showinfo(message=datos.format(tiempoMedioPagina, ecuacion[0]), title="Comparación tiempo medio con pendiente del modelo")
messagebox.showinfo(message=datos.format(tiempoMedioPagina, ecuacion[0]),
title="Comparación tiempo medio con pendiente del modelo")
def getPaginasVisitas(reg):
......@@ -37,16 +39,16 @@ def getPaginasVisitas(reg):
for i in range(tam):
r = reg[i]
if i < tam - 1:
tiempoPagina.append(reg[i+1].Marca_Tiempo - r.Marca_Tiempo)
if r.ID_Sesion == reg[i+1].ID_Sesion: # Si es la misma sesion se incrementan valores
tiempoPagina.append(reg[i + 1].Marca_Tiempo - r.Marca_Tiempo)
if r.ID_Sesion == reg[i + 1].ID_Sesion: # Si es la misma sesion se incrementan valores
paginas[index] += 1
tiempoVisita[index] = reg[i+1].Marca_Tiempo
else: # Si no se crea nueva
tiempoVisita[index] = reg[i + 1].Marca_Tiempo
else: # Si no se crea nueva
index += 1
paginas.append(1)
tiempoVisita.append(0)
tiempoMedioPag = sum(tiempoPagina)/len(tiempoPagina)
tiempoMedioPag = sum(tiempoPagina) / len(tiempoPagina)
return paginas, tiempoVisita, tiempoMedioPag
......@@ -56,8 +58,8 @@ def obtenerRegresion(paginas, tiempo):
tam = len(paginas)
# Obtenemos medias aritmeticas
medx = sum(paginas)/tam
medy = sum(tiempo)/tam
medx = sum(paginas) / tam
medy = sum(tiempo) / tam
# Obtenemos la covarianza y varianza de y
xy = 0
......@@ -67,13 +69,71 @@ def obtenerRegresion(paginas, tiempo):
xy += paginas[i] * tiempo[i]
sqx += paginas[i] * paginas[i]
sqy += tiempo[i] * tiempo[i]
cov = xy/tam - medx*medy
vay = sqy/tam - medy*medy
cov = xy / tam - medx * medy
vay = sqy / tam - medy * medy
# Obtenemos la recta de regresión de Y sobre X, y = cov/vay(x - medx) + medy
Ax = cov/vay
Ax = cov / vay
Bc = Ax * medx + medy
ecuacion.append(Ax) # Para Ax
ecuacion.append(Bc) # Para B
return ecuacion
def getDuracionPrimerasVisitas(reg):
# Obtenemos duraciones de primeras dos paginas (index se considera num sesion)
duraciones1, duraciones2, sesiones = getDuraciones(reg)
tam = len(duraciones1)
# Realizamos histogramas de duración de visitas de la duracion de las primeras paginas
plt.hist(x=duraciones1, bins=max(duraciones1) + 1, color='#F2AB6D', rwidth=0.85)
plt.ylabel("Frecuencia")
plt.xlabel("Tiempo de primera visita")
plt.title("Histograma: ")
plt.show()
# Obtenemos estadísticos habituales de ambas y los mostramos
media1, desv1, mediana1, moda1, minimo1, maximo1 = getEstadisticas(duraciones1, tam)
media2, desv2, mediana2, moda2, minimo2, maximo2 = getEstadisticas(duraciones2, tam)
datos = "{} -\n Media: {}. Desviación estándar: {}. Mediana: {}. Moda: {}. Mínimo: {}. Maximo: {}"
messagebox.showinfo(message=datos.format("PRIMERA PÁGINA - ", media1, desv1, mediana1, moda1, minimo1, maximo1),
title="Estadísticas Primeras Páginas: ")
messagebox.showinfo(message=datos.format("SEGUNDA PÁGINA - ", media2, desv2, mediana2, moda2, minimo2, maximo2),
title="Estadísticas Segundas Páginas: ")
def getDuraciones(reg):
duraciones1 = []
duraciones2 = []
sesiones = []
tam = len(reg)
for i in range(tam): # Si quedan hasta 2 sesiones mas se podran obtener las dos visitas de paginas
if tam - 2 > i:
r1 = reg[i]
r2 = reg[i + 1]
r3 = reg[i + 2]
sesion = r1.ID_Sesion
if sesion not in sesiones: # Si no ha sido introducido ya, si hay hasta 3 acceso en esa sesion, agrega las duraciones
if r1.ID_Sesion == r3.ID_Sesion:
duraciones1.append(r2.Marca_Tiempo - r1.Marca_Tiempo)
duraciones2.append(r3.Marca_Tiempo - r2.Marca_Tiempo)
sesiones.append(sesion)
return duraciones1, duraciones2, sesiones
def getEstadisticas(duraciones, tam):
# Obtenemos media, desviacion y mediana
media = sum(duraciones) / tam
desv = stat.stdev(duraciones)
mediana = stat.median(duraciones)
# Obtenemos moda, minimo y maximo
moda = stat.mode(duraciones)
minimo = min(duraciones)
maximo = max(duraciones)
return media, desv, mediana, moda, minimo, maximo
......@@ -16,7 +16,7 @@ from VentanaAbrir import VentanaAbrir
from About_GUI import VentanaAbout
from TransfCesta import TransformarCesta
from AnalisisRelacionVisitasDuracion import getRelacionVisitasDuracion
# from AnalisisRelacionVisitasDuracion import getDuracionPrimerasVisitas
from AnalisisRelacionVisitasDuracion import getDuracionPrimerasVisitas
def f_abrir():
RUTA_ARCHIVO = filedialog.askopenfilename(initialdir="/", title="Seleccione fichero",
......@@ -105,7 +105,7 @@ def fRelVisDur():
def fDurVis():
if len(REG) > 0:
return #getDuracionPrimerasVisitas(REG)
getDuracionPrimerasVisitas(REG)
def barraMenu(ventana):
# DEFINIR BARRA DE MENÚ DE LA APLICACION:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment