Análise dos Crimes no Estado de São Paulo

Abaixo faço a Análise inicial do boletim de ocorrência dos últimos 10 anos do estado de São Paulo

  • Verificação de informação das colunas;
  • Verificação da qualidade dos Dados;
  • Primeiros insights;

In [ ]:
import pandas as pd

In [1]:
import pandas as pd
import pandas as pd
df = pd.read_csv('/home/anderson/Desktop/Sao-Paulo-Crime-Study/output.csv', encoding = 'latin1')


/home/anderson/anaconda3/lib/python3.5/site-packages/IPython/core/interactiveshell.py:2723: DtypeWarning: Columns (22,23,24,28,30) have mixed types. Specify dtype option on import or set low_memory=False.
  interactivity=interactivity, compiler=compiler, result=result)

In [2]:
df.head()


Out[2]:
ID_DELEGACIA NOME_DEPARTAMENTO NOME_SECCIONAL NOME_DELEGACIA CIDADE ANO_BO NUM_BO NOME_DEPARTAMENTO_CIRC NOME_SECCIONAL_CIRC NOME_DELEGACIA_CIRC ... LOGRADOURO NUMERO_LOGRADOURO LATITUDE LONGITUDE DESCR_TIPO_PESSOA FLAG_VITIMA_FATAL SEXO_PESSOA IDADE_PESSOA COR_CUTIS Unnamed: 30
0 10004 DIRD - DEPTO IDENT.REG.DIV DIV.POL.PORTO/AERO/PROT.TURIS-DECADE 06º D.P. METROPOLITANO S.PAULO 2010 12 DECAP DEL.SEC.1º CENTRO 05º D.P. ACLIMACAO ... ESTAÇAO BRIGADEIRO DO METRO 0 NaN NaN Vítima NaN M 21 Preta NaN
1 10004 DIRD - DEPTO IDENT.REG.DIV DIV.POL.PORTO/AERO/PROT.TURIS-DECADE 06º D.P. METROPOLITANO S.PAULO 2010 23 DECAP DEL.SEC.1º CENTRO 03º D.P. CAMPOS ELISEOS ... ESTAÇÃO REPUBLICA/PLATAFORMA EMBARQUE 99 NaN NaN Vítima NaN F 48 Parda NaN
2 10004 DIRD - DEPTO IDENT.REG.DIV DIV.POL.PORTO/AERO/PROT.TURIS-DECADE 06º D.P. METROPOLITANO S.PAULO 2010 24 DECAP DEL.SEC.3º OESTE 37º D.P. CAMPO LIMPO ... EST.VILA DAS BELEZAS/ESTACIONAMENTO 99 NaN NaN Vítima NaN M 42 Branca NaN
3 10004 DIRD - DEPTO IDENT.REG.DIV DIV.POL.PORTO/AERO/PROT.TURIS-DECADE 06º D.P. METROPOLITANO S.PAULO 2010 31 DECAP DEL.SEC.3º OESTE 23º D.P. PERDIZES ... ESTACAO BARRA FUNDA DO METRO 0 NaN NaN Vítima NaN M 39 Branca NaN
4 10004 DIRD - DEPTO IDENT.REG.DIV DIV.POL.PORTO/AERO/PROT.TURIS-DECADE 06º D.P. METROPOLITANO S.PAULO 2010 40 DECAP DEL.SEC.1º CENTRO 78º D.P. JARDINS ... AV PAULISTA 2073 NaN NaN Vítima NaN F 32 Parda NaN

5 rows × 31 columns


In [3]:
#Verificando tipo dados das colunas
df.info()


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 793050 entries, 0 to 793049
Data columns (total 31 columns):
ID_DELEGACIA               793050 non-null int64
NOME_DEPARTAMENTO          793050 non-null object
NOME_SECCIONAL             793050 non-null object
NOME_DELEGACIA             793050 non-null object
CIDADE                     793050 non-null object
ANO_BO                     793050 non-null int64
NUM_BO                     793050 non-null int64
NOME_DEPARTAMENTO_CIRC     793050 non-null object
NOME_SECCIONAL_CIRC        793050 non-null object
NOME_DELEGACIA_CIRC        793050 non-null object
NOME_MUNICIPIO_CIRC        793050 non-null object
DESCR_TIPO_BO              793050 non-null object
DATA_OCORRENCIA_BO         793050 non-null object
HORA_OCORRENCIA_BO         712129 non-null object
DATAHORA_COMUNICACAO_BO    0 non-null float64
FLAG_STATUS                793050 non-null object
RUBRICA                    793050 non-null object
DESCR_CONDUTA              607623 non-null object
DESDOBRAMENTO              44298 non-null object
DESCR_TIPOLOCAL            793050 non-null object
DESCR_SUBTIPOLOCAL         793050 non-null object
LOGRADOURO                 793050 non-null object
NUMERO_LOGRADOURO          739249 non-null object
LATITUDE                   463935 non-null object
LONGITUDE                  463927 non-null object
DESCR_TIPO_PESSOA          793037 non-null object
FLAG_VITIMA_FATAL          35424 non-null object
SEXO_PESSOA                793031 non-null object
IDADE_PESSOA               782791 non-null object
COR_CUTIS                  791967 non-null object
Unnamed: 30                17 non-null object
dtypes: float64(1), int64(3), object(27)
memory usage: 187.6+ MB

In [ ]:


In [5]:
df['HORA_OCORRENCIA_BO'].value_counts()


Out[5]:
21:00    17929
20:00    17758
22:00    17094
19:00    16163
20:30    14926
23:00    13980
21:30    13836
14:00    13515
15:00    13511
19:30    13256
22:30    12971
16:00    12869
18:00    12604
12:00    12266
13:00    11495
17:00    11473
11:00    10979
18:30    10876
10:00    10516
23:30    10295
15:30     9350
12:30     8874
14:30     8872
13:30     8823
17:30     8697
11:30     8617
16:30     8457
09:00     8194
10:30     7847
08:00     7743
         ...  
02:46       16
01:41       16
04:57       16
06:09       15
04:29       15
03:43       15
02:56       15
05:48       15
03:14       15
02:31       15
02:44       15
02:01       15
03:32       15
03:11       15
03:01       15
05:39       14
04:49       14
05:51       14
03:59       14
04:28       13
04:39       13
05:09       13
03:54       13
05:26       13
05:01       12
04:01       11
04:56       11
04:16       10
03:36        9
04:42        9
Name: HORA_OCORRENCIA_BO, dtype: int64

In [6]:
#Sera que temos boletins inclusive desse ano ? 
df['ANO_BO'].max()


Out[6]:
2017

In [22]:
#Verificando variáveis que podem conter tipos de crimes
df['RUBRICA'].value_counts()


Out[22]:
Roubo (art. 157)                                                         362274
Furto (art. 155)                                                         181813
Lesão corporal (art. 129)                                                84476
Lesão corporal culposa na direção de veículo automotor (Art. 303)     63806
Furto qualificado (art. 155, §4o.)                                       63411
Lesão corporal (art 129 § 9º)                                          18304
Homicídio simples (art. 121)                                              5742
Estupro de vulneravel (art.217-A)                                          4246
Lesão corporal culposa (art. 129. §6o.)                                  3085
Estupro (art.213)                                                          2033
Homicídio culposo na direção de veículo automotor (Art. 302)           1852
Homicídio qualificado (art. 121, §2o.)                                   1304
Lesão corporal de natureza GRAVE (art. 129, §1o.)                         301
Homicídio culposo (art. 121, §3o.)                                        190
Furto de coisa comum (art. 156)                                             125
Lesão corporal  de natureza 'GRAVÍSSIMA' (art. 129, §2o.)                 46
Lesão corporal seguida de morte (art. 129, §3o.)                           28
A.I.-Estupro de vulneravel (art.217-A)                                        9
A.I.-Estupro (art.213)                                                        4
A.I.-Lesão corporal (art. 129)                                               1
Name: RUBRICA, dtype: int64

In [8]:
#Excelente, vamos quer quantos tipos de crimes diferentes temos aqui registrados :
df['RUBRICA'].nunique()


Out[8]:
20

In [12]:
df['DATA_OCORRENCIA_BO'].value_counts()


Out[12]:
10-20-10    1385
09-13-11    1353
09-06-11    1350
12-01-11    1319
10-07-10    1318
11-01-11    1301
09-09-11    1300
10-05-11    1287
01-24-12    1286
08-10-11    1285
05-05-11    1283
11-08-11    1282
09-21-11    1276
11-10-11    1272
12-06-11    1271
08-17-11    1271
10-10-11    1268
11-11-11    1257
10-21-10    1257
09-01-11    1254
12-20-11    1253
11-30-11    1252
10-06-10    1250
09-29-10    1249
10-26-11    1249
11-05-10    1245
08-26-11    1244
10-15-10    1242
04-15-11    1241
11-07-11    1241
            ... 
01-25-10     812
03-28-10     811
09-19-10     809
07-18-10     808
12-26-11     807
01-23-11     806
04-24-11     803
01-01-11     786
12-25-11     780
09-26-10     776
04-21-11     776
09-07-10     772
01-01-10     771
12-31-11     768
10-10-10     756
04-03-10     748
02-14-10     748
10-02-11     745
04-02-10     733
12-31-10     733
03-06-11     730
01-03-10     724
03-08-11     720
09-05-10     720
11-14-10     687
04-22-11     684
12-25-10     682
01-02-10     673
01-02-11     664
12-26-10     568
Name: DATA_OCORRENCIA_BO, dtype: int64

In [14]:
df['DATA_OCORRENCIA_BO'] = pd.to_datetime(df['DATA_OCORRENCIA_BO'])

In [17]:
df['dia_da_semana'] = df['DATA_OCORRENCIA_BO'].dt.weekday_name

In [50]:
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_style('darkgrid')

In [51]:
semana = pd.DataFrame(df['dia_da_semana'].value_counts())

In [52]:
semana.plot(title = 'Distribuição dos Crimes por dia da Semana' , kind='barh',color = 'red', use_index=True, legend=True, sort_columns=True)


Out[52]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f1a1fac9080>

In [53]:
df['mes'] = df['DATA_OCORRENCIA_BO'].dt.month

In [54]:
mes =  pd.DataFrame(df['mes'].value_counts())
mes.head()


Out[54]:
mes
1 92684
10 66942
8 66678
5 64944
9 64868

In [55]:
mes['numero de crimes']  = mes.index
mes.head()


Out[55]:
mes numero de crimes
1 92684 1
10 66942 10
8 66678 8
5 64944 5
9 64868 9

In [57]:
mes.plot(title = 'Distribuição dos Crimes por dia mês' , kind='barh',color = 'blue', use_index=True, legend=True, sort_columns=True)


Out[57]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f1a1fa2ce48>

Fica a dúvida se de fato janeiro é mesmo o mês com o maior número de crimes, ou se o governo sempre joga os número não contabilizados do ano anterior para o ano seguinte pra mascarar os números atuais (o que no longo prazo sempre acaba aparecendo)


In [66]:
top_10_horario_crimes = pd.DataFrame(df['HORA_OCORRENCIA_BO'].value_counts().head(10))
top_10_horario_crimes


Out[66]:
HORA_OCORRENCIA_BO
21:00 17929
20:00 17758
22:00 17094
19:00 16163
20:30 14926
23:00 13980
21:30 13836
14:00 13515
15:00 13511
19:30 13256

In [68]:
top_10_horario_crimes.plot(title = 'Top 10 de horarios de maior ocorrencia de crimes' , kind='barh',color = 'purple', use_index=True, legend=False, sort_columns=True)


Out[68]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f1a20076080>

In [71]:
df['CIDADE'].value_counts()


Out[71]:
S.PAULO                                     793042
GUARULHOS                                        3
PERUIBE                                          1
Sao Paulo                                        1
DIADEMA                                          1
LIMEIRA                                          1
APARECIDA                                        1
Name: CIDADE, dtype: int64

In [72]:
df['LOGRADOURO'].value_counts()


Out[72]:
Informação protegida (art 31 LAI)            84282
AV SAPOPEMBA                                    4109
AV DAS NACOES UNIDAS                            3562
AV MAL TITO                                     3401
AV SEN TEOTONIO VILELA                          3101
EST DE ITAPECERICA                              3042
AV CRUZEIRO DO SUL                              3040
EST DO M BOI MIRIM                              2878
AV DO ESTADO                                    2682
RODOVIA RAPOSO TAVARES                          2663
AV ARICANDUVA                                   2572
AV PAULISTA                                     2524
AV RAIMUNDO PEREIRA DE MAGALHAES                2474
AV SAO MIGUEL                                   2408
EST DO CAMPO LIMPO                              2347
AV RAGUEB CHOHFI                                2260
AV CUPECE                                       2176
PC DA SE                                        2155
AV CELSO GARCIA                                 2096
AV INTERLAGOS                                   2058
AV GIOVANNI GRONCHI                             2004
R VINTE E CINCO DE MARCO                        1936
R DA CONSOLACAO                                 1932
R VERGUEIRO                                     1766
AV WASHINGTON LUIS                              1760
AV PROF FRANCISCO MORATO                        1726
AV SANTO AMARO                                  1689
R AUGUSTA                                       1689
AV BRIGADEIRO FARIA LIMA                        1559
AV PROF LUIS IGNACIO DE ANHAIA MELLO            1540
                                               ...  
LOCAL NAO INFORMADO                                1
RUA DA SERESTA                                     1
ANGELO JOSE RIBEIRO                                1
R ARGIVAI                                          1
INHAGABAS                                          1
RUA JUNTAS PROVISORIO                              1
ESTAÇÃO ITAPEVI/B.FUNDA/CPTM                     1
VE BOA VISTA DOS RAMOS                             1
VIA COLETORA                                       1
ENTRE ESTAÇÃO JD.HELENA/TATUAPÉ/CPTM            1
EST.ANHANGABAU-B.FUNDA ( INTERIOR TREM )           1
RUA RIO BRAVO                                      1
RUA PIAUÍ                                         1
AV SEN QUEIROZ                                     1
RUA PEDRO ALVARES CABRAL                           1
LARGO DRACENA                                      1
RUA HERBART                                        1
EDER DA SILVA GALO                                 1
TV MATILDE                                         1
AV AGUAS ESPRAIADAS                                1
TV JOAO ZELTNER                                    1
TV WASHINGTON                                      1
RUA ILIDIO DE FIGUEIREDO                           1
TV DAS PAPOULAS                                    1
TV MARIA PADILHA                                   1
JOFRE SOARES                                       1
LEOPOLDO DO AMARAL                                 1
EST.PENHA - INT. TREM DEST.BARRA-FUNDA             1
R MANOEL GRACA                                     1
TV LA COMPARSITA                                   1
Name: LOGRADOURO, dtype: int64

In [24]:
df['DESCR_TIPOLOCAL'].value_counts()


Out[24]:
Via pública                                   545273
Residência                                    112040
Comércio e serviços                           52989
Terminal/Estação                              14654
Restaurante e afins                             12363
Estabelecimento bancário                       10752
Lazer e recreação                              7723
Estabelecimento de ensino                        5595
Saúde                                           4667
Centro Comerc./Empresarial                       3668
Condominio Residencial                           3562
Rodovia/Estrada                                  2827
Shopping Center                                  2694
Hospedagem                                       2564
Area não ocupada                                2532
Escritório                                      2259
Repartição Pública                            1361
Entidade assistencial                            1220
Condominio Comercial                              931
Templo e afins                                    872
Estabelecimento industrial                        782
Serviços e bens públicos                        545
Estabelecimento prisional                         368
Favela                                            227
Estrada de ferro                                  197
Outros                                            163
Unidade rural                                     153
Local clandestino/ilegal                           40
Sindicato                                          29
Name: DESCR_TIPOLOCAL, dtype: int64

In [13]:
#E agora vamos ver quais são
df['RUBRICA'].unique()


Out[13]:
array(['Lesão corporal (art. 129)',
       'Lesão corporal culposa (art. 129. §6o.)', 'Furto (art. 155)',
       'Furto qualificado (art. 155, §4o.)', 'Roubo (art. 157)',
       'Lesão corporal culposa na direção de veÃ\xadculo automotor (Art. 303)',
       'Estupro (art.213)', 'Lesão corporal (art 129 § 9º)',
       'Lesão corporal de natureza GRAVE (art. 129, §1o.)',
       'HomicÃ\xaddio simples (art. 121)',
       'HomicÃ\xaddio culposo (art. 121, §3o.)',
       'HomicÃ\xaddio culposo na direção de veÃ\xadculo automotor (Art. 302)',
       'HomicÃ\xaddio qualificado (art. 121, §2o.)',
       'Estupro de vulneravel (art.217-A)',
       "Lesão corporal  de natureza 'GRAVÃ\x8dSSIMA' (art. 129, §2o.)",
       'Furto de coisa comum (art. 156)',
       'Lesão corporal seguida de morte (art. 129, §3o.)',
       'A.I.-Estupro de vulneravel (art.217-A)',
       'A.I.-Lesão corporal (art. 129)', 'A.I.-Estupro (art.213)'], dtype=object)

In [73]:
df['FLAG_VITIMA_FATAL'].value_counts()


Out[73]:
N                        35104
S                          242
                            61
Vítima                     17
Name: FLAG_VITIMA_FATAL, dtype: int64

In [77]:
homicidios_qualificados = df[df['RUBRICA']=='HomicÃ\xaddio qualificado (art. 121, §2o.)']

In [78]:
homicidios_qualificados['LOGRADOURO'].value_counts()


Out[78]:
Informação protegida (art 31 LAI)         214
AV DAS NACOES UNIDAS                         17
R FLORENCIO E RIELLI TORRES                  16
AV AURO SOARES DE MOURA ANDRADE              15
R SEVERINO SUZANO                            14
AV AGUA ESPRAIADA                            13
R ANTONIO LOPES DE MEDEIROS                  10
R CARDOSO DE ALMEIDA                         10
R NELSON DE MORAES LOPES                     10
AV CURSINO                                    9
PC GAL POLIDORO                               9
R PROF LUIZ PEREIRA BARRETO NETO              8
R LUIS APARECIDO HUNGARO                      8
R AUGUSTA                                     7
R SAO GONCALO DO RIO DAS PEDRAS               6
DR. DOMINGOS AMERICANO                        6
R DAMASIO PINTO                               6
R GOMES DE CARVALHO                           6
R ADELAIDE LUISA DE MOLINA                    6
R CEL DIOGO                                   6
R TREZE DE MAIO                               6
R OITI                                        6
R SOARES DE BULHOES                           6
R WALDO PAOLIELLO JR                          6
R BEZERROS                                    5
R TERRAS DE CAMBRA                            5
R MAL MORAIS ANCORA                           5
EST DE POA                                    5
PARQUE DOM PEDRO II                           5
R MEDEIROS FURTADO                            5
                                           ... 
R CORES VIVAS                                 1
R SILVESTRE DA CONCEICAO                      1
R MARIA DOMITILA                              1
AL DINO BUENO                                 1
R BORGES                                      1
R VITOR DE QUEIROZ MATOS                      1
R RIO DUAS BARRAS                             1
R FAURE ROSA                                  1
R FRANCISCO SANTO SUOSSO                      1
R MARGARIDA SILVEIRA LEITE                    1
R DOMINGOS DE BRITO                           1
R DIOGO PIRES                                 1
R JACOME TELES DE MENEZES                     1
AV JOAO PAULO I                               1
R VICENTE QUARESMA                            1
R AMARO DE PONTES                             1
R DONA VERIDIANA                              1
AV CARLOS DOS SANTOS                          1
AV DO ESTADO                                  1
R COPARA                                      1
R JOSE PERES CAMPELO                          1
RUA VASCO DA GAMA                             1
RUA PEDRO DE MELO E SOUSA                     1
RODOVIA DOS BANDEIRANTES                      1
R ZITUO KARASAWA                              1
ELISA GONCALVES BARCELOS                      1
R TERESA FARIAS ISASSI                        1
R SAMUEL SCOTT                                1
R MENDES CALDEIRA                             1
AV FLAMINGO                                   1
Name: LOGRADOURO, dtype: int64

In [ ]:


In [ ]:


In [ ]:


In [ ]: