Feliz navidad, con incendio, para todos
Aniversario Perú
soy Biólogo, PhD. Hobbies: investigador en usos de las TIC, periodismo de datos, nerd, etc.Viendo el tuiter me doy cuenta que @bomberos e incendio son trending topic a tempranas horas de este 25 de Diciembre.
Muchos tuiteros reportan alta actividad de los bomberos por incendios causados supuestamente por los fuegos pirotécnicos.
Pero, es cierto que hay un número inusualmente alto de incendios reportados hoy 25 de Diciembre? no serán quejas infundadas de caviares anti-piroténicos?
Para averiguar necesitamos datos puros y duros. Es posible analizar los tuits emitidos por la cuenta @bomberos y plotear el número de incendios reportados por día a lo largo del tiempo, digamos durante el mes de Diciembre.
Usando el cliente de tuiter «t», te puedes descargar todos los 3200 tuits más recientes de los @bomberos
t timeline -l -c -n 3200 bomberos > tuits.txt
Podemos seleccionar sólo aquellos que incluyan la palabra INCENDIO:
cat tuits.txt | grep INCENDIO > tuits_incendio.txt
Y podemos hacer el gráfico del número reportes de incendios por día durante el mes de Diciembre usando Python y Matplotlib (ver sección geek):
Como ves se reportan alrededor de 25 incendios por día durante casi todo el mes de Diciembre. Pero hoy día de la navidad, del niño manuelito, día de reventar mamarratas se van registrando hasta 40 tuits con reportes de incendio. Hay un incremento de poco más del 50% en el número de incendios.
Chequea el timeline de la cuenta @bomberos si no me crees.
Feliz navidad!
Sección geek
Código para plotear los tuits:
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys import codecs import re import datetime import time from itertools import groupby import numpy as np import matplotlib.pyplot as plt import brewer2mpl f = codecs.open(sys.argv[1].strip(), "r", "utf-8") datos = f.readlines() f.close() timestamps = [] counting = [] x = [] for line in datos: line = line.strip() if re.search("^[0-9]{6,},", line): line = line.split(",") fecha = line[1] unix_time = time.mktime(datetime.datetime.strptime(fecha, "%Y-%m-%d %H:%M:%S +%f").timetuple()) # correct for local time Lima -5 hours unix_time -= 60*60*5 #print unix_time fecha = fecha.split(" ")[0] my_time = datetime.datetime.strptime(fecha, "%Y-%m-%d") if my_time not in timestamps: timestamps.append(my_time) counting.append(fecha) if fecha not in x: x.append(fecha) # de reversa timestamp = timestamps[::-1] y_axis = [len(list(group)) for key, group in groupby(counting)] # queremos color set2 = brewer2mpl.get_map('Set2', 'qualitative', 8).mpl_colors color = set2[0] fig, ax = plt.subplots(1) plt.plot(timestamps, y_axis, color=color) plt.xticks(rotation="45") plt.ylabel(u"Número de tuits por día") plt.title(u'Reportes de incendio desde la cuenta @bomberos') plt.tight_layout() plt.savefig("timeline" + sys.argv[1].strip() + ".png") sys.exit()