Como analisei minhas viagens de táxi

Cada vez que pego um táxi, um relatório de viagem com informações diferentes chega ao meu correio. Em particular, eles contêm a data, o tempo de viagem, o modelo do carro e o nome do motorista. Tive uma ideia - analisar relatórios do táxi Yandex e obter as informações mais interessantes deles. Você também provavelmente sempre se perguntou quantas vezes dirigiu o mesmo carro ou quantas vezes foi dirigido pelo mesmo motorista?





A tarefa delineada aqui pode ser um bom exercício para analistas novatos. Tudo estará aqui: python com pandas e análise de HTML e expressões regulares e bancos de dados com SQL.





Nós obtemos informações

Esta é uma parte desinteressante, aqui descreverei como recuperei informações da caixa de correio, para ver o código no final, anexarei um link para o laptop Python. A maneira mais fácil era descarregar a caixa de correio no formato * .mbox. É mais fácil do que lidar com a API do gmail, e minha caixa de correio está lá. Isso não adicionará automaticamente viagens que foram após o descarregamento, mas para nossos propósitos isso não é crítico.





Para analisar o arquivo, usaremos a biblioteca da caixa de correio. Ele permitirá que você acesse as propriedades básicas de cada mensagem da caixa de correio, incluindo o remetente e o próprio corpo da mensagem.





Depois de escolher as letras necessárias, nomeadamente as que vieram do remetente taxi.yandex.ru, imediatamente nos deparamos com um problema. Yandex muda periodicamente a estrutura de seus relatórios. No entanto, a estrutura mudou globalmente uma vez, este ano. Antes, todas as informações sobre a viagem eram apenas em forma de texto sólido, agora estão em forma de tabela. Portanto, eu tive que escrever duas funções separadas para extrair informações: se a carta contém informações na forma de texto sólido, simplesmente encontramos as informações de que precisamos usando expressões regulares usando máscaras; se estiver na forma de uma tabela, analise o código HTML da carta usando uma sopa bonita. Carregamos os dados recebidos em um dataframe e um banco de dados em nuvem para que mais tarde não tenhamos que rebobinar a caixa inteira a cada admissão.





Assistindo viagens

Tendo recebido os dados de forma estruturada, é interessante ver as estatísticas.





, .





Mudança de custo de viagem ao longo do tempo

. , , , , -.





Um pico estreito - saindo para o trabalho, um largo - do trabalho.
- , - .

. .





- .





- , , . , .









? !

, ?





. , 24 , . . , , , . .





:





3 , , .





DATE





NAME





CAR





CAR_MODEL





NUMBER





NAME_HASH





2020-06-23









Toyota





Camry





37077





-2596682743997844296





2020-06-17









Toyota





Camry





37077





-2596682743997844296





2020-06-05









Toyota





Camry





37077





-2596682743997844296





2019-11-27









Toyota





Camry





37077





-1058569546058211362









, , - , . , , .





DATE





TARIF





NAME





CAR





CAR_MODEL





NUMBER





NAME_HASH





2017-10-11













Hyundai





i40





20377





7008433025181534578





2020-04-16





+









Toyota





Camry





67877





7008433025181534578





2018-04-11













Kia





Rio





67077





-2646868843695703984





2020-04-17





+









Kia





Optima





58777





-2646868843695703984





, , 150-200 . .





Distribuição dos intervalos entre as viagens com motorista recorrente

, , , , 29 , .





, , , , . , , , , .





Alocação de lacunas entre viagens com carros repetidos

:





 pc - 1 , m 





P = \ frac {1} {N} (1-p_c) ^ m

, ,





\ frac {1} {N * p_c} = \ frac {29} {1346}

29 - , 1346 - .





, m m+n:





P_ {m, m + n} = \ frac {(1-p_c) ^ m} {N} * \ frac {1- (1-p_c) ^ {m + n}} {p_c}

. , , - .





 pc  , , . , , . , , .





, pc = 0.0062, :





  • - 257





  • - 7194





- , +. .. , 2 .





:





pc = 0.0076. :





  • - 7039





  • - 209





, . , , , .





, , , : https://colab.research.google.com/drive/1eltee0HilqqVQxpreC9-0w4b08EpMAgM?usp=sharing








All Articles