Analisis tiempo mediao pagina hecho

parent 5fe53eed
This diff could not be displayed because it is too large.
from Filtros import ordenarPorSesion
from Filtros import getDistintasSesiones
import math
......@@ -21,10 +22,7 @@ def estadisticasDuracionSesiones(registros):
# Ordeno las tuplas por registros
reg = ordenarPorSesion(registros)
# Miro los distintos ids de Sesion que hay
distintos = set()
for r in reg:
distintos.add(r.idSesion)
distintos = list(distintos)
distintos = getDistintasSesiones(registros)
# Para cada id distinto calculo su duracion y la incorporo al array donde el indice sera el orden de la sesion
# en el array de distintos y el contenido será la duracion
duraciones = []
......
from idsUsuarioSesion import ordenaRegistros
from Filtros import getDistintasSesiones
#Pasado el id de sesion y la pagina, se suma el tiempo que ha pasado el usuario desde que accedio a la pagina hasta que
#cambio de pagina
def getTiempoEnPagina(id,pagina,registros):
s=0#<-- Suma de los tiempos pasados entre paginas
for i in range(len(registros)-1):
if registros[i].url==pagina and registros[i].idSesion==id and registros[i+1].idSesion==id:
s+=abs(registros[i+1].marcaTiempo-registros[i].marcaTiempo)
return s
def analisisTiempoMedioPorPagina(registros):
#Ordeno los registros por sesion
reg=ordenaRegistros(registros,1800)
#Obtengo los id de las sesiones existentes
idsExistentes=getDistintasSesiones(reg)
#Obtengo las distintas paginas existentes
paginas=set()
for r in registros:
paginas.add(r.url)
paginas=list(paginas)
#Creo una lista para guardar el tiempo medio que han pasado los usuarios en las paginas
tiempos=[]#El indice del vector tiempos es igual al indice vector paginas
max=-1
for pag in paginas:
suma=0
c=0
for sesion in idsExistentes:
suma+=getTiempoEnPagina(sesion,pag,reg)
c+=1
if c!=0:
t=round(suma/c, 2)
tiempos.append(t)
if t > max:
max=t
else:
tiempos.append(0)
#Creo el histograma
histograma=[]
max=int(max)+2
for i in range(max):
histograma.append(0)
#Relleno el histograma
for t in tiempos:
histograma[int(round(t,0))]+=1
return paginas, tiempos,histograma
......@@ -3,4 +3,11 @@ def ordenarPorSesion(registros):
for j in range(len(registros)):
if registros[i].idSesion < registros[j].idSesion:
registros[i], registros[j] = registros[j], registros[i]
return registros
\ No newline at end of file
return registros
def getDistintasSesiones(registros):
s=set ()
for r in registros:
s.add(r.idSesion)
return list(s)
from ObtencionRegistro import obtenerRegistros
from idsUsuarioSesion import ordenaRegistros
from Filtros import ordenarPorSesion
from Cesta import obtenerDirectorios
from Cesta import obtenerCestaTransformada
from AnalisisDuracionSesion import estadisticasDuracionSesiones
from AnalisisTMedioPagina import analisisTiempoMedioPorPagina
RUTA_ARCHIVO = "../access_log_Aug95_reducido"
E_SPIDERING = True
......@@ -75,11 +77,10 @@ cesta = obtenerCestaTransformada(d, ses)
printCestaTransformada(cesta)
'''
histograma, media, moda, maxDur, minDur, desviacionTipica = estadisticasDuracionSesiones(r)
print("Media:", media)
print("Moda:", moda)
print("Maximo:", maxDur)
print("Minimo:", minDur)
print("DV:", desviacionTipica)
print("Histograma:", histograma)
paginas,tiempos,hist=analisisTiempoMedioPorPagina(r)
for i in range(len(paginas)):
print(paginas[i]," ",tiempos[i])
print(hist)
......@@ -31,7 +31,7 @@ def ordenaRegistros(registros, umbral):
registros[i] = reg2
registros[j + i] = reg1
else: # Se organiza por marca de tiempo si son iguales
if reg2.idUsuario is reg1.idUsuario and reg2.marcaTiempo > reg1.marcaTiempo:
if reg2.idUsuario is reg1.idUsuario and reg2.marcaTiempo < reg1.marcaTiempo:
registros[i] = reg2
registros[j + i] = reg1
......
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