Aniversario Perú , noticias Miércoles, 25 diciembre 2013

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):

Número de incendios reportados por día

Número de incendios reportados por día

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()

Aniversario Perú

soy Biólogo, PhD. Hobbies: investigador en usos de las TIC, periodismo de datos, nerd, etc.