Ciência de dados na vida diária

– – obter dados, torná-lo limpo e analisá-lo

Colin Shu Segue 12 de jul · 6 min ler ( Fonte )

Eu geralmente me certifico de que não sou o “Late Person”. Mesmo às vezes eu não conseguia chegar a um encontro antes do tempo; Eu chego na hora certa. Como a maioria das pessoas, eu assumo, eu verifico o mapa do Google de antemão, planejando bem quando começar. No entanto, você nunca pode evitar todos os tipos de incidentes que o deixam preso no caminho. Ultimamente, acabei de adicionar um novo evento na minha lista. Apenas mudei para Seattle no verão, pela primeira vez, fui pego em uma ponte que poderia fechar! As pontes se fecham agora e depois, para a balsa passar. Às vezes, os 5 a 10 minutos podem deixá-lo ansioso.

Por esse motivo, pensei, por que não usar o conhecimento de ciência de dados para fazer algumas análises fundamentais. Meu amigo uma vez me disse que há um twitter da ponte de Seattle postando as informações de reabertura de fechamento de todas as pontes em Seattle, que eu descobri é um excelente recurso para fazer web scrapping. Dentro do twitter, descobri que os tweets são apenas até seis dias antes, o que é suficiente para um mini projeto de ciência de dados.

(Os tweets geralmente se parecem com isso)

Geralmente, o web scraping é um método poderoso para um cientista de dados coletar dados de sites. Mesmo quando obtemos permissão para usar a API, podemos nos encontrar na necessidade de obter algumas informações de fora do banco de dados existente. Essas informações podem nos ajudar a analisar melhor o problema ou aumentar os recursos para uma melhor modelagem. Entre todos os pacotes de navegadores para Python, o BeautifulSoup e o Selenium são uma das ferramentas mais usadas. O BeautifulSoup permite que você armazene toda a página HTML para análise adicional, enquanto o Selenium permitirá que você clique em botões, digite palavras nas caixas e role para baixo na página da Web. Neste projeto, usei o Selenium para rolar pelo twitter (assim como um humano), e o BeautifulSoup para armazenar a página HTML, bem como analisá-la para obter todas as informações.

Primeiro, importamos as bibliotecas de demolição da web e abrimos a página usando o Selenium.

Essa função simula o processo de rolagem e obtém o objeto do elemento da web para análise. Como mostra a declaração de impressão, coletamos 821 tweets no total.

Aqui, eu armazeno meus documentos JSON no MongoDB, que é um programa de banco de dados NoSQL. Este vídeo oferece uma ótima introdução a esse banco de dados. O MongoDB usa documentos semelhantes a JSON com esquema, o que é útil para armazenar o arquivo HTML. No entanto, o MongoDB requer que o cliente efetue login. Então, usando a função insert-one, podemos anexar nossos documentos.

Para a análise de HTML, podemos usar o BeautifulSoup. Uma das funções de análise é mostrada acima. Depois de inspecionar a página, precisamos examinar a tag HTML, como “div”, “a”, “span”, “li”, para encontrar as informações que desejamos e usar o método correto para localizá-las e chamá-las. Assim que obtivermos o registro de data e hora, podemos convertê-lo para o tipo DateTime.

Depois de analisarmos o HTML e as informações de tempo, ponte e status, podemos armazená-los em um quadro de dados. O quadro de dados ficaria assim.

Normalmente, o processo de engenharia de dados pode ser outro desafio. Às vezes, há alguns registros de dados inválidos, como o valor Null, ou pode haver alguns registros absurdos que podem ser gerados por erro humano. Todos estes precisam ser avaliados. Como o processo de limpeza de dados é bastante entediante, não o incluirei no blog.

Outro problema com este conjunto de dados é que é difícil interpretar o status. Para ajudar a traçar uma figura, defino o status “fechado” como 1 e o status “reaberto” como 0. O período de tempo entre um estado “fechado” e um status “reaberto” representa o tempo que os ferries passaram. Enquanto isso, o período de tempo entre um status “reaberto” e um status “fechado” representa o tempo que os carros passaram. O primeiro é o status em que eu estava interessado.

Como mostrado acima, cada barra estreita representa o status “fechado” das pontes. As seis subtramas dão um instinto da frequência de “fechamento”, o tempo total “fechado” de cada ponte em seis dias. Lendo a partir desta trama, aprendemos que a ponte Fremont, a Ponte Ballard e a ponte da Universidade são as pontes mais movimentadas de Seattle. Eles representam o maior tempo “fechado” total e a maior frequência de “fechamento”. Além disso, a partir de um olhar mais atento, podemos dizer que a maior parte do estado de mudança acontece das 10h às 19h.

Se calcularmos o período total de tempo para cada ponte, também podemos gerar este quadro de dados, que mostra o tempo de fechamento no total, a freqüência de fechamento no total e na média diária. Com o tempo total dividido dividido pela frequência de fechamento no total, a média de duração fechada pode ser calculada. A partir disso, podemos ver as três primeiras pontes fechadas com maior frequência e mais tempo.

É mais claro a partir de um gráfico de barras, que mostra que a ponte Fremont permaneceu no estado “fechado” o tempo mais longo no total entre as seis pontes nos últimos seis dias. No total, o estado fechado da ponte Fremont soma cerca de 10 horas.

Mais interessante, nestes seis dias, a ponte Lower Spokane St permaneceu no estado “fechado” a mais longa, em média.

Vale a pena tentar plotar seus resultados em um mapa, se as informações de localização estiverem relacionadas e incluídas no seu conjunto de dados. Eu usei o Tableau aqui, um poderoso software de visualização de dados. Ao importar o arquivo CSV, as colunas serão mostradas no lado esquerdo, como "Dimensões" e "Medidas". Depois, você pode "arrastar" as colunas "Latitude" e "Longitude" no lado superior "Colunas" e "Linhas . ”Além disso, ao arrastar outras“ Dimensões ”e“ Medidas ”para a caixa“ Marcas ”do meio, os valores de cada linha serão mostrados no mapa como você deseja. Você pode jogar com os diferentes métodos de marcação para ver como ilustrar os valores de maneira eficiente.

Os seis círculos representam os seis locais das pontes, três perto do centro de Seattle e os outros três um pouco mais longe. O tamanho dos círculos ilustra a duração média do status fechado. Quanto maior o círculo, maior o status médio fechado em média. Os números representam a frequência média de cada ponte. A transparência da cor verde depende do tempo total fechado.

Agora temos uma compreensão mais próxima das pontes de Seattle, o que é muito mais emocionante! Podemos fazer hipóteses sobre por que, para pontes diferentes, a frequência e duração de fechamento são distintas. Também podemos executar a captura da Web a partir de outro site para testificá-los para investigação adicional.

Mas, praticamente, como eu, na maioria das vezes, pego ônibus através da Fremont Bridge e University Bridge, e como eu sei que agora essas pontes devem fechar apenas 5 minutos de vez em quando, eu não preciso me preocupar muito em chegar atrasado!

Espero que você ache este mini-projeto útil. Sinta-se livre para comentar abaixo, felicidades!