Ciência de Dados: O processo de obter respostas a partir de dados reais [Parte 2]

Compartilhe

Compartilhar no facebook
Compartilhar no google
Compartilhar no twitter
Compartilhar no linkedin

Iniciar no campo da Ciência de Dados não é tarefa simples. É necessário ao menos um pouco de domínio em diversas áreas. Além disso, é preciso exercitar a aplicação desse conhecimento teórico em casos reais e isso pode ser ainda mais difícil.

A maioria dos cursos disponíveis por aí apresenta atividades práticas pouco originais, para dizer o mínimo, mas atacar um problema real logo de cara pode ser um tanto intimidador para um iniciante.

Pensando nisso, decidi compartilhar um artigo onde apresento um exemplo de como esse processo pode ser feito, utilizando dados reais.

A ideia é focar no processo (da formulação da questão inicial até a conclusão, passando pela obtenção, limpeza e tratamento dos dados, assim como a geração de visualizações) e não na implementação em si, por isso não há muitos detalhes sobre as bibliotecas ou métodos utilizados, mas essa é a parte fácil de se encontrar na internet.

O tema escolhido foi o desastre de Brumadinho, um assunto atual e ainda com muitas questões em aberto. 

Essa é a parte 2 deste artigo. Caso você tenha começado por aqui, recomendo que volte e  leia antes a parte 1, já que os processos apresentados aqui são uma sequência dos passos executados na parte anterior.

Limpeza e tratamento dos dados (continuação)

Tendo finalizado com os dados da ANA, vamos fazer agora a limpeza e o tratamento dos dados das estações do CEMADEN.

Como dito anteriormente, esses dados estão dispostos em diversos arquivos, por isso teremos que usar uma nova biblioteca para percorrer todos esses arquivos e consolidar os dados em um único DataFrame.

Logo no carregamento, além do tratamento para o separador, decimal e índice, vamos já definir quais colunas queremos carregar.

O ideal é restringir os dados apenas ao que precisamos sempre que possível, pois isso diminui a quantidade de memória e o processamento necessários para lidar com os dados.

No caso anterior, como tínhamos apenas um arquivo era mais fácil verificar o formato em que as informações foram registradas, mas agora estamos lidando com um dataset dividido em mais de 60 arquivos e ao inspecionar apenas um deles não é possível ter essa garantia.

Sendo assim, ao concatenarmos os dados de cada arquivo, vamos preservar o índice original e aproveitar disso para imprimir a primeira linha de cada um, verificando se tudo ocorreu como deveria.

data science

data_science_brumadinho_2_02

Foi bom termos tomado esse cuidado pois, pelo que vemos, a forma de registrar os dados mudou ao longo do tempo. De fato, se olharmos linha por linha, podemos identificar três padrões distintos:

  • Até março de 2015, tanto as datas quanto os valores estavam no padrão brasileiro (dia/mês/ano e decimais separados por vírgula)
  • Em abril, maio, junho e julho de 2015, as datas estão em formato internacional e os valores estão com os decimais separados por ponto
  • A partir de agosto de 2015, as datas se mantém no padrão internacional mas os valores voltam a ser registrados no padrão brasileiro

Sabendo disso, podemos renomear os arquivos de forma que os nomes distingam o padrão utilizado em cada um, assim conseguimos carregá-los de forma independente para fazer os tratamentos necessários.

data_science_brumadinho_2_03

Ótimo, agora que temos todos os nossos dados no mesmo formato podemos combiná-los novamente em um só DataFrame.

data_science_brumadinho_2_04

A quantidade de dados que temos aqui ainda é enorme, são quase um milhão e meio de células, o que ainda deixa nossas operações lentas. Podemos restringir um pouco mais os dados filtrando as estações distantes.

Como dissemos, para facilitar a análise e não precisar recorrer a métodos mais complexos como Polígonos de Thiessen para fazer uma média ponderada entre todas as estações, decidimos utilizar sempre os dados geograficamente mais próximos à barragem.

As estações do CEMADEN passaram a operar a partir de 2014, disponibilizando 10 novas fontes de dados, mas seguindo nossa ideia inicial poderíamos simplesmente utilizar os dados da estação mais próxima (a de Córrego do Feijão).

Então, vejamos se podemos seguir com essa abordagem:

data_science_brumadinho_2_05

Certo, analisando somente a estação de Córrego do Feijão reduzimos em mais de 90% a quantidade de dados, mas eles ainda estão dispostos por horário e nós precisamos deles consolidados por mês.

O próximo passo é padronizar os horários de forma que consigamos fazer uma agregação. No momento isso não seria possível pois, como podemos ver nos blocos anteriores, os minutos e segundos nem sempre são os mesmos para todas as entradas.

O site do CEMADEN explica os diferentes horários gravados em nosso DataFrame:

“… os pluviômetros automáticos se conectam aos servidores do Cemaden e transmitem dados dos acumulados de chuva, em milímetros, a cada 10 minutos, sendo, então, processados e disponibilizados para a Sala de Situação do CEMADEN em plataforma especializada desenvolvida pelo Centro. Por outro lado, caso não esteja chovendo, o pluviômetro se conectará apenas uma vez a cada hora, enviando o acumulado de 0 milímetro dos últimos 60 minutos.”[8]

Então devemos partir do princípio que precisamos ter ao menos uma medição por hora. Em um mês de 28 dias temos 672 horas, em um de 29 temos 696, 30 dias tem 720 horas e, por fim, um mês de 31 dias tem 744 horas. Sabendo disso, vamos verificar a consistência dos dados que temos:

data_science_brumadinho_2_06

data_science_brumadinho_2_07
Pelo que vemos, a estação de Córrego do Feijão deixou de registrar ou transmitir informações durante vários momentos. Isso demonstra que só os dados dessa estação são insuficientes para obter toda a amostra que precisamos.

Vamos usar então uma abordagem parecida com a que fizemos anteriormente com a coluna ‘NivelConsistencia’ no dataset da ANA e preencher as lacunas com os dados das outras estações do CEMADEN por ordem de proximidade, até termos dados suficientes.

data_science_brumadinho_2_08

data_science_brumadinho_2_09

Agora sim temos uma amostra relevante. Ainda temos alguns meses com dados ausentes, mas essas lacunas não chegam a representar nem 2% do total de horas no mês.

Então falta somente consolidar esses dados em um formato de Série, da mesma forma que fizemos com o dataset da ANA, e estaremos prontos para gerar as visualizações que nos ajudarão a responder nossa questão inicial.

data_science_brumadinho_2_10

Visualizações

Com os dados limpos e tratados, podemos criar visualizações gráficas que não só nos ajudam a entender os dados como permitem que identifiquemos padrões, anomalias e também respondamos a diversas questões de maneira imediata.

data_science_brumadinho_2_11

A primeira visualização que vamos criar é uma que mostra a quantidade de chuva acumulada no quarto semestre do ano em Brumadinho em três recortes: máxima histórica, média histórica e as medições de 2018. Isso para cada um dos datasets.

O intuito aqui é conseguir identificar se procede a afirmação feita na reportagem[1] citada no início do nosso artigo (de que no último semestre de 2018 teria chovido 72% acima da média na região da barragem) e se esse valor é de fato uma anomalia significativa.

data_science_brumadinho_2_12
data_science_brumadinho_2_13

A próxima visualização vai exibir detalhes do perfil pluviométrico de Brumadinho. Vamos exibir em um só gráfico as médias históricas de chuvas por mês (e o erro padrão), as máximas históricas por mês e as medições reais de julho de 2018 a janeiro de 2019.

A ideia é contrapor as chuvas dos meses anteriores à tragédia com o comportamento padrão de chuvas e também com o comportamento mais extremo já registrado na região. Faremos isso para cada um dos datasets.

data_science_brumadinho_2_14

data_science_brumadinho_2_15

data_science_brumadinho_2_16

Vale notar que o erro padrão para os dados do CEMADEN é muito maior que o dos dados da ANA, o que era de se esperar, visto que a amostra é muito menor.

 

Conclusão

Com ajuda das visualizações, podemos voltar às perguntas que nos propusemos a responder:

– No último trimestre de 2018 choveu 72% acima da média pluviométrica em Brumadinho, como afirmou o jornal Estado de Minas em sua reportagem[1]?

Os dados do CEMADEN, disponíveis apenas a partir de 2014, formam uma amostra pequena para gerar um valor estatístico relevante, mas por se tratar de um órgão criado especificamente para o monitoramento de desastres naturais resolvemos verificar se o Estado de Minas havia utilizado esses números para fazer sua afirmação.

Mas o fato é que as chuvas do último trimestre de 2018, registradas pelo CEMADEN, foram apenas 7,8% acima da média. No caso dos dados da ANA, os registros de 2018 foram inclusive menores do que a média.

Assim sendo, temos indícios suficientes para afirmar que a informação veiculada na reportagem não procede.

– Houveram chuvas fora dos padrões e que poderiam ter impactado no rompimento da barragem de Brumadinho?

A primeira análise que devemos fazer é a comparação entre os registros de julho de 2018 a janeiro de 2019 e as médias históricas.

Os gráficos mostram que, dos 7 meses anteriores ao desastre, apenas agosto e setembro apresentaram chuvas consistentemente acima da média, mas mesmo assim em níveis que não chegam nem à metade da média histórica do mês mais chuvoso, por exemplo.

Outubro e novembro foram dentro da média, oscilando para mais ou menos dependendo do dataset mas ainda assim dentro das margens de erro.

Porém, dezembro e principalmente janeiro, tipicamente os meses mais chuvosos, tiveram chuvas consideravelmente abaixo da média na virada do ano de 2019.

De fato, se formos fazer uma análise puramente sob a perspectiva da busca pela causa da tragédia, devemos ressaltar que os meses anteriores a ela tiveram níveis de chuva muito abaixo das máximas históricas, o que demonstra que a quantidade de chuva na região não estava fora de padrões já registrados anteriormente e não pode ser considerada um fator causador para o desastre já que, além de todas as ponderações que fizemos aqui, os mais conservadores parâmetros de segurança deveriam ter sido adotados ao se lidar com uma estrutura com tamanho potencial de destruição.

 

Links externos

  1. Reportagem “Mais uma vítima de Brumadinho é identificada; 13 continuam desaparecidas”, do jornal Estado de Minas. https://www.em.com.br/app/noticia/gerais/2019/12/02/interna_gerais,1105377/mais-uma-vitima-de-brumadinho-e-identificada-13-continuam-desaparecid.shtml
  2. Reportagem “Atividades de mina da Vale em Brumadinho deviam ter parado em 2016, diz inquérito”, do jornal Estado de Minas. https://www.em.com.br/app/noticia/gerais/2019/09/25/interna_gerais,1087875/atividades-de-mina-da-vale-em-brumadinho-deviam-ter-parado-em-2016.shtml
  3. Relatório Mine Tailings Storage: Safety Is No Accident, da ONU. http://www.grida.no/publications/383
  4. Reportagem “Tragédia com barragem da Vale em Brumadinho pode ser a pior no mundo em 3 décadas”, da BBC Brasil. https://www.bbc.com/portuguese/brasil-47034499
  5. Dados da estação de Melo Franco no SNIRH da ANA. http://www.snirh.gov.br/hidroweb/rest/api/documento/convencionais?tipo=3&documentos=2044008
  6. Link para acesso aos dados das estações do CEMADEN. http://www.cemaden.gov.br/mapainterativo/download/downpluv.php
  7. http://arquivos.ana.gov.br/infohidrologicas/cadastro/DiretrizesEAnalisesRecomendadasParaConsistenciaDeDadosPluviometricos-VersaoJan12.pdf
  8. https://www.cemaden.gov.br/pluviometros-automatico/
Michel Nagme

Michel Nagme

Engenheiro de Computação pela UNICAMP, Desenvolvedor Backend Sênior na Sympla, entusiasta de Ciência de Dados e Inteligência Artificial e cervejeiro caseiro nas horas vagas.

Deixe um comentário

Categorias

Posts relacionados

Siga-nos

Baixe nosso e-book!

%d blogueiros gostam disto: