É fato que a violência atinge todas as cidades do Brasil, e vem ganhando destaque nos noticiários cada vez mais.
Atualmente, as leis de acesso à informação e a conscientização dos orgãos públicos, vêm proporcionando a disponibilidade de várias fontes de dados. Neste exemplo, o Governo do Rio de Janeiro vem trazendo a iniciativa do portal ISP Dados. Neste projeto, faremos uma análise em cima dos indicadores estatísticos da violência no Rio, explorando alguns dos dados fornecidos.
Os dados foram obtidos diretamente do Portal ISP Dados, que é uma página de dados abertos do Instituto de Segurança Pública do Rio de Janeiro.
As estatísticas divulgadas no portal são construídas a partir dos Registros de Ocorrência(RO) lavrados nas Delegacias de Polícia Civil do Estado do Rio de Janeiro, além de informações complementares de orgãos específicos da Polícia Militar do Estado do Rio de Janeiro.
Como forma de criar um controle de qualidade, antes de serem consolidados no ISP o RO é submetido à Corregedoria Interna da Polícia Civil(COINPOL). As estatísticas produzidas se baseiam na data em que foi confeccionado o Registro de Ocorrência.
Inicialmente iremos importar a biblioteca Pandas e o Numpy seguido dos dados deste link, usando df = pd.read_csv("endereço_do_csv")
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv("https://raw.githubusercontent.com/anssodre/datasets/master/violencia_rio.csv")
Antes de começarmos a explorar o dataset, é preciso saber com o que estamos lidando. Para começarmos a entender melhor esse aspecto, vamos verificar as dimensões do dataset.
shape
)columns
)dtypes
)head
)# verificar o tamanho do DataFrame
print("Variáveis: ", df.shape[1])
print("Entradas: ", df.shape[0])
Variáveis: 56
Entradas: 344
Usamos o df.shape
para exibir o tamanho do Dataframe, sendo df.shape[1]
o número de colunas e df.shape[0]
o número de linhas.
Agora que já sabemos com a dimensão dos dados com que estamos lidando, vamos verificar que tipo de dados nós temos, verificando as variáveis existentes no nosso conjunto de dados.
#imprimir o nome das colunas
df.columns
Index(['vano', 'mes', 'hom_doloso', 'lesao_corp_morte', 'latrocinio',
'hom_por_interv_policial', 'tentat_hom', 'lesao_corp_dolosa', 'estupro',
'hom_culposo', 'lesao_corp_culposa', 'roubo_comercio',
'roubo_residencia', 'roubo_veiculo', 'roubo_carga', 'roubo_transeunte',
'roubo_em_coletivo', 'roubo_banco', 'roubo_cx_eletronico',
'roubo_celular', 'roubo_conducao_saque', 'roubo_apos_saque',
'roubo_bicicleta', 'outros_roubos', 'total_roubos', 'furto_veiculos',
'furto_transeunte', 'furto_coletivo', 'furto_celular',
'furto_bicicleta', 'outros_furtos', 'total_furtos', 'sequestro',
'extorsao', 'sequestro_relampago', 'estelionato', 'apreensao_drogas',
'posse_drogas', 'trafico_drogas', 'apreensao_drogas_sem_autor',
'recuperacao_veiculos', 'apf', 'aaapai', 'cmp', 'cmba', 'ameaca',
'pessoas_desaparecidas', 'encontro_cadaver', 'encontro_ossada',
'pol_militares_mortos_serv', 'pol_civis_mortos_serv',
'indicador_letalidade', 'indicador_roubo_rua', 'indicador_roubo_veic',
'registro_ocorrencias', 'fase'],
dtype='object')
Sabendo com quantas variáveis e linhas estamos lidando, e que tipo de informação vamos encontrar no dataset, é importante analisarmos o tipo de cada variável que temos.
Esse tipo de informação é bastante útil, e nos ajudará a direcionar nosso trabalho na fase de limpeza dos dados.
# ver os tipos das variáveis
df.dtypes
vano int64
mes int64
hom_doloso int64
lesao_corp_morte float64
latrocinio int64
hom_por_interv_policial float64
tentat_hom int64
lesao_corp_dolosa int64
estupro float64
hom_culposo float64
lesao_corp_culposa float64
roubo_comercio int64
roubo_residencia int64
roubo_veiculo int64
roubo_carga int64
roubo_transeunte int64
roubo_em_coletivo int64
roubo_banco int64
roubo_cx_eletronico float64
roubo_celular float64
roubo_conducao_saque float64
roubo_apos_saque float64
roubo_bicicleta float64
outros_roubos int64
total_roubos int64
furto_veiculos int64
furto_transeunte int64
furto_coletivo float64
furto_celular float64
furto_bicicleta float64
outros_furtos int64
total_furtos int64
sequestro float64
extorsao float64
sequestro_relampago float64
estelionato float64
apreensao_drogas int64
posse_drogas float64
trafico_drogas float64
apreensao_drogas_sem_autor float64
recuperacao_veiculos int64
apf float64
aaapai float64
cmp float64
cmba float64
ameaca float64
pessoas_desaparecidas float64
encontro_cadaver int64
encontro_ossada float64
pol_militares_mortos_serv float64
pol_civis_mortos_serv float64
indicador_letalidade int64
indicador_roubo_rua int64
indicador_roubo_veic int64
registro_ocorrencias float64
fase int64
dtype: object
Aqui é interessante notar que todas as variáveis presentes no dataset são do tipo numérico, sejam elas int
ou float
.
Com tudo isso em mente, é hora de darmos uma olhada nesse dataset e ver como ele está organizado, como esses dados são apresentados e termos uma ideia do que podemos fazer com eles.
# ver as 5 primeiras entradas do dataset
df.head()
vano | mes | hom_doloso | lesao_corp_morte | latrocinio | hom_por_interv_policial | tentat_hom | lesao_corp_dolosa | estupro | hom_culposo | lesao_corp_culposa | roubo_comercio | roubo_residencia | roubo_veiculo | roubo_carga | roubo_transeunte | roubo_em_coletivo | roubo_banco | roubo_cx_eletronico | roubo_celular | roubo_conducao_saque | roubo_apos_saque | roubo_bicicleta | outros_roubos | total_roubos | furto_veiculos | furto_transeunte | furto_coletivo | furto_celular | furto_bicicleta | outros_furtos | total_furtos | sequestro | extorsao | sequestro_relampago | estelionato | apreensao_drogas | posse_drogas | trafico_drogas | apreensao_drogas_sem_autor | recuperacao_veiculos | apf | aaapai | cmp | cmba | ameaca | pessoas_desaparecidas | encontro_cadaver | encontro_ossada | pol_militares_mortos_serv | pol_civis_mortos_serv | indicador_letalidade | indicador_roubo_rua | indicador_roubo_veic | registro_ocorrencias | fase | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1991 | 1 | 657 | NaN | 15 | NaN | 162 | 3051 | NaN | NaN | NaN | 350 | 188 | 1174 | 63 | 967 | 381 | 37 | NaN | NaN | NaN | NaN | NaN | 158 | 3318 | 2009 | 1147 | NaN | NaN | NaN | 3561 | 6717 | NaN | NaN | NaN | NaN | 133 | NaN | NaN | NaN | 872 | NaN | NaN | NaN | NaN | NaN | NaN | 217 | NaN | NaN | NaN | 672 | 1348 | 1174 | NaN | 3 |
1 | 1991 | 2 | 732 | NaN | 17 | NaN | 175 | 3421 | NaN | NaN | NaN | 357 | 171 | 1097 | 64 | 963 | 432 | 35 | NaN | NaN | NaN | NaN | NaN | 142 | 3261 | 1850 | 1066 | NaN | NaN | NaN | 3309 | 6225 | NaN | NaN | NaN | NaN | 127 | NaN | NaN | NaN | 751 | NaN | NaN | NaN | NaN | NaN | NaN | 209 | NaN | NaN | NaN | 749 | 1395 | 1097 | NaN | 3 |
2 | 1991 | 3 | 713 | NaN | 25 | NaN | 216 | 3613 | NaN | NaN | NaN | 443 | 191 | 1265 | 71 | 963 | 422 | 43 | NaN | NaN | NaN | NaN | NaN | 131 | 3529 | 2084 | 1062 | NaN | NaN | NaN | 3573 | 6719 | NaN | NaN | NaN | NaN | 80 | NaN | NaN | NaN | 789 | NaN | NaN | NaN | NaN | NaN | NaN | 188 | NaN | NaN | NaN | 738 | 1385 | 1265 | NaN | 3 |
3 | 1991 | 4 | 634 | NaN | 20 | NaN | 200 | 3211 | NaN | NaN | NaN | 425 | 199 | 1415 | 81 | 1186 | 354 | 36 | NaN | NaN | NaN | NaN | NaN | 112 | 3808 | 2085 | 1195 | NaN | NaN | NaN | 3290 | 6570 | NaN | NaN | NaN | NaN | 133 | NaN | NaN | NaN | 787 | NaN | NaN | NaN | NaN | NaN | NaN | 140 | NaN | NaN | NaN | 654 | 1540 | 1415 | NaN | 3 |
4 | 1991 | 5 | 650 | NaN | 20 | NaN | 146 | 3051 | NaN | NaN | NaN | 553 | 231 | 1449 | 82 | 931 | 335 | 27 | NaN | NaN | NaN | NaN | NaN | 147 | 3755 | 2185 | 723 | NaN | NaN | NaN | 3546 | 6454 | NaN | NaN | NaN | NaN | 163 | NaN | NaN | NaN | 845 | NaN | NaN | NaN | NaN | NaN | NaN | 78 | NaN | NaN | NaN | 670 | 1266 | 1449 | NaN | 3 |
# ver as 5 últimas entradas do dataset
df.tail()
vano | mes | hom_doloso | lesao_corp_morte | latrocinio | hom_por_interv_policial | tentat_hom | lesao_corp_dolosa | estupro | hom_culposo | lesao_corp_culposa | roubo_comercio | roubo_residencia | roubo_veiculo | roubo_carga | roubo_transeunte | roubo_em_coletivo | roubo_banco | roubo_cx_eletronico | roubo_celular | roubo_conducao_saque | roubo_apos_saque | roubo_bicicleta | outros_roubos | total_roubos | furto_veiculos | furto_transeunte | furto_coletivo | furto_celular | furto_bicicleta | outros_furtos | total_furtos | sequestro | extorsao | sequestro_relampago | estelionato | apreensao_drogas | posse_drogas | trafico_drogas | apreensao_drogas_sem_autor | recuperacao_veiculos | apf | aaapai | cmp | cmba | ameaca | pessoas_desaparecidas | encontro_cadaver | encontro_ossada | pol_militares_mortos_serv | pol_civis_mortos_serv | indicador_letalidade | indicador_roubo_rua | indicador_roubo_veic | registro_ocorrencias | fase | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
339 | 2019 | 4 | 360 | 1.0 | 11 | 124.0 | 466 | 5573 | 483.0 | 172.0 | 2182.0 | 502 | 124 | 3755 | 667 | 7031 | 1585 | 2 | 4.0 | 2424.0 | 10.0 | 82.0 | 23.0 | 2245 | 18454 | 1244 | 1519 | 607.0 | 1318.0 | 211.0 | 7633 | 12532 | 0.0 | 151.0 | 11.0 | 3260.0 | 1909 | 745.0 | 1021.0 | 187.0 | 2624 | 3128.0 | 497.0 | 1648.0 | 350.0 | 5310.0 | 408.0 | 22 | 3.0 | 1.0 | 0.0 | 496 | 11040 | 3755 | 67797.0 | 3 |
340 | 2019 | 5 | 345 | 2.0 | 15 | 172.0 | 478 | 4958 | 465.0 | 145.0 | 2304.0 | 514 | 93 | 3649 | 710 | 7332 | 1625 | 1 | 3.0 | 2427.0 | 9.0 | 87.0 | 7.0 | 2216 | 18673 | 1480 | 1475 | 715.0 | 1423.0 | 220.0 | 7711 | 13024 | 0.0 | 147.0 | 7.0 | 3498.0 | 2034 | 735.0 | 1133.0 | 199.0 | 2450 | 3169.0 | 527.0 | 1771.0 | 248.0 | 5068.0 | 390.0 | 20 | 1.0 | 0.0 | 0.0 | 534 | 11384 | 3649 | 68336.0 | 3 |
341 | 2019 | 6 | 332 | 3.0 | 8 | 153.0 | 436 | 4769 | 414.0 | 152.0 | 2481.0 | 382 | 85 | 3115 | 599 | 6077 | 1287 | 1 | 4.0 | 2187.0 | 19.0 | 83.0 | 9.0 | 1984 | 15832 | 1251 | 1443 | 630.0 | 1345.0 | 189.0 | 7224 | 12082 | 0.0 | 133.0 | 6.0 | 3029.0 | 1854 | 763.0 | 976.0 | 158.0 | 2041 | 2848.0 | 467.0 | 1585.0 | 233.0 | 4497.0 | 403.0 | 20 | 1.0 | 3.0 | 0.0 | 496 | 9551 | 3115 | 61202.0 | 3 |
342 | 2019 | 7 | 309 | 5.0 | 10 | 194.0 | 399 | 4740 | 402.0 | 140.0 | 2334.0 | 386 | 72 | 3198 | 691 | 6637 | 1208 | 1 | 0.0 | 2226.0 | 12.0 | 97.0 | 16.0 | 2110 | 16654 | 1353 | 1570 | 746.0 | 1391.0 | 230.0 | 7632 | 12922 | 0.0 | 135.0 | 12.0 | 3627.0 | 1861 | 709.0 | 996.0 | 187.0 | 2355 | 2907.0 | 490.0 | 1856.0 | 267.0 | 4678.0 | 400.0 | 32 | 7.0 | 0.0 | 0.0 | 518 | 10071 | 3198 | 65817.0 | 2 |
343 | 2019 | 8 | 318 | 1.0 | 6 | 170.0 | 457 | 4760 | 460.0 | 156.0 | 2437.0 | 433 | 103 | 3181 | 587 | 6452 | 1215 | 1 | 1.0 | 2245.0 | 9.0 | 98.0 | 17.0 | 1794 | 16136 | 1361 | 1568 | 674.0 | 1534.0 | 185.0 | 7280 | 12602 | 0.0 | 132.0 | 12.0 | 3546.0 | 1862 | 668.0 | 1067.0 | 171.0 | 2081 | 3114.0 | 476.0 | 2028.0 | 265.0 | 4662.0 | 367.0 | 27 | 8.0 | 2.0 | 0.0 | 495 | 9912 | 3181 | 65285.0 | 2 |
É interessante reaparar que algumas variáveis apresentam muitos dados ausentes. Dado o grande intervalo de tempo apresentado no dataset, podemos sugerir algumas hipóteses do que poderia explicar essa ausência, e como podemos contorná-la para continuar explorando o conjunto de dados.
Como temos dados registrados desde o ano de 1991, alguns desses crimes poderiam não estar sendo contabilizados pelo órgão que coletou esses dados e gerou esse dataset. Estarem ausentes não significa que não existiram, e vamos pensar em formas de lidar com essa ausência logo mais.
Infelizmente, se hoje temos uma cultura de dados que ainda deixa a desejar, o que dizer da mesma no período em tela? Devemos levar em consideração também o formato em que esses dados eram registrados à época. Será que foram registrados corretamente e perdidos em períodos de digitalização? Ou será que o gerenciamento dessas informações sempre foi falho?
Antes de decidirmos o que fazer em relação aos dados ausentes, vamos verificar a proporção deles em relação à totalidade do dataset.
# ver os valores faltantes das colunas
(df.isnull().sum()/ df.shape[0]).sort_values(ascending=False)
roubo_bicicleta 0.802326
furto_bicicleta 0.802326
apreensao_drogas_sem_autor 0.523256
posse_drogas 0.523256
apf 0.523256
aaapai 0.523256
cmp 0.523256
trafico_drogas 0.523256
cmba 0.523256
sequestro_relampago 0.418605
furto_coletivo 0.418605
extorsao 0.418605
furto_celular 0.418605
roubo_apos_saque 0.418605
roubo_conducao_saque 0.418605
roubo_cx_eletronico 0.418605
estupro 0.418605
estelionato 0.418605
pol_civis_mortos_serv 0.418605
pol_militares_mortos_serv 0.418605
pessoas_desaparecidas 0.383721
encontro_ossada 0.383721
roubo_celular 0.313953
lesao_corp_culposa 0.279070
ameaca 0.279070
sequestro 0.279070
lesao_corp_morte 0.279070
registro_ocorrencias 0.279070
hom_por_interv_policial 0.244186
hom_culposo 0.244186
tentat_hom 0.000000
roubo_comercio 0.000000
roubo_residencia 0.000000
latrocinio 0.000000
lesao_corp_dolosa 0.000000
hom_doloso 0.000000
roubo_transeunte 0.000000
mes 0.000000
roubo_veiculo 0.000000
roubo_carga 0.000000
fase 0.000000
roubo_em_coletivo 0.000000
roubo_banco 0.000000
outros_roubos 0.000000
total_roubos 0.000000
furto_veiculos 0.000000
furto_transeunte 0.000000
outros_furtos 0.000000
total_furtos 0.000000
apreensao_drogas 0.000000
recuperacao_veiculos 0.000000
encontro_cadaver 0.000000
indicador_letalidade 0.000000
indicador_roubo_rua 0.000000
indicador_roubo_veic 0.000000
vano 0.000000
dtype: float64
Acima, podemos ver que algumas das variáveis tem valores faltantes em proporções consideráveis como é o exemplo de crimes relacionados a bicicletas e apreensão de drogas.
Como os dados estão estruturados ao longo do tempo, uma forma de realizar uma análise que condiz melhor com a realidade, podemos analisá-los a partir da data em que começaram a ser registrados.
Além disso, existem outras formas de encararmos e explorarmos os dados, como por exemplo:
Usando o método describe()
podemos visualizar a distribuição estatística do dataframe.
Utilizando esse método, temos informações que podem nos ajudar a:
# imprimir o resultado estatístico do DataFrame
df.describe()
vano | mes | hom_doloso | lesao_corp_morte | latrocinio | hom_por_interv_policial | tentat_hom | lesao_corp_dolosa | estupro | hom_culposo | lesao_corp_culposa | roubo_comercio | roubo_residencia | roubo_veiculo | roubo_carga | roubo_transeunte | roubo_em_coletivo | roubo_banco | roubo_cx_eletronico | roubo_celular | roubo_conducao_saque | roubo_apos_saque | roubo_bicicleta | outros_roubos | total_roubos | furto_veiculos | furto_transeunte | furto_coletivo | furto_celular | furto_bicicleta | outros_furtos | total_furtos | sequestro | extorsao | sequestro_relampago | estelionato | apreensao_drogas | posse_drogas | trafico_drogas | apreensao_drogas_sem_autor | recuperacao_veiculos | apf | aaapai | cmp | cmba | ameaca | pessoas_desaparecidas | encontro_cadaver | encontro_ossada | pol_militares_mortos_serv | pol_civis_mortos_serv | indicador_letalidade | indicador_roubo_rua | indicador_roubo_veic | registro_ocorrencias | fase | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 344.000000 | 344.000000 | 344.000000 | 248.000000 | 344.000000 | 260.00000 | 344.000000 | 344.000000 | 200.000000 | 260.000000 | 248.000000 | 344.000000 | 344.000000 | 344.000000 | 344.000000 | 344.000000 | 344.000000 | 344.000000 | 200.000000 | 236.000000 | 200.000000 | 200.000000 | 68.000000 | 344.000000 | 344.000000 | 344.000000 | 344.000000 | 200.000000 | 200.000000 | 68.000000 | 344.000000 | 344.000000 | 248.000000 | 200.000000 | 200.000000 | 200.000000 | 344.000000 | 164.000000 | 164.000000 | 164.000000 | 344.000000 | 164.000000 | 164.000000 | 164.000000 | 164.000000 | 248.000000 | 212.000000 | 344.000000 | 212.000000 | 200.000000 | 200.00000 | 344.000000 | 344.000000 | 344.000000 | 248.000000 | 344.000000 |
mean | 2004.837209 | 6.453488 | 504.555233 | 4.334677 | 15.668605 | 71.90000 | 318.267442 | 5492.799419 | 369.945000 | 212.119231 | 3410.762097 | 455.005814 | 133.284884 | 2448.697674 | 340.322674 | 3418.520349 | 659.002907 | 9.375000 | 3.550000 | 957.974576 | 11.320000 | 145.665000 | 10.808824 | 1211.223837 | 9428.119186 | 1674.671512 | 1518.921512 | 650.230000 | 1449.175000 | 124.808824 | 5994.328488 | 10433.177326 | 0.665323 | 133.265000 | 7.755000 | 2231.860000 | 1071.930233 | 609.237805 | 759.146341 | 186.146341 | 1772.238372 | 2319.585366 | 568.628049 | 1255.512195 | 83.042683 | 5530.326613 | 435.132075 | 66.261628 | 3.301887 | 2.085000 | 0.34000 | 577.691860 | 4734.738372 | 2448.697674 | 53794.161290 | 2.994186 |
std | 8.289036 | 3.447759 | 113.774481 | 2.755357 | 5.861427 | 36.48882 | 127.606645 | 1514.220579 | 94.392434 | 54.234700 | 776.156561 | 119.765076 | 44.317963 | 789.689559 | 223.855243 | 2459.017549 | 297.622342 | 10.564894 | 2.634808 | 624.309034 | 6.404113 | 55.392367 | 7.767628 | 800.576723 | 4578.013053 | 294.852020 | 971.853102 | 268.836273 | 368.638776 | 80.247427 | 1964.767779 | 3696.725756 | 0.959128 | 43.303821 | 5.089646 | 772.093064 | 643.381991 | 246.307700 | 312.871487 | 36.221243 | 656.761843 | 650.520866 | 248.040620 | 357.035450 | 62.951374 | 1100.752625 | 65.353516 | 34.464519 | 2.192922 | 1.761616 | 0.63752 | 104.973929 | 3204.054864 | 789.689559 | 11039.051992 | 0.076138 |
min | 1991.000000 | 1.000000 | 272.000000 | 0.000000 | 2.000000 | 10.00000 | 122.000000 | 2350.000000 | 188.000000 | 111.000000 | 848.000000 | 243.000000 | 49.000000 | 1097.000000 | 59.000000 | 688.000000 | 281.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 11.000000 | 0.000000 | 81.000000 | 3261.000000 | 1159.000000 | 322.000000 | 23.000000 | 484.000000 | 0.000000 | 2322.000000 | 4691.000000 | 0.000000 | 23.000000 | 0.000000 | 717.000000 | 80.000000 | 248.000000 | 262.000000 | 114.000000 | 729.000000 | 1173.000000 | 225.000000 | 628.000000 | 21.000000 | 1409.000000 | 236.000000 | 0.000000 | 0.000000 | 0.000000 | 0.00000 | 334.000000 | 1086.000000 | 1097.000000 | 30621.000000 | 2.000000 |
25% | 1998.000000 | 3.000000 | 413.750000 | 2.000000 | 11.000000 | 41.75000 | 200.000000 | 4067.000000 | 282.000000 | 176.000000 | 3040.000000 | 365.750000 | 103.750000 | 1889.750000 | 208.250000 | 1053.000000 | 430.750000 | 2.000000 | 2.000000 | 549.750000 | 6.000000 | 106.000000 | 2.250000 | 811.750000 | 5107.750000 | 1430.500000 | 732.000000 | 501.000000 | 1297.000000 | 3.750000 | 3978.000000 | 6700.250000 | 0.000000 | 109.750000 | 4.750000 | 1654.500000 | 714.500000 | 360.500000 | 426.000000 | 160.000000 | 1276.750000 | 1681.000000 | 332.500000 | 950.500000 | 46.000000 | 4868.500000 | 390.000000 | 42.000000 | 2.000000 | 1.000000 | 0.00000 | 500.000000 | 1557.000000 | 1889.750000 | 45374.500000 | 3.000000 |
50% | 2005.000000 | 6.000000 | 507.000000 | 4.000000 | 15.000000 | 70.00000 | 318.500000 | 5830.500000 | 384.000000 | 203.000000 | 3372.000000 | 433.500000 | 125.000000 | 2322.000000 | 285.500000 | 2788.500000 | 592.000000 | 4.500000 | 3.000000 | 717.500000 | 10.000000 | 149.500000 | 13.000000 | 1154.000000 | 9243.500000 | 1637.500000 | 1076.500000 | 717.500000 | 1492.500000 | 158.000000 | 6559.000000 | 10448.500000 | 0.000000 | 132.500000 | 7.000000 | 2170.500000 | 979.500000 | 623.000000 | 815.000000 | 184.000000 | 1755.000000 | 2424.000000 | 530.000000 | 1259.000000 | 58.000000 | 5455.000000 | 427.000000 | 60.500000 | 3.000000 | 2.000000 | 0.00000 | 590.000000 | 4190.000000 | 2322.000000 | 54926.500000 | 3.000000 |
75% | 2012.000000 | 9.000000 | 577.250000 | 6.000000 | 19.000000 | 96.25000 | 398.250000 | 6582.500000 | 441.250000 | 236.250000 | 3733.500000 | 536.250000 | 151.250000 | 2778.000000 | 401.250000 | 5385.250000 | 784.000000 | 14.000000 | 5.000000 | 1306.750000 | 15.000000 | 180.500000 | 17.000000 | 1635.000000 | 11590.500000 | 1833.250000 | 2334.250000 | 860.000000 | 1731.250000 | 181.500000 | 7601.500000 | 13877.500000 | 1.000000 | 152.250000 | 11.000000 | 2880.500000 | 1546.000000 | 763.500000 | 1045.250000 | 208.000000 | 2202.000000 | 2905.500000 | 793.500000 | 1515.250000 | 93.000000 | 6261.750000 | 481.500000 | 87.000000 | 4.000000 | 3.000000 | 1.00000 | 649.000000 | 6872.750000 | 2778.000000 | 63292.500000 | 3.000000 |
max | 2019.000000 | 12.000000 | 831.000000 | 21.000000 | 36.000000 | 194.00000 | 645.000000 | 9050.000000 | 561.000000 | 449.000000 | 6653.000000 | 914.000000 | 300.000000 | 5358.000000 | 1329.000000 | 9669.000000 | 1628.000000 | 54.000000 | 12.000000 | 2626.000000 | 37.000000 | 283.000000 | 26.000000 | 3661.000000 | 23203.000000 | 2630.000000 | 5368.000000 | 1036.000000 | 2215.000000 | 243.000000 | 9880.000000 | 18003.000000 | 5.000000 | 271.000000 | 31.000000 | 3627.000000 | 2543.000000 | 1160.000000 | 1282.000000 | 289.000000 | 3695.000000 | 3425.000000 | 1114.000000 | 2314.000000 | 350.000000 | 9034.000000 | 628.000000 | 217.000000 | 13.000000 | 10.000000 | 3.00000 | 848.000000 | 13833.000000 | 5358.000000 | 75403.000000 | 3.000000 |
Somando os registros de furto(furto_veiclos
,furto_transeunte
,furto_coletivo
, furto_celular
, furto_bicicleta
, outros_furtos
) é o que tem a maior média, com cerca de 10.433 registros. Enquanto o de policiais civis mortos em serviço tem a menor média com cerca de 0.34.
Vamos dedicar essa seção do projeto para investigar dados em relação aos crimes de roubo e furto de veículos.
Problema comum nas grandes metrópoles brasileiras, esse tipo de crime merece destaque em nosso projeto. Como temos dados sobre roubo, furto e recuperação de veículos, conseguimos utilizar essas informações para encontrar resultados pertinentes em relação à situação e ao combate a esse tipo de crime.
# ver a média da variável roubo_veiculo
mean_roubo_veiculo = df.roubo_veiculo.mean()
print(round(mean_roubo_veiculo,2))
2448.7
# ver a média da variável furto_veiculos
mean_furto_veiculos = df.furto_veiculos.mean()
print(round(mean_furto_veiculos,2))
1674.67
# ver a média da variável recuperacao_veiculos
mean_recuperacao_veiculos = df.recuperacao_veiculos.mean()
print(round(mean_recuperacao_veiculos,2))
1772.24
# total de veículos perdidos
total = mean_roubo_veiculo + mean_furto_veiculos
print(round(total,2))
4123.37
# porcentagem de veículos recuperados
pct = mean_recuperacao_veiculos/total*100
print(pct)
42.980346705075085
Podemos concluir que:
Abaixo, vamos identificar qual foi o máximo e mínimo registrado para a variável total_roubos
ao longo do período observado no dataset.
# valores max e min de total_roubos
max_total_roubos = df.total_roubos.max()
min_total_roubos = df.total_roubos.min()
# imprimir os valores máximos e mínimos
print("Min:\t{}".format(min_total_roubos))
print("Max:\t{}".format(max_total_roubos))
Min: 3261
Max: 23203
Acima podemos ver que o mês com menor número de casos foram registrados 3261 roubos.
Em relação ao mês com números mais elevado, houveram 23203 roubos.
Vamos investigar um pouco mais a fundo essas entradas.
# verificando o mês com menor número de roubo
df[df.total_roubos == 3261]
vano | mes | hom_doloso | lesao_corp_morte | latrocinio | hom_por_interv_policial | tentat_hom | lesao_corp_dolosa | estupro | hom_culposo | lesao_corp_culposa | roubo_comercio | roubo_residencia | roubo_veiculo | roubo_carga | roubo_transeunte | roubo_em_coletivo | roubo_banco | roubo_cx_eletronico | roubo_celular | roubo_conducao_saque | roubo_apos_saque | roubo_bicicleta | outros_roubos | total_roubos | furto_veiculos | furto_transeunte | furto_coletivo | furto_celular | furto_bicicleta | outros_furtos | total_furtos | sequestro | extorsao | sequestro_relampago | estelionato | apreensao_drogas | posse_drogas | trafico_drogas | apreensao_drogas_sem_autor | recuperacao_veiculos | apf | aaapai | cmp | cmba | ameaca | pessoas_desaparecidas | encontro_cadaver | encontro_ossada | pol_militares_mortos_serv | pol_civis_mortos_serv | indicador_letalidade | indicador_roubo_rua | indicador_roubo_veic | registro_ocorrencias | fase | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1991 | 2 | 732 | NaN | 17 | NaN | 175 | 3421 | NaN | NaN | NaN | 357 | 171 | 1097 | 64 | 963 | 432 | 35 | NaN | NaN | NaN | NaN | NaN | 142 | 3261 | 1850 | 1066 | NaN | NaN | NaN | 3309 | 6225 | NaN | NaN | NaN | NaN | 127 | NaN | NaN | NaN | 751 | NaN | NaN | NaN | NaN | NaN | NaN | 209 | NaN | NaN | NaN | 749 | 1395 | 1097 | NaN | 3 |
# verificando o mês com maior número de roubos
df[df.total_roubos == 23203]
vano | mes | hom_doloso | lesao_corp_morte | latrocinio | hom_por_interv_policial | tentat_hom | lesao_corp_dolosa | estupro | hom_culposo | lesao_corp_culposa | roubo_comercio | roubo_residencia | roubo_veiculo | roubo_carga | roubo_transeunte | roubo_em_coletivo | roubo_banco | roubo_cx_eletronico | roubo_celular | roubo_conducao_saque | roubo_apos_saque | roubo_bicicleta | outros_roubos | total_roubos | furto_veiculos | furto_transeunte | furto_coletivo | furto_celular | furto_bicicleta | outros_furtos | total_furtos | sequestro | extorsao | sequestro_relampago | estelionato | apreensao_drogas | posse_drogas | trafico_drogas | apreensao_drogas_sem_autor | recuperacao_veiculos | apf | aaapai | cmp | cmba | ameaca | pessoas_desaparecidas | encontro_cadaver | encontro_ossada | pol_militares_mortos_serv | pol_civis_mortos_serv | indicador_letalidade | indicador_roubo_rua | indicador_roubo_veic | registro_ocorrencias | fase | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
316 | 2017 | 5 | 425 | 1.0 | 20 | 97.0 | 504 | 5190 | 419.0 | 188.0 | 2755.0 | 669 | 124 | 4596 | 1240 | 9669 | 1616 | 1 | 12.0 | 2548.0 | 7.0 | 53.0 | 13.0 | 2655 | 23203 | 1302 | 1866 | 813.0 | 1410.0 | 243.0 | 8359 | 13993 | 1.0 | 156.0 | 17.0 | 3059.0 | 1862 | 610.0 | 1114.0 | 182.0 | 3522 | 2982.0 | 639.0 | 1443.0 | 128.0 | 4650.0 | 379.0 | 18 | 4.0 | 1.0 | 0.0 | 543 | 13833 | 4596 | 71895.0 | 3 |
Acima, vemos que o mês de Fevereiro de 1991 foi o mês com mais casos de roubo registrados no nosso dataset, enquanto o mês com menor número de casos foi Maio de 2017.
Isso sugere um mau sinal, indicando que, talvez, o crime venha aumentando. Apenas uma análise mais aprofundada pode nos dizer.
Histogramas são poderosas ferramentas de visualização, que nos auxiliam a entender a distribuição dos valores em uma variável.
Abaixo, faremos essa análise em relação à variável hom_doloso
.
df['hom_doloso'].hist();
plt.xlabel('Quantidade de ocorrências');
Podemos ver que em quase 70 meses tivemos em torno de 500 a 550 registros de homicídos dolosos.
df.registro_ocorrencias.plot();
plt.ylabel('Registros de Ocorrência');
Podemos ver que ao longo do tempo a quantidade de registros de ocorrência vem aumentando.
Com essa análise podemos concluir que: