Cómo analicé mis viajes en taxi

Cada vez que tomo un taxi, me llega un informe de viaje con información diferente. En particular, contienen la fecha, la hora del viaje, el modelo de automóvil y el nombre del conductor. Se me ocurrió una idea: analizar los informes de Yandex Taxi y obtener la información más interesante de ellos. Usted también probablemente siempre se ha preguntado cuántas veces condujo el mismo automóvil o cuántas veces lo llevó el mismo conductor.





La tarea que se describe aquí puede ser un buen ejercicio para los analistas novatos. Habrá de todo: python con pandas y análisis de HTML y expresiones regulares y bases de datos con SQL.





Obtenemos información

Esta es una parte poco interesante, aquí describiré cómo recuperé la información del buzón, para ver el código, al final adjuntaré un enlace al cuaderno de Python. La forma más sencilla era descargar el buzón en formato * .mbox. Es más fácil que lidiar con la api de gmail, y mi buzón está ahí. Esto no agregará automáticamente los viajes que se realizaron después de la descarga, pero para nuestros propósitos esto no es crítico.





Para analizar el archivo, usaremos la biblioteca de buzones. Le permitirá acceder a las propiedades básicas de cada mensaje desde el buzón, incluido el remitente y el propio cuerpo del mensaje.





Después de elegir las letras necesarias, es decir, las que provienen del remitente taxi.yandex.ru, inmediatamente nos enfrentamos a un problema. Yandex cambia periódicamente la estructura de sus informes. Sin embargo, la estructura ha cambiado globalmente una vez, este año. Antes de eso, toda la información sobre el viaje solo estaba en forma de texto sólido, ahora tiene forma de tabla. Por lo tanto, tuve que escribir dos funciones separadas para extraer información: si el mensaje contiene información en forma de texto sólido, simplemente encontramos la información que necesitamos usando expresiones regulares usando máscaras; si tiene la forma de una tabla, analice el código HTML de la carta usando una hermosa sopa. Cargamos los datos obtenidos en un dataframe y una base de datos en la nube para que luego no tengamos que rebobinar toda la caja con cada admisión.





Ver viajes

Habiendo recibido los datos de forma estructurada, es interesante ver las estadísticas.





, .





Los costos de viaje cambian con el tiempo

. , , , , -.





Un pico estrecho - saliendo al trabajo, uno ancho - desde el trabajo.
- , - .

. .





- .





- , , . , .









? !

, ?





. , 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 . .





Distribución de intervalos entre viajes con conductor recurrente

, , , , 29 , .





, , , , . , , , , .





Asignación de brechas entre viajes con autos 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