Skip to content

Instantly share code, notes, and snippets.

@geopelia
Created May 25, 2019 19:57
Show Gist options
  • Save geopelia/f4529f01c13531595f1b6f9afcbc6a84 to your computer and use it in GitHub Desktop.
Save geopelia/f4529f01c13531595f1b6f9afcbc6a84 to your computer and use it in GitHub Desktop.
Extrae las fechas de un archivo, extrae dias de la semana y hora, muestra un grafico con el resumen de ocurrencias
import datetime
import dateutil.parser
import matplotlib.pyplot as plt
import calendar
def leer_archivo():
#lista_fechas = []
with open('fechasgit.txt', 'r') as archivotxt:
#print('open file')
#cant_lineas = 0
lista_fechas = [dateutil.parser.parse(linea) for linea in archivotxt]
#for linea in archivotxt:
# fecha = dateutil.parser.parse(linea)
# lista_fechas.append(fecha)
#cant_lineas = cant_lineas + 1
#if (cant_lineas > 5):
# break;
archivotxt.close()
#print('hay ' + str(len(lista_fechas)))
#print(str(lista_fechas[0].timetuple()))
return lista_fechas
def agrupar_horas(lista_fechas):
cant_horas = {k : [v.timetuple().tm_hour for v in lista_fechas].count(k) for k in range(24)}
#cant_horas = {i : 0 for i in range(24)}
#for fecha in lista_fechas:
# hora = fecha.timetuple().tm_hour
# if hora in cant_horas:
#cont = cant_horas[hora]
# cant_horas[hora] = cant_horas[hora] + 1
#print(cant_horas)
#validar_sumahoras(cant_horas)
return cant_horas
def agrupar_dias(lista_fechas):
#cant_dias = {i : 0 for i in range(7)}
cant_dias = {calendar.day_name[k] : [v.timetuple().tm_wday for v in lista_fechas].count(k) for k in range(7)}
#for fecha in lista_fechas:
# dia = fecha.timetuple().tm_wday
# if dia in cant_dias:
# cant_dias[dia] = cant_dias[dia] + 1
print(cant_dias)
return cant_dias
#def colocar_diasdelasemana(dict_dias):
def validar_sumahoras(dict_horas):
acumulador = 0
for valores in dict_horas.values():
acumulador = acumulador + valores
print('la suma de los valores del dict es ' + str(acumulador))
def dibujar_diagrama(diccionario,titulo, subtitulo, es_dia):
if es_dia:
orden_dias = {calendar.day_name[i]:i for i in range(7)}
valores_x = sorted(diccionario, key=orden_dias.__getitem__)
valores_y = [diccionario[x] for x in valores_x]
else:
valores_x = list(diccionario)
valores_y = list(diccionario.values())
plt.bar(valores_x, valores_y)
plt.ylabel('Cant commits')
plt.xlabel(subtitulo)
plt.title(titulo)
plt.show()
def main():
fechas = leer_archivo()
print('cant registros ' + str(len(fechas)))
dict_horas = agrupar_horas(fechas)
dict_dias = agrupar_dias(fechas)
dibujar_diagrama(dict_horas, 'Cantidad de commits por horas 24h', 'Horas', False)
#dibujar_diagrama(dict_dias,'Cantidad de commits por dias en la semana', 'Dias de la semana', True)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment