Будучи разработчиком, я чувствую себя взволнованным, чтобы смотреть конференции по машинному обучению, демонстрируя жизнь, такие как чат-боты или супер удивительные инструменты анализа изображений.
Но лично я провалился несколько раз в начале обработки/анализа данных, которые, как многие говорят, является основой 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”