Neste passo-a-passo analisaremos um conjunto de dados referente às ocorrências policiais registradas na Grande São Paulo durante o ano de 2016. Os dados estão disponíveis aqui. A tabela a seguir apresenta os campos e uma breve descrição deles.
Campo | Descrição |
---|---|
NUM_BO | Ano da ocorrencia |
ANO_BO | Número do BO |
ID_DELEGACIA | Código da delegacia responsável pelo registro da ocorrencia |
NOME_DEPARTAMENTO | Departamento responsável pelo registro |
NOME_SECCIONAL | Delegacia Seccional responsável pelo registro |
DELEGACIA | Delegacia responsável pelo registro |
NOME_DEPARTAMENTO_CIRC | Departamento responsável pela área onde houve a ocorrencia |
NOME_SECCIONAL_CIRC | Delegacia Seccional responsável pela área onde houve a ocorrencia |
NOME_DELEGACIA_CIRC | Delegacia responsável pela área onde houve a ocorrencia |
ANO | Ano do registro |
MES | Mês do registro |
DATA_OCORRENCIA_BO | Data do fato |
HORA_OCORRENCIA_BO | Hora do fato |
FLAG_STATUS | Indica se é crime consumado ou tentado |
RUBRICA | Natureza juridica da ocorrencia |
DESDOBRAMENTO | Desdobramentos juridicos envolvidos na ocorrencia |
CONDUTA | Tipo de local ou circunstancia que qualifica a ocorrencia |
LATITUDE | Coordenadas geograficas |
LONGITUDE | Coordenadas geograficas |
CIDADE | Municipio de registro da ocorrencia |
LOGRADOURO | Logradouro do fato |
NUMERO_LOGRADOURO | Número do Logradouro do fato |
FLAG_STATUS | Indica se é crime consumado ou tentado |
DESCR_TIPO_PESSOA | Indica o tipo de envolvimento da pessoa na ocorrencia |
CONT_PESSOA | Indica ordem de registro da pessoa no BO |
SEXO_PESSOA | Sexo da pessoa relacionada |
IDADE_PESSOA | Idade da pessoa relacionada |
COR | Cor/raça da pessoa relacionada |
DESCR_PROFISSAO | Profissão da pessoa |
DESCR_GRAU_INSTRUCAO | Grau de intrução da pessoa |
In [1]:
import numpy
import pandas
from matplotlib import pyplot
%matplotlib inline
pyplot.style.use('fivethirtyeight')
pyplot.rcParams['figure.figsize'] = [11, 8]
In [2]:
url = '../dat/boletins_ocorrencia_sp_clean_2016.csv.gz'
dat = pandas.read_csv(url, encoding='ISO-8859-1', low_memory=False)
In [3]:
dat.describe()
Out[3]:
In [4]:
dat.head()
Out[4]:
In [5]:
dat['CIDADE'] = dat['CIDADE'].map(lambda x: x.strip())
In [6]:
table = pandas.pivot_table(dat, index=['CIDADE'], columns=['ANO'],
values='NUM_BO', aggfunc=numpy.count_nonzero)
ax = table.plot(title='Distribuição de ocorrências por município', kind='bar',
legend=False)
pyplot.tight_layout()
In [7]:
table = pandas.pivot_table(dat, index=['ANO', 'MES'], columns=['CIDADE'],
values='NUM_BO', aggfunc=numpy.count_nonzero)
ax = table.plot(title='Série temporal de boletins de ocorrência por município',
legend=False)
pyplot.tight_layout()
In [8]:
table = pandas.pivot_table(dat, columns=['CONDUTA'], values='NUM_BO')
ax = table.plot(kind='bar', title='Número de ocorrências por conduta')
pyplot.tight_layout()
In [9]:
table = pandas.pivot_table(dat, index=['ANO', 'MES'], columns=['CONDUTA'],
values='NUM_BO', aggfunc=numpy.count_nonzero)
table.plot(title='Série temporal de boletins de ocorrência por conduta', legend=False)
Out[9]:
In [10]:
lon, lat = dat['LONGITUDE'], dat['LATITUDE']
pyplot.plot(lon, lat, '.')
pyplot.show()
In [ ]: