Рубрики
Без рубрики

Сколько я заплатил Uber?

Путешествие с Uber. Помечено анализом данных, сетью скребки, Python, Google Colab.

Будучи разработчиком, я чувствую себя взволнованным, чтобы смотреть конференции по машинному обучению, демонстрируя жизнь, такие как чат-боты или супер удивительные инструменты анализа изображений.

Но лично я провалился несколько раз в начале обработки/анализа данных, которые, как многие говорят, является основой ML. Изучение анализа данных может быть трудно начать. Большинство доступных учебных пособий у меня были настолько глубоко в сложных математических формулах, что я не смог следовать после нескольких лекций.

В эти выходные я решил сделать что -то основное без каких -либо знаний о Python или других инструментах. Пришлось искать решения на протяжении всего пути, но был приятным опытом.

Итак, я решил соскрести свои исторические данные с веб -сайта Uber и попытаться найти несколько ответов, таких как –

  • Сколько я заплатил Uber в общей сложности?
  • Сколько времени я потратил на поездки на Uber или в ожидании аттракционов?
  • Сколько я спас, выбрав обмен поездкой в качестве варианта?
  • Сколько я заплатил за км за различные поездки на Uber?

Хотя данные могут быть получены от API -интерфейсов Uber Developer. Но для изучения важной концепции сетевого разрыва я решил пойти на более длительный путь.

И гораздо больше, в зависимости от того, сколько данных вы царапаете и сколько вы расследование: D Итак, начнем

Шаг 1 – Соскажите данные из истории Uber

Мы можем получить историю Uber от этого Ссылка Анкет Это лицензионная конечная точка, которая имеет список аттракционов. Большая часть информации доступна на самой странице.

Чтобы сделать вещи более простыми, у нас есть плагин – Uber Data Extractor . Нам просто нужно открыть это Ссылка и нажмите на плагин. В течение некоторого времени у нас будет лист Excel в наших загрузках с большей частью необходимой информации.

Этот плагин итерации через лицевую конечную точку – https://riders.uber.com/trips?page= ;page-Number} и получает данные, чтобы сохранить его в листе Excel. После сбора информации у нас есть следующие столбцы – trip_id, date, date_time, driver, car_type, city, price, photall_method, start_time, start_address, end_time, end_address.

Но все еще не закончено. Два важных параметра еще остаются для захвата – Расстояние и время поездки. Эти данные доступны на странице деталей каждой поездки, к которой можно получить доступ от https://riders.uber.com/trips/{ trip-id} Анкет

К счастью, у нас есть Trip-id в данные, собранные сверху Chrome, используя, которые мы можем генерировать множество ссылок, которые нам нужно посетить.

Теперь мы можем использовать селен и хромированные панели для автоматизации открытия ссылок и печати необходимых полей. Поскольку я не так силен в Python, пожалуйста, игнорируйте, если я сделал несколько основных ошибок.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time


option = webdriver.ChromeOptions()

browser = webdriver.Chrome(executable_path='/Users/atiwari4/Downloads/chromedriver', chrome_options=option)

browser.get("https://riders.uber.com/trips")
time.sleep(60)

Выше код пытается отвезти вас к https://riders.uber.com/trips Ссылка, которая, в свою очередь, запрашивает аутентификацию. Нам нужно войти в учетную запись Uber, чтобы обработать следующие шаги. Таким образом, я добавил Time.sleep (60) . Он предоставляет нам буфер в размере 60 секунд, чтобы помочь нам завершить процесс входа в систему.

for a in arr:
    row = []
    browser.get(a)
    time.sleep(3)
    distance = browser.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[3]/div/div[1]/div[2]/div[2]/div/div[2]/h5")
    trip_time = browser.find_elements_by_xpath("/html/body/div[2]/div/div[2]/div/div/div[2]/div[3]/div/div[1]/div[2]/div[2]/div/div[3]/h5")
    row.append(a)
    distancex = [x.text for x in distance]
    row.append(distancex)
    trip_timex = [x.text for x in trip_time]
    row.append(trip_timex)
    print row

Здесь arr это массив ссылок на страницы с подробностями.

Используя XPath, мы выбираем необходимые элементы со страницы и печатаем их на консоли. Приведенный выше код может занять время в зависимости от количества поездок, которые вы завершили. Для получения дополнительной информации о селене с использованием селена, обратитесь к этому Статья Анкет

Теперь мой лист данных выглядит как это Анкет

Шаг 2 – Анализируйте данные с использованием Google Colaboratory

Google Колаба это облачная среда, которую можно использовать для запуска живого кода.

Мы можем импортировать листы в колабах, используя различные методы. Поскольку у нас уже загружен наш лист на Google-Sheets, мы можем напрямую получить к нему доступ к нему.

Сначала нам нужно аутентифицировать свою учетную запись Google с помощью коллабов.

!pip install --upgrade -q gspread
!pip install -U matplotlib

from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

После того, как мы пройдемся, это то, как мы импортируем лист из Google-Sheets

# Open our new sheet and read some data.
worksheet = gc.open('Uber').sheet1

# get_all_values gives a list of rows.
rows = worksheet.get_all_values()
print(rows)

# Convert to a DataFrame and render.
import pandas as pd
df = pd.DataFrame.from_records(rows)
df.head()

DF означает DataFrame который обеспечивается пандами. Согласно документации, это –

Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). Arithmetic operations align on both row and column labels. Can be thought of as a dict-like container for Series objects.

голова (n = 5 ) Функция возвращает Top N (по умолчанию 5) строки рамы данных.

Первый ряд в нашем листе неверно, и если я зашел заголовок для листа.

df.columns = df.iloc[0]
df = df.reindex(df.index.drop(0))

Теперь нам нужно определить столбец, который имеет уникальные значения.

df['trip_id'].is_unique
df = df.set_index('trip_id')
df.head()

Схема сейчас выглядит лучше. Но как насчет данных. Нам нужно очистить его, прежде чем мы начнем искать ответы. Например, столбец ценой – что -то вроде ₹ 89,53 Анкет Нам нужно удалить первые 3 символа из этого столбца.

df['price'] = df['price'].str.slice(3)

Далее нам нужно удалить запятую из столбца цен, чтобы преобразовать его дат в номере. Также нам нужно, чтобы столбец даты даты дата дата дата.

df['price'] = df['price'].str.replace(',','')
df['price'] = pd.to_numeric(df['price'])
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%y')

Теперь у нас будет много колонн, как NAN. Это особенно отмененные поездки, и нам нужно избавиться от них.

import numpy as np
df['end_time'].replace('', np.nan, inplace=True)
df['end_time'].replace('Dropoff time unknown', np.nan, inplace=True)
df['start_time'].replace('', np.nan, inplace=True)

df.dropna(subset=['end_time'], inplace=True)
df.dropna(subset=['start_time'], inplace=True)
df.dropna(subset=['price'], inplace=True)

Наконец вопрос десятилетия: D

Просто введите это, чтобы получить свой ответ –

df['price'].sum()

Оказывается, что я заплатил Рупий 26852.03 Uber (с участием Uber Eats). Мы также можем отделить различные услуги Uber и посмотреть, что мы заплатили за них индивидуально.

Чтобы узнать точное количество услуг Uber, пользуемого счетом, нам нужно запустить следующее код –

print pd.value_counts(df['car_type'].values, sort=True)

Вот результат –

Мы также можем построить графики в колабах, используя matplotlib библиотека. Вот пример графа времени против ценового графика.

Из этого набора данных можно извлечь еще тысячи ответов. Не стесняйтесь пробовать новые комбинации и комментарии в разделе ниже.

Нажмите Здесь Для листа колола с еще большим количеством выводов.

Оригинал: “https://dev.to/ajiteshtiwari/how-much-i-have-paid-to-uber-2l7c”