-
Notifications
You must be signed in to change notification settings - Fork 2
/
dados.py
93 lines (72 loc) · 2.39 KB
/
dados.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import urllib
import pandas as pd
from json import loads
from datetime import datetime
from datetime import timedelta
from datetime import timezone
meses = {
1: 'Janeiro',
2: 'Fevereiro',
3: 'Março',
4: 'Abril',
5: 'Maio',
6: 'Junho',
7: 'Julho',
8: 'Agosto',
9: 'Setembro',
10: 'Outubro',
11: 'Novembro',
12: 'Dezembro'
}
traduz_tipos = {
'sugestapso': 'Sugestão',
'solicitaassapso': 'Solicitação',
'daovida': 'Dúvida',
'reclamaassapso': 'Reclamação',
'denaoncia': 'Denúncia',
'elogio': 'Elogio',
'pedido-de-acesso-a-informaassapso': 'Pedido de acesso à informação',
}
traduz_estados = {
'accepted': 'Aceito',
'pending': 'Pendente',
'rejected': 'Rejeitada',
'resolved': 'Resolvida',
'moving': 'Tramitando',
}
def iso_string_to_datetime(string_date):
return datetime.strptime(string_date.replace(':', ''), '%Y-%m-%dT%H%M%S%z')
def load_json_data(filename):
if filename.startswith('http'):
json_data = urllib.request.urlopen(filename).read().decode('utf-8')
else:
with open(filename) as json_file:
json_data = json_file.read()
claims_json = loads(json_data)
claims = sorted(claims_json['claims'], key=lambda x:x['uri'])
return claims
def to_month_name(some_date):
return '{:02d} - {}'.format(some_date.month, meses[some_date.month])
def to_mes_ano(some_date):
return '{}/{}'.format(meses[some_date.month][:3], some_date.year)
def titulo_do_tipo(tipo):
return traduz_tipos[tipo]
def titulo_do_estado(estado):
return traduz_estados[estado]
def prepara_dados(arquivo='http://www.ouvidoria.curitiba.pr.leg.br/@@ombudsman-json'):
claims = load_json_data(arquivo)
# return normaliza_dados(claims)
return claims
def normaliza_dados(claims):
dados = pd.io.json.json_normalize(claims)
dados['creation_date'] = localiza(dados['creation_date'])
dados['mes'] = dados['creation_date'].apply(to_month_name)
dados['mesano'] = dados['creation_date'].apply(to_mes_ano)
dados['tipo'] = dados['kind'].apply(titulo_do_tipo)
dados['estado'] = dados['review_state'].apply(titulo_do_estado)
return dados
def localiza(creation_date):
creation_date = creation_date.astype('datetime64')
creation_date = creation_date.dt.tz_localize('UTC')
creation_date = creation_date.dt.tz_convert('America/Sao_Paulo')
return creation_date