Analisando os dados da violência no Rio de Janeiro

Neste notebook iremos analisar os dados do ISP RJ com relação ao número de ocorrências de violência no Estado do Rio de Janeiro.

June 09, 2021

É 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.

Obtenção dos Dados

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.

Importando os dados

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

Análise Inicial dos Dados

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.

  • Qual o tamanho do seu DataFrame (shape)
  • Extrair e imprimir os nomes das colunas (columns)
  • Quais os tipos das variáveis (dtypes)
  • Visualizar as 5 primeiras linhas (head)
  • Identifique a porcentagem de valores ausentes das colunas
# 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:

  • Números anuais por crime.
  • Números mensais por crime.
  • Categorias de crimes (Contra a vida, Contra o patrimônio, etc.)

Informações Estatísticas da Violência no Rio de Janeiro

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:

  • Identificar outliers.
  • Entender melhor a distribuição dos dados.
  • Identificar falhas na distribuição dos dados.
  • Após a limpeza dos dados, verificar a eficácia e as diferenças entre os dados tratados e não tratados.
# 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.

Crimes Contra o Patrimônio - Veículos

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
  • Podemos verificar que a média de roubo de veículos é de 2488 por mês.
# ver a média da variável furto_veiculos
mean_furto_veiculos = df.furto_veiculos.mean()
print(round(mean_furto_veiculos,2))
1674.67
  • Em relação aos furtos, os números são um pouco menores, mas ainda altos. Foram registrados em média, 1674 furtos de veículos por mês.
# 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:

  • Há uma média de 4123 veículos perdidos por mês.
  • Cerca de 1772 veículos são recuperados por mês.
  • 42.98% dos veículos roubados ou furtados são recuperados.

Crimes Contra o Patrimônio - Roubo

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.

Visualização de Dados

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');

png

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');

png

Podemos ver que ao longo do tempo a quantidade de registros de ocorrência vem aumentando.

Conclusão

Com essa análise podemos concluir que:

  • Há uma média de 4.123 veículos perdidos por mês.
  • Cerca de 1.772 veículos são recuperados por mês.
  • 42.98% dos veículos roubados ou furtados são recuperados.
  • A maior média de registros é do tipo furto, com média de 10.433 registros.
  • A menor média de registros é de policias civis mortos em serviço, com 0.34 registros.
  • A quantidade de Registros de Ocorrência vem aumentando com o tempo.