Setiap kali saya naik taksi, laporan perjalanan dengan informasi berbeda datang ke email saya. Secara khusus, mereka berisi tanggal, waktu perjalanan, model mobil, dan nama pengemudi. Saya mendapat ide - untuk menganalisis laporan dari Yandex Taxi dan mendapatkan informasi paling menarik darinya. Anda juga mungkin selalu bertanya-tanya berapa kali Anda mengendarai mobil yang sama atau berapa kali pengemudi yang sama membawa Anda?
Tugas yang diuraikan di sini bisa menjadi latihan yang baik untuk analis pemula. Akan ada segalanya: python dengan pandas dan parsing HTML dan ekspresi reguler dan database dengan SQL.
Kami mendapatkan informasi
Ini adalah bagian yang tidak menarik, di sini saya akan menjelaskan bagaimana saya mengambil informasi dari kotak surat, untuk melihat kodenya, pada akhirnya saya akan melampirkan tautan ke laptop Python. Cara termudah adalah dengan membongkar kotak surat dalam format * .mbox. Ini lebih mudah daripada berurusan dengan api gmail, dan kotak surat saya ada di sana. Ini tidak akan secara otomatis menambahkan perjalanan yang terjadi setelah bongkar muat, tetapi untuk tujuan kami ini tidak penting.
Untuk mengurai arsip, kami akan menggunakan perpustakaan kotak surat. Ini akan memungkinkan Anda untuk mengakses properti dasar setiap pesan dari kotak surat, termasuk pengirim dan badan pesan itu sendiri.
Setelah memilih surat yang diperlukan, yaitu yang berasal dari pengirim taxi.yandex.ru kami segera menghadapi masalah. Yandex secara berkala mengubah struktur laporannya. Namun, strukturnya telah berubah secara global sekali, tahun ini. Sebelumnya semua informasi tentang trip tersebut hanya dalam bentuk teks utuh, kini berbentuk tabel. Oleh karena itu, saya harus menulis dua fungsi terpisah untuk mengekstrak informasi: jika surat tersebut berisi informasi dalam bentuk teks padat, kita cukup mencari informasi yang kita butuhkan menggunakan ekspresi reguler menggunakan masker; jika dalam bentuk tabel, maka kita parsing kode HTML huruf tersebut menggunakan beautiful soup. Kami memuat data yang diterima ke dalam kerangka data dan database cloud sehingga nantinya kami tidak perlu memutar ulang seluruh kotak dengan setiap penerimaan.
Menonton perjalanan
Setelah menerima data dalam bentuk terstruktur, menarik untuk dilihat statistiknya.
, .
. , , , , -.
. .
- .
- , , . , .
? !
, ?
. , 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