Created
May 25, 2019 19:57
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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