Skip to content

Instantly share code, notes, and snippets.

@BurgosNY
Last active January 30, 2020 20:34
Show Gist options
  • Save BurgosNY/5ee64d9c7d7a5bd463a08efe4aae98f2 to your computer and use it in GitHub Desktop.
Save BurgosNY/5ee64d9c7d7a5bd463a08efe4aae98f2 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"# Dados baixados de https://portal.prf.gov.br/dados-abertos-acidentes\n",
"# Substitua os paths com o caminho do arquivo .csv no seu computador\n",
"path_csv_2018 = \"/Users/pedroburgos/Downloads/datatran2019.csv\"\n",
"path_csv_2019 = \"/Users/pedroburgos/Downloads/datatran2018.csv\"\n",
"df19 = pd.read_csv(path_csv_2019, delimiter=\";\", encoding=\"latin-1\")\n",
"df18 = pd.read_csv(path_csv_2018, delimiter=\";\", encoding=\"latin-1\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['id', 'data_inversa', 'dia_semana', 'horario', 'uf', 'br', 'km',\n",
" 'municipio', 'causa_acidente', 'tipo_acidente',\n",
" 'classificacao_acidente', 'fase_dia', 'sentido_via',\n",
" 'condicao_metereologica', 'tipo_pista', 'tracado_via', 'uso_solo',\n",
" 'pessoas', 'mortos', 'feridos_leves', 'feridos_graves', 'ilesos',\n",
" 'ignorados', 'feridos', 'veiculos', 'latitude', 'longitude', 'regional',\n",
" 'delegacia', 'uop'],\n",
" dtype='object')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Observando as colunas\n",
"df19.columns"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ True, True, True, True, True, True, True, True, True,\n",
" True, True, True, True, True, True, True, True, True,\n",
" True, True, True, True, True, True, True, True, True,\n",
" True, True, True])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Checando a consistência dos dados\n",
"df18.columns == df19.columns"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Com Vítimas Fatais', 'Com Vítimas Feridas', 'Sem Vítimas'}"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Descobrindo como são classificados acidentes com vítimas fatais\n",
"set([x for x in df18['classificacao_acidente'].values])"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"# Criando duas Series com o total de acidentes com vítimas por UF\n",
"fatais_18 = df18[df18['classificacao_acidente'] == 'Com Vítimas Fatais'].groupby('uf', as_index=True).count()['id']\n",
"fatais_19 = df19[df19['classificacao_acidente'] == 'Com Vítimas Fatais'].groupby('uf', as_index=True).count()['id']\n",
"\n",
"# Criando mais duas Series com o total de acidentes causados por velocidade incompatível por UF\n",
"velo_18 = df18[(df18['causa_acidente'] == 'Velocidade Incompatível') & \n",
" (df18['classificacao_acidente'] == 'Com Vítimas Fatais')].groupby('uf', as_index=True).count()['id']\n",
"velo_19 = df19[(df19['causa_acidente'] == 'Velocidade Incompatível') &\n",
" (df19['classificacao_acidente'] == 'Com Vítimas Fatais')].groupby('uf', as_index=True).count()['id']"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>acidentes fatais 2018</th>\n",
" <th>acidentes fatais 2019</th>\n",
" <th>causa velocidade 2018</th>\n",
" <th>causa velocidade 2019</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>AC</th>\n",
" <td>23</td>\n",
" <td>19</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AL</th>\n",
" <td>77</td>\n",
" <td>88</td>\n",
" <td>7</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AM</th>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>AP</th>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>3</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>BA</th>\n",
" <td>389</td>\n",
" <td>396</td>\n",
" <td>63</td>\n",
" <td>58.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>CE</th>\n",
" <td>165</td>\n",
" <td>143</td>\n",
" <td>11</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>DF</th>\n",
" <td>41</td>\n",
" <td>45</td>\n",
" <td>7</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ES</th>\n",
" <td>116</td>\n",
" <td>124</td>\n",
" <td>17</td>\n",
" <td>15.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>GO</th>\n",
" <td>229</td>\n",
" <td>229</td>\n",
" <td>27</td>\n",
" <td>28.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MA</th>\n",
" <td>195</td>\n",
" <td>160</td>\n",
" <td>7</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MG</th>\n",
" <td>551</td>\n",
" <td>569</td>\n",
" <td>140</td>\n",
" <td>122.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MS</th>\n",
" <td>101</td>\n",
" <td>103</td>\n",
" <td>8</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MT</th>\n",
" <td>200</td>\n",
" <td>184</td>\n",
" <td>20</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PA</th>\n",
" <td>116</td>\n",
" <td>117</td>\n",
" <td>4</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PB</th>\n",
" <td>114</td>\n",
" <td>121</td>\n",
" <td>10</td>\n",
" <td>13.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PE</th>\n",
" <td>266</td>\n",
" <td>276</td>\n",
" <td>30</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PI</th>\n",
" <td>141</td>\n",
" <td>125</td>\n",
" <td>1</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PR</th>\n",
" <td>414</td>\n",
" <td>455</td>\n",
" <td>63</td>\n",
" <td>76.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RJ</th>\n",
" <td>250</td>\n",
" <td>303</td>\n",
" <td>27</td>\n",
" <td>32.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RN</th>\n",
" <td>103</td>\n",
" <td>79</td>\n",
" <td>7</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RO</th>\n",
" <td>76</td>\n",
" <td>67</td>\n",
" <td>6</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RR</th>\n",
" <td>20</td>\n",
" <td>34</td>\n",
" <td>3</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>RS</th>\n",
" <td>249</td>\n",
" <td>264</td>\n",
" <td>38</td>\n",
" <td>35.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SC</th>\n",
" <td>336</td>\n",
" <td>345</td>\n",
" <td>72</td>\n",
" <td>60.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SE</th>\n",
" <td>34</td>\n",
" <td>56</td>\n",
" <td>4</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SP</th>\n",
" <td>195</td>\n",
" <td>192</td>\n",
" <td>16</td>\n",
" <td>20.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>TO</th>\n",
" <td>73</td>\n",
" <td>69</td>\n",
" <td>5</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" acidentes fatais 2018 acidentes fatais 2019 causa velocidade 2018 \\\n",
"AC 23 19 1 \n",
"AL 77 88 7 \n",
"AM 17 17 1 \n",
"AP 14 11 3 \n",
"BA 389 396 63 \n",
"CE 165 143 11 \n",
"DF 41 45 7 \n",
"ES 116 124 17 \n",
"GO 229 229 27 \n",
"MA 195 160 7 \n",
"MG 551 569 140 \n",
"MS 101 103 8 \n",
"MT 200 184 20 \n",
"PA 116 117 4 \n",
"PB 114 121 10 \n",
"PE 266 276 30 \n",
"PI 141 125 1 \n",
"PR 414 455 63 \n",
"RJ 250 303 27 \n",
"RN 103 79 7 \n",
"RO 76 67 6 \n",
"RR 20 34 3 \n",
"RS 249 264 38 \n",
"SC 336 345 72 \n",
"SE 34 56 4 \n",
"SP 195 192 16 \n",
"TO 73 69 5 \n",
"\n",
" causa velocidade 2019 \n",
"AC 0.0 \n",
"AL 5.0 \n",
"AM 0.0 \n",
"AP 3.0 \n",
"BA 58.0 \n",
"CE 8.0 \n",
"DF 7.0 \n",
"ES 15.0 \n",
"GO 28.0 \n",
"MA 7.0 \n",
"MG 122.0 \n",
"MS 10.0 \n",
"MT 20.0 \n",
"PA 6.0 \n",
"PB 13.0 \n",
"PE 20.0 \n",
"PI 7.0 \n",
"PR 76.0 \n",
"RJ 32.0 \n",
"RN 2.0 \n",
"RO 8.0 \n",
"RR 3.0 \n",
"RS 35.0 \n",
"SC 60.0 \n",
"SE 7.0 \n",
"SP 20.0 \n",
"TO 4.0 "
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Juntando as duas em um mesmo DataFrame\n",
"fatais_18.name = 'acidentes fatais 2018'\n",
"fatais_19.name = 'acidentes fatais 2019'\n",
"velo_18.name = 'causa velocidade 2018'\n",
"velo_19.name = 'causa velocidade 2019'\n",
"df_ufs = pd.concat([fatais_18, fatais_19, velo_18, velo_19], axis=1, sort=False).fillna(0)\n",
"df_ufs"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"# Achando causas mais comuns\n",
"causas_18 = df18[df18['classificacao_acidente'] == 'Com Vítimas Fatais']['causa_acidente'].value_counts()\n",
"causas_19 = df19[df19['classificacao_acidente'] == 'Com Vítimas Fatais']['causa_acidente'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>2018</th>\n",
" <th>2019</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Causa do acidente fatal</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Falta de Atenção à Condução</th>\n",
" <td>1173</td>\n",
" <td>1119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Velocidade Incompatível</th>\n",
" <td>598</td>\n",
" <td>576</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Falta de Atenção do Pedestre</th>\n",
" <td>593</td>\n",
" <td>577</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Desobediência às normas de trânsito pelo condutor</th>\n",
" <td>580</td>\n",
" <td>707</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ingestão de Álcool</th>\n",
" <td>263</td>\n",
" <td>293</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Condutor Dormindo</th>\n",
" <td>234</td>\n",
" <td>241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ultrapassagem Indevida</th>\n",
" <td>217</td>\n",
" <td>232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mal Súbito</th>\n",
" <td>108</td>\n",
" <td>87</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Defeito Mecânico no Veículo</th>\n",
" <td>99</td>\n",
" <td>100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Animais na Pista</th>\n",
" <td>91</td>\n",
" <td>81</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pista Escorregadia</th>\n",
" <td>88</td>\n",
" <td>81</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Desobediência às normas de trânsito pelo pedestre</th>\n",
" <td>83</td>\n",
" <td>136</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Não guardar distância de segurança</th>\n",
" <td>79</td>\n",
" <td>89</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Restrição de Visibilidade</th>\n",
" <td>74</td>\n",
" <td>71</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Defeito na Via</th>\n",
" <td>64</td>\n",
" <td>31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Avarias e/ou desgaste excessivo no pneu</th>\n",
" <td>29</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ingestão de álcool e/ou substâncias psicoativas pelo pedestre</th>\n",
" <td>27</td>\n",
" <td>28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sinalização da via insuficiente ou inadequada</th>\n",
" <td>27</td>\n",
" <td>25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Deficiência ou não Acionamento do Sistema de Iluminação/Sinalização do Veículo</th>\n",
" <td>24</td>\n",
" <td>25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Objeto estático sobre o leito carroçável</th>\n",
" <td>15</td>\n",
" <td>17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Agressão Externa</th>\n",
" <td>14</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fenômenos da Natureza</th>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Carga excessiva e/ou mal acondicionada</th>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Ingestão de Substâncias Psicoativas</th>\n",
" <td>6</td>\n",
" <td>9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 2018 2019\n",
"Causa do acidente fatal \n",
"Falta de Atenção à Condução 1173 1119\n",
"Velocidade Incompatível 598 576\n",
"Falta de Atenção do Pedestre 593 577\n",
"Desobediência às normas de trânsito pelo condutor 580 707\n",
"Ingestão de Álcool 263 293\n",
"Condutor Dormindo 234 241\n",
"Ultrapassagem Indevida 217 232\n",
"Mal Súbito 108 87\n",
"Defeito Mecânico no Veículo 99 100\n",
"Animais na Pista 91 81\n",
"Pista Escorregadia 88 81\n",
"Desobediência às normas de trânsito pelo pedestre 83 136\n",
"Não guardar distância de segurança 79 89\n",
"Restrição de Visibilidade 74 71\n",
"Defeito na Via 64 31\n",
"Avarias e/ou desgaste excessivo no pneu 29 26\n",
"Ingestão de álcool e/ou substâncias psicoativas... 27 28\n",
"Sinalização da via insuficiente ou inadequada 27 25\n",
"Deficiência ou não Acionamento do Sistema de Il... 24 25\n",
"Objeto estático sobre o leito carroçável 15 17\n",
"Agressão Externa 14 16\n",
"Fenômenos da Natureza 10 10\n",
"Carga excessiva e/ou mal acondicionada 9 14\n",
"Ingestão de Substâncias Psicoativas 6 9"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"causas_18.name = 2018\n",
"causas_19.name = 2019\n",
"df_causas = pd.concat([causas_18, causas_19], axis=1, sort=False)\n",
"df_causas.index.name = 'Causa do acidente fatal'\n",
"df_causas"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment