import pandas as pd acidentes = pd.read_csv('2013_acidentes-1o_Semestre.csv', sep=';', parse_dates=[7]) veiculos = pd.read_csv('2013_veiculos-1o_Semestre.csv', sep=';') vitimas = pd.read_csv('2013_vitimas-1o_Semestre.csv', sep=';') hist_veiculo = veiculos.tipo_veiculo.value_counts() horizontal_axis = linspace(0.5, 1.5 + len(hist_veiculo.values), num=len(hist_veiculo.values)) bar(horizontal_axis, hist_veiculo.values, width=1, align='center') xticks(horizontal_axis, hist_veiculo.keys()) hist_distrito = acidentes['distrito'].value_counts() horizontal_axis = linspace(0.5, 0.5 + len(hist_distrito.values), num=len(hist_distrito.values)) bar(horizontal_axis, hist_distrito.values, width=1, align='center') import json topo = json.load(open("distritos.topo")) dis_info = [(dis['properties']['Name'], dis['id']) for dis in topo['objects']['distritos']['geometries']] dis_info distritos['name'] hist_escolaridade = make_hist(vitimas, 'escolaridade') dist_esc_s = sorted(hist_escolaridade.items(), key=lambda x: x[1]) bar(range(len(dist_esc_s)), [a[1] for a in dist_esc_s]) xticks(range(len(dist_esc_s)), [a[0] for a in dist_esc_s]) hist_sexo = make_hist(vitimas, "sexo") bar(range(3), hist_sexo.values()) xticks(range(3), ("X", "M", "F")) hist_sexo hist_tipo = make_hist(vitimas, "tipo_vitima") for t,v in hist_tipo.items(): print t, v hist_drunk = make_hist(vitimas, "estado_alcoolizacao") hist_drunk semanal = [x.dayofweek for x in acidentes.data] hist_semanal = make_hist(semanal) bar(range(7), hist_semanal.values()) mensal = [x.day for x in acidentes.data] hist_mensal = make_hist(mensal) bar(hist_mensal.keys(), hist_mensal.values()) habilitacao = make_hist(veiculos, "categoria_habilitacao") habilitacao idade = make_hist(vitimas, 'idade') del(idade['SI']) idade_tp = [(int(k), v) for k,v in idade.items()] idade_s = sorted(idade_tp, key=lambda x: x[0]) plot(map (lambda x: x[0], idade_s), map (lambda x: x[1], idade_s)) import unicodedata distritos = pd.read_csv('distritos.csv', sep=',') ads = acidentes['distrito'] s1 = set(ads.unique()) s2 = set([unicodedata.normalize('NFKD', x.decode('utf8')).encode('ASCII', 'ignore') for x in distritos['name']]) print s1 - s2 import difflib #hist_dist = make_hist(acidentes, 'distrito') # Adicionando uma nova coluna #distritos['acidentes'] = 0 #distritos['no_accents_name'] = '' #distritos['map_id'] = 0 for dist_name, dist_id in dis_info: pd_dist_name = difflib.get_close_matches(dist_name, map(lambda x: x.decode('utf8'), distritos['name']))[0] distritos.ix[distritos['name'].map(lambda x: x.decode('utf8') == pd_dist_name), 'no_accents_name'] = dist_name.encode('utf8') distritos.ix[distritos['name'].map(lambda x: x.decode('utf8') == pd_dist_name), 'map_id'] = dist_id # distritos.ix[distritos['name'].map(lambda x: unicodedata.normalize('NFKD', x.decode('utf8')).encode('ASCII', 'ignore')[:15] == k), 'acidentes'] = v hist_dist = make_hist(acidentes, 'distrito') # Adicionando uma nova coluna distritos['acidentes'] = 0 for k, v in hist_dist.items(): # IMPORTANTE! É necessário utilizar o índice .ix caso contrário o view retornado pelo índice não será mutável distritos.ix[distritos['name'].map(lambda x: unicodedata.normalize('NFKD', x.decode('utf8')).encode('ASCII', 'ignore')[:15] == k), 'acidentes'] = v # Criando o novo arquivo CSV para ser importado pelo cartodb distritos.to_csv('distritos-acidentes.csv')