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.
, .
. , , , , -.
. .
- .
- , , . , .
? !
, ?
. , 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 . .
, , , , 29 , .
, , , , . , , , , .
:
pc - 1 , m
, ,
29 - , 1346 - .
, m m+n:
. , , - .
pc , , . , , . , , .
, pc = 0.0062, :
- 257
- 7194
- , +. .. , 2 .
:
pc = 0.0076. :
- 7039
- 209
, . , , , .
, , , : https://colab.research.google.com/drive/1eltee0HilqqVQxpreC9-0w4b08EpMAgM?usp=sharing