Эта статья из анализа сообщества китов. данныхсоревнование,Ссылка на конкурс следующая:[Весенний фестиваль 2023 Limited] Анализ работы онлайн-сервиса такси
Это традиционная программа Весеннего фестиваля научного сообщества открытого исходного кода и простого сообщества. Это также первый выпуск серии [Тренировочных лагерей по бизнес-анализу], организованных совместно с китовым сообществом и простыми людьми. -учитель Земли Чен. Его цель - использовать сценарии анализа реального мира и побудить учащихся использовать реальные вещи во время праздника Весеннего фестиваля. данныеjob, продвижение, поиск работыианализ данныхтрудоспособность。
Практичный учитель Чен — директор по данным начинающей компании, менеджер паблик-аккаунта «Практический учитель Чен», автор книги «Полное руководство по бизнес-анализу» с оценкой Дубана. 9.0, а также выступает в роли автора вопросов и судьи на этом мероприятии.
Предположим, вы — приложение для вызова такси. Отдел данных предоставляет ежедневные отчеты по данным для определенного региона. Теперь глава района сказал: «Я надеюсь, что вы обнаружите проблемы и возможности в результате ежедневного мониторинга и внесете предложения». Пожалуйста, внимательно изучите имеющиеся в отчете данные и дайте отчет. данные следующие:
Реальный бизнес-анализ таков: 80% ежедневной работы — это однообразные, скучные ежедневные, еженедельные, ежемесячные отчеты, эти отчеты по мониторингу и временному сбору данных. Однако руководители бизнес-отдела надеются, что с помощью простого мониторинга можно обнаружить проблемы и сделать выводы. Так Как увидеть подсказки в ежедневных данных? Как найти стандарт самостоятельно, если стандартного ответа нет? Как на основе данных можно сказать одно, два, три и быть убедительным? Это большое испытание для бизнес-аналитика.
Благодаря этому кейсу студенты могут ощутить реальное рабочее состояние. От замешательства в начале семестра до постепенной ясности, прозрения и способности контролировать данные и управлять бизнесом — требуется многолетний опыт. Сегодня я поведу вас сделать первый шаг.
Введение данных
Данные представляют собой данные о работе пяти городов определенного региона, разделенные на временные периоды за одну неделю. Поле: период времени, который представляет время суток, 0 — от 0 до 1 часа и т. д. Пузырь: взять таксиAPP, пассажиры выбирают отправную точку и пункт назначения, а приложение Советы по дополнительным моделям&Цена за один раз"пузырь" Вызов: увидев всплывающее сообщение, пассажир нажимает кнопку «Позвонить», чтобы позвонить. Ответ: Водитель получает заказ после того, как увидел звонок пассажира, что является «ответом». Заказ выполнен: водитель завершает заказ, а пассажир платит как «Заказ выполнен». Водитель онлайн: сколько раз водитель был онлайн за каждый период.
Чтобы уменьшить сложность анализа, принимаются следующие допущения:
Заказ выполнен в течение периода времени, сценарии с пересечением периодов времени не рассматриваются. «Драйвер онлайн» относится ко всем водителям в течение периода времени, независимо от колебаний в течение периода времени. Пузырь → звонок → ответ → завершение заказа, что можно просто рассматривать как коэффициент конверсии процесса.
ссылка:【2023 Spring Festival Limited】Отчет об онлайн-анализе работы службы такси
Количество выполненных заказов и уровень выполнения заказов (поскольку города разные, количество выполненных заказов отражает прибыльность города, а уровень выполнения заказов отражает возможности для улучшения операционных эффектов)
AED принадлежатьбольшой Городбольшой Городсередина D из APP Лучше всего работает, за ним следует Э, последнее А, но A Это крупнейший город региона. в A изразличные периоды времени Полный Тарифы заказа все плохие. Предварительно исключено, что на это влияет трафик. A Городиз как-то связан с общей деятельностью или конкуренцией, длябольшой Город A,Общее количество заказов больше,Важна изпрофиточка,Городу нужна серьезная оптимизация,Есть больший шанс。 BC принадлежать Малые и средние города Малые и средние городаиз Полный заказ Ставка Все лучше,C Городиздневное время Полный у заказа лучшая цена, но ночь 0-5 Скорость выполнения заказов низкая, C Город 0-5 точка Количество водителей небольшое, минимальное 284 Люди, на которые приходится пиковое значение в течение дня 30000 из 1% влево и вправо, можно увеличить количество водителей и увеличить C Удобство города для пассажиров. 3 Пример пузырька данных о точках 1148 вызов 452 отвечать 248 Полный заказ 212 Из индикаторакорреляционный анализ: Полный заказколичествои Водитель количество онлайн имеет наибольшую корреляцию,иллюстрировать Многие водители, то есть иллюстрировать Город большой, а количество выполненных заказов больше, так что можно Тяжелыйточкасосредоточиться набольшой Город,В городе больше всего водителей,Но в целом Полный Нет сравнения по количеству заказов C Ичита. Можно обратиться к A городиз Заказать цену C городиз заказать цены, сравнить, есть ли A город потому, что город большой, что привело к тому, что все больше пользователей, путешествующих на большие расстояния, пользуются метро и другими способами. Полный заказ Ставка и Количество заказов, полученных водителями, и соотношение водителей к пассажирам (количество заказов, выполненных водителями в час) Корреляция является наибольшей, что указывает на то, что она может пройти Улучшить инициативу водителей по принятию заказов на улучшение; заказ Ставка> Существует сильная положительная корреляция между количеством заказов, полученных водителями, и соотношением водителей и пассажиров (количество заказов, выполненных водителями в час), иллюстрировать продвигатьводительизинициатива Принимайте заказы Позитивность,Может увеличить количество заказов, получаемых водителями,продвигатьвызовприезжать Принимайте заказыприезжать Полный соотношение заказиз.
С точки зрения коэффициента конверсии, A Коэффициент конверсии города невелик, и окончательный платеж совершает относительно небольшое количество людей, т.е. A Город может сосредоточиться на улучшении центрального делового района из Полный количество заказов выше, чем A и E от Полный заказ Смотри, А и E из Полный заказ имеет наименьшее количество, и масштаб города, количество водителей не соответствует Из воронкообразной диаграммы видно, что A Городизпузырящийся - вызов - действительно, наибольшее количество погибших людей, среди которых существовало и др. Городвызовприезжатьотвечать ок. 10-30w изплохо, и A Городсуществовать 70W из Разница。
Если смотреть со стороны воронки,это количество пузырьков. 1134W ивызовчисло 470W Больше различий может улучшить выбор автомобиля или рекомендации по ценам. Оптимизация плана работы может включать маршруты, которые можно дополнительно оптимизировать. В то же время можно рассмотреть возможность использования купонов для повышения коэффициента конверсии. Кроме того, видно, что А. Существует множество драйверов «Городиз», но количество вызовов явно не слишком велико. существоватьрабочий деньиз 18 точка - это пиковый период вызовов, но количество онлайн-водителей сократилось примерно на 20%. 4000 Тысячи, в то время как за тот же период избольшой Город D Число городских онлайн-водителей имеет тенденцию к росту, и в этот период количество городских онлайн-водителей можно оптимизировать.
Введение данных
данные — пять городов в определенном регионе, 1 Эксплуатационные данные за еженедельный период времени Поле: период, обозначающий время суток, 0. представлять 0 Точка ~1 точка и так далее Пузырь: взять такси APP , пассажиры выбирают отправную точку и пункт назначения, а приложение Советы по дополнительным моделям & Цена за один раз "пузырь" Вызов: Пассажиры нажали кнопку, увидев всплывающее сообщение «Приехать». “вызов” кнопка, на этот раз вызов есть: Водитель принимает заказ, увидев вызов пассажира. “отвечать” Полный заказ: Водитель выполняет заказ, а пассажир оплачивает “Полный заказ” Водитель онлайн: сколько раз водитель был онлайн за каждый период.
Чтобы уменьшить сложность анализа, принимаются следующие допущения:
Заказ выполнен в течение периода времени, сценарии с пересечением периодов времени не рассматриваются. «Драйвер онлайн» относится ко всем водителям в течение периода времени, независимо от колебаний в течение периода времени. Пузырь → звонок → ответ → завершение заказа, что можно просто рассматривать как коэффициент конверсии процесса.
Удалите грязные данные: девятый и десятый столбцы «изданные» пусты, поэтому удалите эти два столбца «изданные»: ![![ImageName](https://img-blog.csdnimg.cn/img_convert/6e39fe53e3b692ff8043726b04c2d2b7.png#pic_center)
коэффициент конверсии:Полный заказчисло / Количество пузырьков,Из выбора пользователяточкаконецточкаприезжать Полный заказиз Обзор Ставка соотношение водитель/пассажир:Полный заказчисло / Водитель онлайн,Полный заказчислопредставлятьнастоящийизпассажирколичество,Водитель номер онлайн-величия водителя из количества, обозначающий количество заказов, полученных водителем в единицу времени, что очень важно с точки зрения дохода водителя** Водитель принимает заказ: есть номер / Водитель онлайн , обозначающий готовность водителя принимать заказы, Рабочие дни: 1 Значит понедельник приехать в пятницу израбочий день,0 значит суббота и воскресенье
для оригиналаданныедобавить вкоэффициент конверсии、соотношение водитель/пассажир、рабочий деньтри столбцаданные,Для последующего анализа Будьте готовы
Сравнительный анализ: сравните количество водителей, количество заказов, условия пиковой нагрузки и т. д. между каждым Городизом, проанализируйте качество Городиз и предложите решения. Анализ тенденций: наблюдая за тенденцией развития вещей, мы можем выявить причины этого явления и предложить решения.
использовать corr Функция вычисляет корреляцию между различными показателями и отображает ее в виде тепловой карты:
Как видно из рисунка выше: от Количество пузырьков、вызовчислоприезжатьотвечатьчисло,и Полный Степень корреляции заказномера и з в свою очередь увеличивается; заказчислои Водитель онлайн-номера имеют сильную взаимосвязь, ипериод время также очевидно связано Водитель онлайнчислоипериод время имеет очевидную связь, наблюдается в какой-то период времени,Водитель онлайн число Эйта,Фильмпериод время меньше Количество пузырьков、вызовчисло、отвечатьчислои Полный заказчислоипериод время имеет очевидную положительную корреляцию с из, наблюдаемый, в некоторых случаях период времяиз Заказов много, и какой-то период Заказов по времени мало Существует сильная положительная корреляция между коэффициентом конверсии и соотношением водителей к пассажирам, а также существует сильная положительная корреляция между количеством водителей и скоростью выполнения заказов. рабочий деньи Соотношение водитель/пассажир имеет слабую положительную корреляцию Соотношение водителей и пассажиров положительно связано с количеством заказов, полученных водителями, а фактическое количество водителей в день — это количество водителей в день. заказ весьма актуален. Если вы хотите улучшить; Ставка заказа позволяет максимально увеличить количество изотвечающих водителей.
Цель для этого app Увеличение дохода:
Индикатор Полярной звезды; количество заказа,Полный заказ Количество означает прибыль ,
Как улучшить; количество заказа,
для ADE Для Города можно попробовать увеличить количество вызовиотвечать. Оптимизируйте маршруты и предоставляйте купоны для увеличения количества билетов, Предоставляет награды за принятие заказов на увеличение количества присутствующих, Обучение и повышение квалификации водителей; заказчисло для BC Город в настоящее время продолжает поддерживать, принимая во внимание Количество заказов, полученных в полдень
Полную ставку заказа можно оптимизировать в пространстве
Вероятность того, что каждый Город выполнит заказ из пузыря приезжать, показана на рисунке ниже:
Видно, что С городиз имеет самый высокий коэффициент конверсии, а A городиз имеет самый низкий коэффициент конверсии и его можно изучать заново A город:
Нарисуйте процесс заказа города A C из воронкообразной диаграммы:
Видимый В городе наблюдается самый большой отток клиентов в период бурного роста числа выездов, а также большой отток клиентов из-за звонков приезжатьотвечать.
следует рассматривать A Для решения оперативных вопросов города можно добавить меры по удержанию пользователей между этапами повышения доступностивызов, такие как выдача купонов, оптимизация кратчайшего маршрута, рекомендации подходящих моделей автомобилей и цен, а также проведение проверок цен на рекомендуемые модели автомобилей и цены. AB Тестирование и т. д. Также хочусосредоточиться на Почему вы не можете завершить оформление заказа после оформления заказа Вы можете учитывать объезд или неспособность водителя добраться до места отправления в указанное время. Вам нужно следить за дополнительными индикаторами. данных Изучите дальше
Количество заказаи Водитель количество онлайн имеет наибольшую корреляцию,иллюстрировать Многие водители, то есть иллюстрировать Город большой, а количество выполненных заказов больше, так что можно Тяжелыйточкасосредоточиться набольшой Город,A В городе больше всего водителей, но A Количество онлайн-водителей в городе снизилось в пиковый период. Это может быть связано с тем, что один водитель использует несколько онлайн-платформ для заказа поездок, что увеличивает зависимость водителя от платформы. Контрастный рабочий деньиз D Город, Д городвечер Полный Количество заказов больше, А городдневное времяиз Полный Количество заказов больше.
нарисовать многолинейную диаграмму,каждый Городежедневноизсоотношение водитель/пассажир Как показано ниже:
Как видно из рисунка выше:
C Если у водителя города больше заказов, он будет более активным и навязчивым. У всех остальных городов есть возможности для улучшения.
Линейная диаграмма количества процесса заказа «Рисовать каждый Городиз»:
C Город Хотя Количество пузырьковнаименее,новызовчисло、отвечатьчислопрямойприезжать Полный Количество заказов самое большое из
С понедельника по воскресенье, С. городиз Заказчислодабольшинствоиз,но Количество онлайн из водителей却данаименееиз。A Хотя в городе больше всего пузырей, но в конечном итоге заказ выполняется в меньших количествах, поэтому A город это самый необходимый фокус наиз Город. с последующим Э, еще раз D。 Больше пузырьков но Полный Отсутствие заказа может быть операционной проблемой, проблемой конкуренции или транспортной проблемой.
рисоватькаждыйгородежедневноиз Полный Линейная диаграмма количества заказа:
Анализ в заключение
C Город Хотя Количество пузырьковнаименее,новызовчисло、отвечатьчислопрямойприезжать Полный Количество заказов самое большое из Как видно из приведенного выше рисунка, с понедельника по четверг C городиз Полный количество заказов выше, чемдругой Город,в пятницу,другой Городиз Полный количество заказов выше, чем C город
рисоватьрабочий денькаждый Городкаждыйпериод времени Полный заказномеризлинейной диаграммы:
Пиковый период для услуг онлайн-заказа автомобилей приходится на 7 приезжать 9 Очки, 17 приезжать 19 точка, индивидуальная поездка на работу и в школу и обратно из точки времени. середина 11 и 14 Временные периоды сильно колеблются, особенно C город, причина в том, что я пошел поесть в полдень, а после еды спрос на такси увеличился. рисовать Суббота и воскресеньекаждый Городкаждыйпериод времени Полный заказномеризлинейная диаграмма
рисоватьрабочий денькаждый Городкаждыйпериод времени Водитель онлайнномериз на линейном графике:
Как видно на картинке выше, рабочий деньдрайвер из количества в 19 Когда он достигнет наивысшего пика приезжать, и в это время из Полный заказчислобыл уменьшен,Поэтому его следует увеличить заранее.водительизколичество。
рисовать Суббота и воскресеньекаждый Городкаждыйпериод времени Полный заказномеризлинейной диаграммы:
Суббота и воскресенье Пиковый период для услуг онлайн-заказа автомобилей приходится на 7 приезжать 10、16 приезжать 20 В этот период часть его вызвана сверхурочной работой, а также он совпадает с временем, когда люди путешествуют и играют по выходным. В отличие от рабочего деньиз - это, в 16 приезжать 17 между,Полный Количество услуг такси продолжает расти. Причина в том, что у людей появляется больше свободного времени для поездок по выходным. В это время все больше людей выходят из дома и отправляются домой, что приводит к увеличению количества онлайн-заказов на вызов такси. . * На выходных нет фиксированного времени, чтобы пойти домой, поэтому часы пик в субботу и воскресенье вечером наступают позже и продолжаются. 20 к 21 час.
рисовать Суббота и воскресеньекаждый Городкаждыйпериод времени Водитель онлайнномеризлинейная диаграмма:
Как видно на картинке выше, суббота и воскресенье Водитель. онлайн Подсчитайте 18、19 Когда он достигнет наивысшего пика приезжать, и в это время из Полный Количество заказов имеет тенденцию к снижению, поэтому количество водителей следует увеличить заранее. 。
Анализ в заключение
Должно быть основано на рабочем В выходные дни в часы пик требования разные, увеличивайте количество водителей в часы пик, возьмите период награды и другие оперативные методы.
import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, HeatMap, Funnel
rawdata = pd.read_csv(
'/home/mw/input/car_hailing9900/ride-hailing_data.csv',
encoding='gb2312')
# rawdata.drop(['Unnamed: 8','Unnamed: 9'],axis=1,inplace=True)
rawdata.head()
rawdata.info()
<class ‘pandas.core.frame.DataFrame’> RangeIndex: 840 entries,0 to 839 Data columns (total 8 columns): Неделя 840 non-null object период времени 840 non-null int64 Город 840 non-null object Количество пузырьков 840 non-null int64 вызовчисло 840 non-null int64 отвечатьчисло 840 non-null int64 Полный заказчисло 840 non-null int64 Водитель онлайн 840 non-null int64 dtypes: int64(6), object(2) memory usage: 52.6+ KB
# Максимальное количество отображаемых строк
pd.set_option('display.max_rows', 10)
# коэффициент конверсии
change_rate = rawdata['Полный заказчисло'] / rawdata['Количество пузырьков']
data = pd.concat([rawdata, change_rate], axis=1).rename(columns={0: 'коэффициент конверсии'})
data
# соотношение водитель/пассажир Количество онлайн из водителей Среднее количество заказов, полученных в день
rate = (data['Полный заказчисло']/data['Водитель онлайн'])
data = pd.concat([data, rate], axis=1).rename(columns={0: 'соотношение водитель/пассажир'})
data
# Готовность водителя выполнять заказы
rate = (data['отвечатьчисло'] / data['Водитель онлайн'])
data = pd.concat([data, rate], axis=1).rename(columns={0: 'Водитель принимает заказы'})
data
# Расчет корреляции
cor = data.corr()
cor
# генерироватьрабочий деньособенность
data['рабочий день']=data.apply(lambda x:1 if ((x.Неделя=='Понедельник') | (x.Неделя=='Вторник') | (x.Неделя=='Среда') | (x.Неделя=='Четверг') | (x.Неделя=='Пятница')) else 0,axis=1)
data
# Визуализация корреляции
cor = data.corr()
cor
# Визуализация корреляции
cor = data.corr()
value = [[x, y, round(cor.values[x][y], 2)]
for x in range(11) for y in range(11)]
heatmap = HeatMap(init_opts=opts.InitOpts())
heatmap.add_xaxis(list(cor))
heatmap.add_yaxis(
"",
list(cor),
value,
label_opts=opts.LabelOpts(
is_show=True,
position="inside"))
heatmap.set_global_opts(
title_opts=opts.TitleOpts(title="Релевантность"),
visualmap_opts=opts.VisualMapOpts(max_=1),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=30)))
heatmap.render_notebook()
от Количество пузырьков、вызовчислоприезжатьотвечатьчисло,и Полный Степень корреляции заказномера и з в свою очередь увеличивается; заказчислои Водитель онлайн-номера имеют сильную взаимосвязь, ипериод время также очевидно связано Водитель онлайнчислоипериод время имеет очевидную связь, наблюдается в какой-то период времени,Водитель онлайн число Эйта,Фильмпериод время меньше Количество пузырьков、вызовчисло、отвечатьчислои Полный заказчислоипериод время имеет очевидную положительную корреляцию с из, наблюдаемый, в некоторых случаях период времяиз Заказов много, и какой-то период Заказов по времени мало Существует сильная положительная корреляция между коэффициентом конверсии и соотношением водителей к пассажирам, а также существует сильная положительная корреляция между количеством водителей и скоростью выполнения заказов. рабочий деньи Соотношение водитель/пассажир имеет слабую положительную корреляцию Соотношение водителей и пассажиров положительно связано с количеством заказов, полученных водителями, а фактическое количество водителей в день — это количество водителей в день. заказ весьма актуален. Если вы хотите улучшить; Ставка заказа позволяет максимально увеличить количество изотвечающих водителей.
Цель для этого app Увеличение дохода
Индикатор Полярной звезды; количество заказа,Полный заказ Количество означает прибыль ,
Как улучшить; количество заказа,
для ADE Для Города можно попробовать увеличить количество вызовиотвечать. Оптимизируйте маршруты и предоставляйте купоны для увеличения количества билетов, Предоставляет награды за принятие заказов на увеличение количества присутствующих, Обучение и повышение квалификации водителей; заказчисло для BC Город в настоящее время продолжает поддерживать, принимая во внимание Количество заказов, полученных в полдень
Полную ставку заказа можно оптимизировать в пространстве
# каждыйгородкоэффициент конверсии
x_data = data["Город"].drop_duplicates().to_list()
y_data = data.groupby('Город')['коэффициент конверсии'].mean().apply(
lambda x: round(x, 2)).to_list()
bar = Bar()
bar.add_xaxis(x_data)
bar.add_yaxis("каждыйгородкоэффициент конверсии", y_data)
bar.render_notebook()
BC Городкоэффициент конверсиилучше ADE Городкоэффициент конверсиииметьпродвигатькосмос
# каждыйшагкоэффициент конверсии
funnel_data = data.copy(deep=True)
# пузырь->вызовкоэффициент конверсии
rate = ( data['вызовчисло'] / data['Количество пузырьков'] )
funnel_data.insert(4, "риск->вызов",rate, allow_duplicates=False)
# вызов->отвечатькоэффициент конверсии
rate = ( data['отвечатьчисло'] / data['вызовчисло'] )
funnel_data.insert(6, "вызов->отвечать",rate, allow_duplicates=False)
# отвечать->Полный заказкоэффициент конверсии
rate = ( data['Полный заказчисло'] / data['отвечатьчисло'] )
funnel_data.insert(8, "отвечать->над",rate, allow_duplicates=False)
funnel_data
# Функция преобразования воронкообразной диаграммы Агород
def funnel_show(funnel_data, city_name):
change_df = data[data['Город'] == city_name][[
'Количество пузырьков','вызовчисло','отвечатьчисло','Полный заказчисло']].sum() change_data = [
list(z) for z in zip(
change_df.index.tolist(),
change_df.values.tolist())]
change_rate = funnel_data[funnel_data['Город'] ==
city_name][['риск->вызов', 'вызов->отвечать', 'отвечать->над']].mean()
funnel_value = change_rate.values.tolist()
funnel_value.insert(0, 1)
attr_trans = [
change_df.index.tolist()[i]+"-"+"%.2f%%" %
(funnel_value[i]*100) for i in range(4)]
funnel = (
Funnel()
.add("процесс", [list(z) for z in zip(attr_trans, change_df)],
label_opts=opts.LabelOpts(
font_size=13, position="right", formatter="{b}-{c}"),
tooltip_opts=opts.TooltipOpts(trigger='item',
formatter="{a} <br/>{b} : {c}",
background_color="#ffd1df",
border_color="#ffffd4",
border_width=4,
textstyle_opts=opts.TextStyleOpts(font_size=14, color='blue'),))
.set_global_opts(title_opts=opts.TitleOpts(title=city_name+"Воронкообразная диаграмма конверсии"))
)
return funnel
funnel_show(funnel_data, "Aгород").render_notebook()
funnel_show(funnel_data, "Bгород").render_notebook()
funnel_show(funnel_data, "Cгород").render_notebook()
funnel_show(funnel_data, "Dгород").render_notebook()
funnel_show(funnel_data, "Eгород").render_notebook()
# каждый Городсоотношение водитель/пассажир
x_data = data["Город"].drop_duplicates().to_list()
y_data = data.groupby('Город')['соотношение водитель/пассажир'].mean().apply(
lambda x: round(x, 2)).to_list()
x_data
y_data
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis('каждыйгородсоотношение водитель/пассажир', y_data)
)
bar.render_notebook()
иллюстрировать C город за водителя Максимальное количество принимаемых заказов в час
# каждыйгородежедневносоотношение водитель/пассажир
x_data = ['в понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
y1 = data[data['Город'] == 'Aгород'].groupby(
'Неделя')['соотношение водитель/пассажир'].mean().apply(lambda x: round(x, 2)).to_list()
y2 = data[data['Город'] == 'Bгород'].groupby(
'Неделя')['соотношение водитель/пассажир'].mean().apply(lambda x: round(x, 2)).to_list()
y3 = data[data['Город'] == 'Cгород'].groupby(
'Неделя')['соотношение водитель/пассажир'].mean().apply(lambda x: round(x, 2)).to_list()
y4 = data[data['Город'] == 'Dгород'].groupby(
'Неделя')['соотношение водитель/пассажир'].mean().apply(lambda x: round(x, 2)).to_list()
y5 = data[data['Город'] == 'Eгород'].groupby(
'Неделя')['соотношение водитель/пассажир'].mean().apply(lambda x: round(x, 2)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород", y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="соотношение водитель/пассажир"))
)
line.render_notebook()
Как видно из рисунка выше: Пятница и воскресенье водитель/пассажирбольшинство,водительиз Принимайте заказы Увеличение количества, С понедельника по воскресенье, С. городизсоотношение водитель/пассажирбольшинство,иллюстрировать C городиз Готовность водителя выполнять заказыидействительный Принимайте заказычислобольшинство,иллюстрироватьоперациииокруг app использоватьколичестволучше
x_data = ['Количество пузырьков','вызовчисло','отвечатьчисло','Полный заказчисло']
y1 = [round(data[data['Город'] == 'Aгород']['Количество пузырьков'].mean(),
2),round(data[data['Город'] == 'Aгород']['вызовчисло'].mean(), 2),round(data[data['Город'] == 'Aгород']['отвечатьчисло'].mean(), 2),round(data[data['Город'] == 'Aгород']['Полный заказчисло'].mean(), 2)]
y2 = [round(data[data['Город'] == 'Bгород']['Количество пузырьков'].mean(),
2),round(data[data['Город'] == 'Bгород']['вызовчисло'].mean(), 2),round(data[data['Город'] == 'Bгород']['отвечатьчисло'].mean(), 2),round(data[data['Город'] == 'Bгород']['Полный заказчисло'].mean(), 2)]
y3 = [round(data[data['Город'] == 'Cгород']['Количество пузырьков'].mean(),
2),round(data[data['Город'] == 'Cгород']['вызовчисло'].mean(), 2),round(data[data['Город'] == 'Cгород']['отвечатьчисло'].mean(), 2),round(data[data['Город'] == 'Cгород']['отвечатьчисло'].mean(), 2)]
y4 = [round(data[data['Город'] == 'Dгород']['Количество пузырьков'].mean(),
2),round(data[data['Город'] == 'Dгород']['вызовчисло'].mean(), 2),round(data[data['Город'] == 'Dгород']['отвечатьчисло'].mean(), 2),round(data[data['Город'] == 'Dгород']['Полный заказчисло'].mean(), 2)]
y5 = [round(data[data['Город'] == 'Eгород']['Количество пузырьков'].mean(),
2),round(data[data['Город'] == 'Eгород']['вызовчисло'].mean(), 2),round(data[data['Город'] == 'Eгород']['отвечатьчисло'].mean(), 2),round(data[data['Город'] == 'Eгород']['Полный заказчисло'].mean(), 2)]
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород", y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="Процесс заказа"))
)
line.render_notebook()
C Город Хотя Количество пузырьковнаименее,новызовчисло、отвечатьчислопрямойприезжать Полный Количество заказов самое большое из
С понедельника по воскресенье, С. городиз Заказчислодабольшинствоиз,но Количество онлайн из водителей却данаименееиз。поэтому,увеличить C Город Водитель из количества. A Хотя в городе больше всего пузырей, но в конечном итоге заказ выполняется в меньших количествах, поэтому A город это самый необходимый фокус наиз Город. с последующим Э, еще раз D。 Больше пузырьков но Полный Отсутствие заказа может быть операционной проблемой, проблемой конкуренции или транспортной проблемой.
#каждыйгородежедневно Полный заказчислоx_data = ['в понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье']
y1=data[data['Город'] == 'Aгород'].groupby('Неделя')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y2=data[data['Город'] == 'Bгород'].groupby('Неделя')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y3=data[data['Город'] == 'Cгород'].groupby('Неделя')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y4=data[data['Город'] == 'Dгород'].groupby('Неделя')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y5=data[data['Город'] == 'Eгород'].groupby('Неделя')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
line=(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород",y_axis=y1)
.add_yaxis(series_name="Bгород",y_axis=y2)
.add_yaxis(series_name="Cгород",y_axis=y3)
.add_yaxis(series_name="Dгород",y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="каждыйгородежедневно Полный заказчисло"))
)
line.render_notebook()
#рабочий денькаждыйгородкаждыйпериод времени Полный заказчислоx_data = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23']
y1=data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby('период времени')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y2=data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby('период времени')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y3=data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby('период времени')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y4=data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby('период времени')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
y5=data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby('период времени')['Полный заказчисло'].mean().apply(lambda x: round(x,1)).to_list()
line=(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород",y_axis=y1)
.add_yaxis(series_name="Bгород",y_axis=y2)
.add_yaxis(series_name="Cгород",y_axis=y3)
.add_yaxis(series_name="Dгород",y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод времени Полный заказчисло"))
)
line.render_notebook()
# рабочий денькаждыйгородкаждыйпериод времени Количество пузырьков
x_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Количество пузырьков'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Количество пузырьков'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Количество пузырьков'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Количество пузырьков'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Количество пузырьков'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод времени Количество пузырьков"))
)
line.render_notebook()
# рабочий денькаждыйгородкаждыйпериод временивызовчислоx_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['вызовчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['вызовчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['вызовчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['вызовчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['вызовчисло'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод временивызовчисло"))
)
line.render_notebook()
#рабочий денькаждыйгородкаждыйпериод времениотвечатьчисло
x_data = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23']
y1=data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby('период времени')['отвечатьчисло'].mean().apply(lambda x: round(x,1)).to_list()
y2=data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby('период времени')['отвечатьчисло'].mean().apply(lambda x: round(x,1)).to_list()
y3=data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby('период времени')['отвечатьчисло'].mean().apply(lambda x: round(x,1)).to_list()
y4=data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby('период времени')['отвечатьчисло'].mean().apply(lambda x: round(x,1)).to_list()
y5=data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby('период времени')['отвечатьчисло'].mean().apply(lambda x: round(x,1)).to_list()
line=(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород",y_axis=y1)
.add_yaxis(series_name="Bгород",y_axis=y2)
.add_yaxis(series_name="Cгород",y_axis=y3)
.add_yaxis(series_name="Dгород",y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод времениотвечатьчисло"))
)
line.render_notebook()
#рабочий денькаждыйгородкаждыйпериод временикоэффициент конверсии
x_data = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23']
y1=data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y2=data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y3=data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y4=data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y5=data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
line=(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород",y_axis=y1)
.add_yaxis(series_name="Bгород",y_axis=y2)
.add_yaxis(series_name="Cгород",y_axis=y3)
.add_yaxis(series_name="Dгород",y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод временикоэффициент конверсии"))
)
line.render_notebook()
Маленький Город BC C город должен быть маленьким 0-4 точка Полный процент заказов низкий Вы можете рассмотреть этот период времени из Количества пузырьков вызовчисло отвечатьчисло Полный заказчисло B город различные периоды времени Полный цены на заказ лучше 0.4
большой Город ADE A город различные периоды времени Полный ставки на заказы ниже иллюстрировать, возможно, не транспортную среду в городе , но это операционная или конкурентная проблема A городсуществовать 9 точка Утренний пик, лучше всего добраться до места 0.37 иллюстрировать A город востребован из D город 0-5 точка Полный заказ имеет лучшую цену Сравниватьдневное время еще лучше, иллюстрировать может быть связано с транспортом. E город различные периоды времени Полный ставки на заказы ниже иллюстрировать, возможно, не транспортную среду в городе , но это операционная или конкурентная проблема
x_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод времени Водитель онлайнчисло"))
)
line.render_notebook()
C Город Слишком мало водителей ночью может быть увеличеноночьводительиз Задачанадв награду
# Суббота, воскресенье, каждый день, каждый день времени Полный заказчислоx_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="Суббота и воскресеньекаждыйгородкаждыйпериод времени Полный заказчисло"))
)
line.render_notebook()
x_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby(
'период времени')['Водитель онлайн'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="рабочий денькаждыйгородкаждыйпериод времени Водитель онлайнчисло"))
)
line.render_notebook()
# Суббота, воскресенье, каждый день, каждый день времени Полный заказчислоx_data = [
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23']
y1 = data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y2 = data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y3 = data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y4 = data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
y5 = data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 0)].groupby(
'период времени')['Полный заказчисло'].mean().apply(lambda x: round(x, 1)).to_list()
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород", y_axis=y1)
.add_yaxis(series_name="Bгород", y_axis=y2)
.add_yaxis(series_name="Cгород", y_axis=y3)
.add_yaxis(series_name="Dгород", y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="Суббота и воскресеньекаждыйгородкаждыйпериод времени Полный заказчисло"))
)
line.render_notebook()
#суббота и воскресеньекаждыйгородкаждыйпериод временикоэффициент конверсии
x_data = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23']
y1=data[(data['Город'] == 'Aгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y2=data[(data['Город'] == 'Bгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y3=data[(data['Город'] == 'Cгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y4=data[(data['Город'] == 'Dгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
y5=data[(data['Город'] == 'Eгород') & (data['рабочий день'] == 1)].groupby('период времени')['коэффициент конверсии'].mean().apply(lambda x: round(x,2)).to_list()
line=(
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(series_name="Aгород",y_axis=y1)
.add_yaxis(series_name="Bгород",y_axis=y2)
.add_yaxis(series_name="Cгород",y_axis=y3)
.add_yaxis(series_name="Dгород",y_axis=y4)
.add_yaxis(series_name="Eгород",y_axis=y5)
.set_global_opts(title_opts=opts.TitleOpts(title="Суббота и воскресеньекаждыйгородкаждыйпериод временикоэффициент конверсии"))
)
line.render_notebook()
ссылка:Об онлайн-заказе автомобилей
🚩 Особенности индустрии онлайн-заказов автомобилей: Онлайн-вызов автомобилей, полное название онлайн-заказа такси, подключается через интернет-платформу. Вместимость (водитель, транспортное средство) и пассажиров,Доступна некруизовая служба такси.из Деловая деятельность。Заинтересованными сторонами в основном являются платформы、водитель、Транспортные средства и потребители повсюду.
🚩 Платформа онлайн-заказа автомобилей:
Поэтому из двух измерений [количество] и [качество] мы выбираем следующие Индикаторы данных для наблюдения за текущим состоянием онлайн-операций по вызову такси:
Индикаторы данных | Причины стать ключевым индикатором | иллюстрировать |
---|---|---|
[Количество] Соотношение пассажиров и водителей | достаточно лиизводительчисломожет удовлетворитьпассажиризнуждаться | =1 Баланс спроса и предложения [идеальное состояние] ;<1 пассажирколичествомного;>1 Водителей много. |
【качество】Полный заказ Ставка | Производительность и использование пространства,Прямые отношения: приезжать на платформу из прибыли,Доход платформы = комиссия *Полный заказчисло* Цена за клиента | Полный заказ Ставка = Полный заказчисло / вызовчисло |
В нижней таблице данных нет грязных данных. Просмотрите их напрямую и добавьте основные поля анализа: *Соотношение пассажиров и водителей = вызовчисло / Водитель онлайнчисло = Количество пассажиров онлайн / Водитель онлайнчисло* Полный заказ Ставка = Полный заказчисло / вызовчисло
Анализ в заключение:
(1)от【пассажирводитель Сравнивать】Искать:такой жеодин Город,рабочий соответственно, деньивыходные показывают аналогичные изменения, появляются пики и впадины, а время точки часто одинаковое. Поэтому ставьте рабочий деньивыходные комбинированный анализ целесообразен из-за; (2) [Соотношение пассажиров и водителей] и [Полный Нет очевидной корреляции между количеством заказов]; (3)дневное времяи Вечер из【Соотношение пассажиров и водителей】часто также демонстрирует определенную закономерность, обычно в дневное время. время достигает максимального значения приезжать, а ночь достигает минимального значения приезжать; (4)C Среднее [соотношение пассажиров и водителей] в городеиз значительно выше, чем в других городах, или как результат последующего анализа. данныеиз тяжелой точки объекта наблюдения.
Новыйкаждыйшагизкоэффициент конверсиикак поле анализа,попробуй просмотретькаждыйиндексмеждуиз Актуальность: вызовкоэффициент конверсии = вызовчисло / Количество пузырьков отвечатькоэффициент конверсии = отвечатьчисло / вызовчисло Полный заказкоэффициент конверсии = Полный заказчисло / отвечатьчисло
Анализ в заключение:
(1)период времении Водитель Число онлайн показывает относительно сильную положительную корреляцию, и разумно провести исследование на основе периода времени; (2)Водитель онлайнчислои Количество пузырьков,вызовчисло,отвечатьчислои Полный Число заказов демонстрирует сильную положительную корреляцию, доказывая, что пропускная способность и онлайн-количество играют ключевую роль в том, будет ли транзакция завершена; (3)но,Водитель онлайнчислоивызовкоэффициент конверсии几乎没иметь Актуальность,поэтому Используйте вместе Количество пузырьков Рассчитать запасы на основеизпассажирчислои наблюдатьвызовкоэффициент конверсииизценить Вероятно, нетбольшой,Также провереноиспользоватьвызовчислокак Количество пассажиров онлайнизценить,也可以существовать用户количествомногонокоэффициент конверсии Не высокийиз关键шаг做одиннекоторые маркетинговые акции; (4) Соотношение пассажиров и водителей и Полный заказкоэффициент конверсии,То есть нет никакой корреляции между количеством и качеством.
округточкарабочий деньивыходные,Агрегируйте [соотношение пассажиров и водителей], чтобы рассчитать среднее значение,Получите следующую линейную диаграмму:
Анализ в заключение:
(1) Независимо от того, на какой Город вы смотрите,выходные【Соотношение пассажиров и водителей】значительно увеличилось,По сравнению с количеством пассажиров,Емкостьколичество Немного не хватает。 (2) Среди пяти Городов: *C город【соотношение пассажиров и водителей】рабочий деньивыходныеиз Разницарасстояние Маленький,Но он всегда выше других Городов и подтягивает средний показатель.,ежедневноиз Очень недостаточная пропускная способность;A городи E городиз【соотношение пассажиров и водителей】ниже, рабочий среднее соотношение дней < 1. Количество водителей относительно достаточное, но рабочее; Соотношение деньивыходныеиз [пассажиро-водительское] существенно изменилось, и существующим мощностям трудно выдержать резкий рост числа пассажиров, и они недостаточно стабильны; Для сравнения, с точки зрения количества и стабильности мощности, B городи D Город показал лучшие результаты среди пяти городов. При работе вы можете в первую очередь сосредоточиться В другом городе потяните пять городов, куда приезжать, на горизонтальную линию.
Анализ в заключение:
(1) По сравнению с четырьмя другими Городами, D Пропускной способности транспортных средств недостаточно для удовлетворения спроса на поездки. Возможно, большему количеству водителей будет предложено работать в ночное время или разделить их на утреннюю и вечернюю смены. (2) То же, что из, A город E городдневное времяиночьиз Соотношение пассажиров и водителей сильно колеблется, B город D город более стабилен
Наблюдайте за рыночными данными, которые появляются примерно каждый день. 4-5 пики и минимумы в пределах каждого периода, принимайте ежедневные top5 и Tail5【Соотношение пассажиров и водителей】период времени выполнять статистику, фильтровать статистические значения, превышающие изданные в пять раз:
ежедневно【пассажирводитель Сравнивать】пикпериод времени – Многие пассажиры | ежедневно【пассажирводитель Сравнивать】нижняя точкапериод времени – Многие водители |
---|---|
Анализ в заключение:
Семь дней в неделю, больше пяти дней здесь генерировать пик за определенное время / Минимальная стоимость, иллюстрировать период Проблема измерения времени является универсальной проблемой и требует решения с помощью передовых методов работы. Относительно типичный A городи E город, в утренний час пик и вечерний период каждый день Число пассажиров, использующих автомобили, велико, но количество автомобилей, использующих автомобили, в ранние ночные часы невелико, и многие водители; D С другой стороны, транспортных мощностей недостаточно для удовлетворения спроса на поездки в ранние утренние часы, а утром транспортных мощностей больше, чем спроса на поездки, и распределение неравномерно B город часто бывает там 7.8 точка ознаменовала пик использования автомобилей, и 10 точка Транспортная способность водителя часто бывает самой большой в день, и водитель быстро реагирует на проблему недостаточной транспортной мощности. 。
каждый Городиз Полный заказ Ставка基本да恒定из,Видно, что на эффективность пространственного распределения транспортных мощностей количество водителей не влияет.,Сравнивая пять шоу «Город»:
каждый Городиз Полный Ставка заказа находится в основном в том же диапазоне, а ставка; Чем больше частота заказов, тем лучше качество, поэтому берите среднее значение. 0.79 изценить,ограниченный【Полный заказ Ставка >=0.79 это здоровый диапазон]. Понаблюдайте, сколько периодов в днях каждого города. временииз Полный Ставка заказа аномальная. интервал Внутри【Полный заказ Ставка < 0,79], какова пропорция, как показано на рисунке ниже:
Отсюда очевидно, что, в частности, A город,выходные Внутри Полный ставки заказов ниже здорового уровня за период время составляет столько же, сколько 70%, в то время как средний показатель ненормален; заказ Ставкапериод интервал времени составляет примерно 40%. С точки зрения качества B городи D Город также относительно стабилен.
разприезжатьначалоизв В заключение поместите пять городов в четыре сектора передвижения, чтобы наблюдать существующие проблемы. Проблема определяется здесь как набор данных. Из Пять Городов являются стандартными, сначала поставьте пять операций Городиз практически на один уровень, а потом уже дальше думайте, как оптимизировать сервис. С этой точки зрения на данный момент мы можем рассмотреть B город установлен в качестве эталона и поддерживает текущее рабочее состояние из. Самый простой способ начать — это A городи E городе, у них есть достаточная производственная база в качестве гарантии. С Проблема относительно большая и требует тщательного мониторинга. Во время фактической эксплуатации вы можете сначала набрать больше транспортных мощностей для присоединения в качестве основы для работы. Во время эксплуатации сначала наблюдайте за временными характеристиками и фиксируйте их каждую неделю. времяиз Пики и спады прогнозируются заранее, и 1-2h Запланируйте транспортную мощность так, чтобы не было экстремальных значений или выбросов, превышающих средний диапазон.
import pandas as pd
import numpy as np
from pyecharts.charts import *
import pyecharts.options as opts
import collections
rawdata = pd.read_csv('./ride-hailing_data.csv',encoding='utf8')
# rawdata.drop(rawdata.columns[[-1,-2]], axis=1, inplace=True) # Удалить последние два столбца грязных данных
rawdata
rawdata.describe().T
# Вычислить статистические характеристики дискретных переменных (по умолчанию вычисляются числовые типы) — передать «все» и поместить в таблицу.
rawdata.describe(include=['O']).T #пять Город,каждый Городкаждый Неделя,данные запускаются каждый час,5*7*24=840 строк
# Добавить новое поле анализа
rawdata['соотношение пассажиров и водителей']=rawdata['вызовномер']/rawdata['Водитель онлайн']
rawdata['Полный заказ Ставка']=rawdata['Полный заказчисло']/rawdata['вызовчисло']
rawdata
import matplotlib.pyplot as plt
import numpy as np
#Просмотрите доступные шрифты в системе и найдите приезжать, похожий на китайский шрифт.
from matplotlib.font_manager import FontManager
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
print (mat_fonts)
Результат:
{‘Segoe Script’, ‘Script MT Bold’, ‘Sylfaen’, ‘Microsoft NeoGothic’, ‘Perpetua Titling MT’, ‘Tw Cen MT’, ‘DejaVu Sans Display’, ‘Consolas’, ‘Lucida Fax’, ‘DIN Next LT Pro’, ‘STXingkai’, ‘MingLiU-ExtB’, ‘Segoe Print’, ‘Oswald’, ‘Showcard Gothic’, ‘Montserrat’, ‘Rage Italic’, ‘KaiTi’, ‘SimSun-ExtB’, ‘Eras Light ITC’, ‘Informal Roman’, ‘Jokerman’, ‘Old English Text MT’, ‘Century Gothic’, ‘Times New Roman’, ‘DejaVu Serif Display’, ‘Lucida Sans Unicode’, ‘Javanese Text’, ‘STIXSizeFiveSym’, ‘Gill Sans MT Condensed’, ‘FangSong’, ‘STXinwei’, ‘Mongolian Baiti’, ‘Tempus Sans ITC’, ‘Haettenschweiler’, ‘STIXSizeTwoSym’, ‘jdIcoMoonFree’, ‘Niagara Engraved’, ‘Papyrus’, ‘Magneto’, ‘Roboto Condensed’, ‘STXihei’, ‘Bodoni MT’, ‘Microsoft PhagsPa’, ‘Harlow Solid Italic’, ‘MS Mincho’, ‘SimHei’, ‘Snap ITC’, ‘Lucida Calligraphy’, ‘MT Extra’, ‘Tw Cen MT Condensed Extra Bold’, ‘Raleway’, ‘Arvo’, ‘jdIcoFont’, ‘jdiconfontB’, ‘Arial’, ‘Lobster’, ‘Mistral’, ‘cmmi10’, ‘Algerian’, ‘Curlz MT’, ‘Playbill’, ‘Bahnschrift’, ‘jdiconfontD’, ‘Wingdings’, ‘Kunstler Script’, ‘Century’, ‘Gill Sans Ultra Bold Condensed’, ‘Britannic Bold’, ‘Corbel’, ‘Goudy Stout’, ‘Arial Unicode MS’, ‘STSong’, ‘icomoon’, ‘Microsoft MHei’, ‘MV Boli’, ‘Vladimir Script’, ‘Cooper Black’, ‘cmsy10’, ‘Imprint MT Shadow’, ‘STIXSizeFourSym’, ‘Copperplate Gothic Light’, ‘STKaiti’, ‘jdFontCustom’, ‘Bell MT’, ‘Roboto’, ‘Franklin Gothic Medium Cond’, ‘Calibri’, ‘Courier New’, ‘Ravie’, ‘Gigi’, ‘Yu Gothic’, ‘Franklin Gothic Demi’, ‘cmss10’, ‘Segoe UI Emoji’, ‘Franklin Gothic Medium’, ‘Stencil’, ‘Elephant’, ‘jdFontAwesome’, ‘Gloucester MT Extra Condensed’, ‘Californian FB’, ‘Gadugi’, ‘Segoe UI Symbol’, ‘Juice ITC’, ‘Webdings’, ‘SimSun’, ‘Constantia’, ‘Poor Richard’, ‘Gill Sans MT Ext Condensed Bold’, ‘STHupo’, ‘cmb10’, ‘Parchment’, ‘STFangsong’, ‘Modern No. 20’, ‘MS Outlook’, ‘Tahoma’, ‘Eras Medium ITC’, ‘FZShuTi’, ‘Forte’, ‘Leelawadee UI’, ‘High Tower Text’, ‘STCaiyun’, ‘Segoe UI Historic’, ‘Malgun Gothic’, ‘Segoe UI’, ‘Lato’, ‘Perpetua’, ‘DejaVu Sans’, ‘Trebuchet MS’, ‘STIXNonUnicode’, ‘DejaVu Serif’, ‘Lucida Handwriting’, ‘Segoe MDL2 Assets’, ‘Georgia’, ‘Indie Flower’, ‘Nirmala UI’, ‘Chiller’, ‘Harrington’, ‘Verdana’, ‘FZLanTingHeiS-UL-GB’, ‘Matura MT Script Capitals’, ‘Colonna MT’, ‘Berlin Sans FB Demi’, ‘STZhongsong’, ‘Maiandra GD’, ‘Blackadder ITC’, ‘FZCuHeiSongS-B-GB’, ‘Bernard MT Condensed’, ‘Microsoft JhengHei’, ‘OCR A Extended’, ‘Wingdings 2’, ‘Candara’, ‘Berlin Sans FB’, ‘Comic Sans MS’, ‘Segoe WP’, ‘Bauhaus 93’, ‘Bradley Hand ITC’, ‘Century Schoolbook’, ‘French Script MT’, ‘Gill Sans Ultra Bold’, ‘jdiconfontC’, ‘Droid Serif’, ‘MS Gothic’, ‘Lucida Sans’, ‘Microsoft Tai Le’, ‘Gabriola’, ‘Rockwell Extra Bold’, ‘Broadway’, ‘Myanmar Text’, ‘Microsoft Sans Serif’, ‘Lucida Console’, ‘Brush Script MT’, ‘Niagara Solid’, ‘FZYaoTi’, ‘Garamond’, ‘DengXian’, ‘BPG Glaho’, ‘Franklin Gothic Heavy’, ‘STIXSizeThreeSym’, ‘Calisto MT’, ‘Vivaldi’, ‘Agency FB’, ‘STIXSizeOneSym’, ‘Lucida Sans Typewriter’, ‘Rockwell’, ‘DejaVu Sans Mono’, ‘Gill Sans MT’, ‘Monotype Corsiva’, ‘NumberOnly’, ‘Felix Titling’, ‘Dosis’, ‘cmtt10’, ‘Eras Demi ITC’, ‘Edwardian Script ITC’, ‘Microsoft New Tai Lue’, ‘Engravers MT’, ‘Microsoft Himalaya’, ‘Onyx’, ‘Baskerville Old Face’, ‘Marlett’, ‘Copperplate Gothic Bold’, ‘Wingdings 3’, ‘cmr10’, ‘Source Sans Pro’, ‘Tw Cen MT Condensed’, ‘Centaur’, ‘Lucida Bright’, ‘Microsoft YaHei’, ‘Rockwell Condensed’, ‘Eras Bold ITC’, ‘Poiret One’, ‘Impact’, ‘LiSu’, ‘Symbol’, ‘Franklin Gothic Book’, ‘Palatino Linotype’, ‘Ink Free’, ‘Roboto Slab’, ‘Pristina’, ‘Arial Rounded MT Bold’, ‘Ebrima’, ‘HoloLens MDL2 Assets’, ‘Viner Hand ITC’, ‘Sitka Small’, ‘Goudy Old Style’, ‘Castellar’, ‘JdIonicons’, ‘Microsoft Yi Baiti’, ‘Palace Script MT’, ‘Wide Latin’, ‘YouYuan’, ‘Franklin Gothic Demi Cond’, ‘jdiconfontA’, ‘Book Antiqua’, ‘Open Sans’, ‘Footlight MT Light’, ‘STLiti’, ‘DejaVu Math TeX Gyre’, ‘STIXGeneral’, ‘Kristen ITC’, ‘cmex10’, ‘Freestyle Script’, ‘Cambria’, ‘Bookman Old Style’}
d=['Aгород','Bгород','Cгород','Dгород','Eгород']
dd=['в понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье',]
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"]=False #Нормальное отображение отрицательного знака
plt.figure(figsize = (18,9),dpi = 200)#dpi четкость изображения
k=1
for i in range(5):
for j in range(7):
test=rawdata[(rawdata['Город']==d[i])&(rawdata['Неделя']==dd[j])]
plt.subplot(5,7,k,frameon = False)
plt.plot(test['период времени'],test['соотношение пассажиров и водителей'])
plt.plot(test['период времени'],test['Полный заказ Ставка']) #plt.yticks=(np.arange(0,5))
if (k-1)%7==0: #поделитесь набором меток осей
plt.ylabel(d[i]+'коэффициент пассажиро-водителя')
if k>28:
plt.xlabel(dd[j])
if ((k-1)%7!=0 and k<=28) or k in (1,8,15,22):
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([]) #Скрыть метки оси X
ax.axes.xaxis.set_ticks([]) #Скрыть масштаб по оси X
# plt.xticks=(np.arange(0,24),rotation=90)
c=np.mean(test['соотношение пассажиров и водителей']) #Добавляем среднюю линию
plt.axhline(y=c,color="red", linestyle='--', label=c)
k+=1 #позиционирование местоположения
#Цикл для отметки максимального значения и минимального значения бита точки каждого изображения.
y1_min=np.argmin(np.array(test['Соотношение пассажиров и водителей']))
y1_max=np.argmax(np.array(test['Соотношение пассажиров и водителей']))
show_min='['+str(y1_min)+','+str(round(float(test[test['период времени']==y1_min]['Соотношение пассажиров и водителей']),4))+']'
show_max='['+str(y1_max)+','+str(round(float(test[test['период времени']==y1_max]['Соотношение водителей-пассажиров']),4))+']'
# ●рисовать максимальную точку и минимальную позицию точки.
plt.plot(y1_min,test[test['период времени']==y1_min]['коэффициент пассажиро-водителя'],'ko')
plt.plot(y1_max,test[test['период времени']==y1_max]['коэффициент пассажиро-водителя'],'ko')
plt.annotate(show_min,xy=(y1_min,test[test['период времени']==y1_min]['Соотношение водителей-пассажиров']),xytext=(y1_min+0.5,test[test['период времени']==y1_min]['Соотношение водителей-пассажиров']))
plt.annotate(show_max,xy=(y1_max,test[test['период времени']==y1_max]['коэффициент пассажиро-водителей']),xytext=(y1_max+0.5,test[test['период времени']==y1_max]['Соотношение водителей-пассажиров']))
#Axes.annotate(s, xy, *args, **kwargs)
## s: Текст и содержание аннотации.
## xy: аннотированная точка координат, двумерный кортеж в форме (x, y).
## xytext: текст аннотации из точки координат, также двумерный кортеж, значение по умолчанию такое же.
# plt.savefig('sinc_2.png', c = 'c')
plt.show()
Проверятькаждый Городиз Полный Средняя ставка заказа, найденная в рабочем Между деньивыходнымииз нет большой разницы, поэтому ежедневные данные служат для каждого Городиз Полный. средняя ставка заказаучитывать。
print('Город',' Полный средняя ставка заказа ',' рабочий день Полный заказ Ставка ',' выходные Полный заказ Ставка ')
print('-------------------------------------------------------------------')
for i in d:
print(i,rawdata[(rawdata['Город']==i)]['Полный заказ Ставка'].mean(),rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['Полный заказ Ставка'].mean(),rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['Полный заказ Ставка'].mean())
Результат:
соотношение пассажиров и водителей на выходныхбудет высокимодиннекоторый,Пять общих характеристик Городиз
print('Город',' Среднее соотношение пассажиров и водителей ',' рабочий день Соотношение пассажиров и водителей ',' соотношение пассажиров и водителей на выходных ')
print('-------------------------------------------------------------------')
for i in d:
print(i,rawdata[(rawdata['Город']==i)]['Соотношение пассажиров и водителей'].mean(),rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['пассажирводитель Сравнивать'].mean(),rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['пассажирводитель Сравнивать'].mean())
Результат:
xxx='Соотношение пассажиров и водителей'
c = (
Line(
init_opts=opts.InitOpts(
theme='infographic',
width=1500,
)
)
.add_xaxis([i for i in rawdata['Город'].unique()])
.add_yaxis(
xxx+"рабочий день",
[rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['пассажирводитель Сравнивать'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
xxx+"выходные",
[rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['пассажирводитель Сравнивать'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
),)
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value}Юань", ),интервал=100
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='каждый Город'+xxx, pos_left='center'
),
xaxis_opts=opts.AxisOpts(
#name='Диапазон рейтинга продаж',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(rotate=-25),
axistick_opts=opts.AxisTickOpts(is_align_with_label=True,),
is_scale=False,
boundary_gap=False,
),
yaxis_opts=opts.AxisOpts(
splitline_opts=opts.SplitLineOpts(is_show=True),
name=xxx
),
legend_opts=opts.LegendOpts(pos_top='5%')
#datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(
# type_="inside",
# pos_bottom=0,
# )],
)
)
c.render_notebook()
Результат:
Диапазон здорового соотношения количества пассажиров и водителей: на основе A городи E город настроен на [0.8,1.2] Сколько времени каждый человек проводит в [зоне здоровья] каждый день? Какой процент всего дня занят?
fixedmin=rawdata[(rawdata['Город']=='Aгород')&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['пассажирводитель Сравнивать'].mean()
fixedmax=rawdata[(rawdata['Город']=='Aгород')&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['пассажирводитель Сравнивать'].mean()
fixedmax # 1.1730602582717495
[rawdata[(rawdata['Город'] == i)&(rawdata['пассажирводитель Сравнивать'].between(0.8,1.2))]['период времени'].count()/168 for i in rawdata['Город'].unique()]
[0.5714285714285714, 0.6428571428571429, 0.06547619047619048, 0.5297619047619048, 0.4642857142857143]
[rawdata[(rawdata['Город'] == i)&(rawdata['пассажирводитель Сравнивать'].between(0.8,1.2))&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['период времени'].count()/120 for i in rawdata['Город'].unique()]
[0.6833333333333333, 0.7333333333333333, 0.058333333333333334, 0.65, 0.55]
[rawdata[(rawdata['Город'] == i)&(rawdata['пассажирводитель Сравнивать'].between(0.8,1.2))&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['период времени'].count()/48 for i in rawdata['Город'].unique()]
[0.2916666666666667, 0.4166666666666667, 0.08333333333333333, 0.22916666666666666, 0.25]
xxx='здоровыйпассажирводитель Сравниватьокругмежду'
c = (
Line(
init_opts=opts.InitOpts(
theme='infographic',
width=1500,
)
)
.add_xaxis([i for i in rawdata['Город'].unique()])
.add_yaxis(
xxx+"рабочий день",
['%.3f' % (rawdata[(rawdata['Город'] == i)&(rawdata['пассажирводитель Сравнивать'].between(0.8,1.2))&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['период времени'].count()/120) for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
xxx+"выходные",
['%.3f' % (rawdata[(rawdata['Город'] == i)&(rawdata['пассажирводитель Сравнивать'].between(0.8,1.2))&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['период времени'].count()/48) for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
),)
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value}Юань", ),интервал=100
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='каждый Город'+xxx, pos_left='center'
),
xaxis_opts=opts.AxisOpts(
#name='Диапазон рейтинга продаж',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(rotate=-25),
axistick_opts=opts.AxisTickOpts(is_align_with_label=True,),
is_scale=False,
boundary_gap=False,
),
yaxis_opts=opts.AxisOpts(
splitline_opts=opts.SplitLineOpts(is_show=True),
name=xxx
),
legend_opts=opts.LegendOpts(pos_top='5%')
#datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(
# type_="inside",
# pos_bottom=0,
# )],
)
)
c.render_notebook()
[k for k in range(7,19)]
# дневное время:7-19 Вечер: 0-6 + 20-24
xxx='Соотношение пассажиров и водителей'
c = (
Line(
init_opts=opts.InitOpts(
theme='infographic',
width=1500,
)
)
.add_xaxis([i for i in rawdata['Город'].unique()])
.add_yaxis(
xxx+"дневное время",
[rawdata[(rawdata['Город']==i)&(rawdata['период времени'].isin([k for k in range(7,20)]))]['Соотношение пассажиров и водителей'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
xxx+"ночь",
[rawdata[(rawdata['Город']==i)&(rawdata['период времени'].isin([0,1,2,3,4,5,6,20,21,22,23,24]))]['Соотношение пассажиров и водителей'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
),)
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value}Юань", ),интервал=100
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='каждый Город'+xxx, pos_left='center'
),
xaxis_opts=opts.AxisOpts(
#name='Диапазон рейтинга продаж',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(rotate=-25),
axistick_opts=opts.AxisTickOpts(is_align_with_label=True,),
is_scale=False,
boundary_gap=False,
),
yaxis_opts=opts.AxisOpts(
splitline_opts=opts.SplitLineOpts(is_show=True),
name=xxx
),
legend_opts=opts.LegendOpts(pos_top='5%')
#datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(
# type_="inside",
# pos_bottom=0,
# )],
)
)
c.render_notebook()
df_tail=rawdata.groupby(['Город','Неделя']).apply(lambda x: x.sort_values('коэффициент пассажиро-водителя').head(5)).reset_index(drop=True)
df1=pd.DataFrame(df_tail[df_tail['Город']=='Aгород']['период времени'].value_counts()).reset_index()
df1.rename(columns={'index':'hour','период времени':'Количество статистики'},inplace=True)
df1['Город']='Aгород'
for i in d[1:]:
df_tt=pd.DataFrame(df_tail[df_tail['Город']==i]['период времени'].value_counts()).reset_index()
df_tt.rename(columns={'index':'hour','период времени':'Количество статистики'},inplace=True)
df_tt['Город']=i
df1=df1.append(df_tt,ignore_index=True)
df1['h/t']='tail'
df1=df1[df1['Статистикачисло']>=5]
df1
df1.reset_index(drop=True)
df_head=rawdata.groupby(['Город','Неделя']).apply(lambda x: x.sort_values('коэффициент пассажиро-водителя').tail(5)).reset_index(drop=True)
df2=pd.DataFrame(df_head[df_head['Город']=='Aгород']['период времени'].value_counts()).reset_index()
df2.rename(columns={'index':'hour','период времени':'Количество статистики'},inplace=True)
df2['Город']='Aгород'
for i in d[1:]:
df_tt=pd.DataFrame(df_head[df_head['Город']==i]['период времени'].value_counts()).reset_index()
df_tt.rename(columns={'index':'hour','период времени':'Количество статистики'},inplace=True)
df_tt['Город']=i
df2=df2.append(df_tt,ignore_index=True)
df2['h/t']='head'
df2=df2[df2['Статистикачисло']>=5]
df2.reset_index(drop=True)
df_head=rawdata.groupby(['Город','Неделя']).apply(lambda x: x.sort_values('коэффициент пассажиро-водителя').tail(5)).reset_index(drop=True)
df_head[df_head['Город']=='Eгород']['период времени'].value_counts()
print('Неделя',' неделя Полный заказ Ставка ',' Еженедельное соотношение пассажиров и водителей')
print('-----------------------------------------------')
for j in dd:
print(j,rawdata[(rawdata['Неделя']==j)]['Полный заказ Ставка'].mean(),rawdata[(rawdata['Неделя']==j)]['пассажирводитель Сравнивать'].mean())
xxx='Полный заказ Ставка'
c = (
Line(
init_opts=opts.InitOpts(
theme='infographic',
width=1500,
)
)
.add_xaxis([i for i in rawdata['Город'].unique()])
.add_yaxis(
xxx+"рабочий день",
[rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['Полный заказ Ставка'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
xxx+"выходные",
[rawdata[(rawdata['Город']==i)&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['Полный заказ Ставка'].mean() for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
),)
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value}Юань", ),интервал=100
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='каждый Город'+xxx, pos_left='center'
),
xaxis_opts=opts.AxisOpts(
#name='Диапазон рейтинга продаж',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(rotate=-25),
axistick_opts=opts.AxisTickOpts(is_align_with_label=True,),
is_scale=False,
boundary_gap=False,
),
yaxis_opts=opts.AxisOpts(
splitline_opts=opts.SplitLineOpts(is_show=True),
name=xxx
),
legend_opts=opts.LegendOpts(pos_top='5%')
#datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(
# type_="inside",
# pos_bottom=0,
# )],
)
)
c.render_notebook()
xxx='аномальный Полный заказ интервала ставок'
c = (
Line(
init_opts=opts.InitOpts(
theme='infographic',
width=1500,
)
)
.add_xaxis([i for i in rawdata['Город'].unique()])
.add_yaxis(
xxx+"рабочий день",
['%.3f' % (rawdata[(rawdata['Город'] == i)&(rawdata['Полный заказ Ставка']<0.79)&(rawdata['Неделя'].isin(['в понедельник','Вторник','Среда','Четверг','Пятница']))]['период времени'].count()/120) for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.add_yaxis(
xxx+"выходные",
['%.3f' % (rawdata[(rawdata['Город'] == i)&(rawdata['Полный заказ Ставка']<0.79)&(rawdata['Неделя'].isin(['Суббота','Воскресенье']))]['период времени'].count()/48) for i in rawdata['Город'].unique()],
is_smooth=True,
markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=False
),)
.extend_axis(
yaxis=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(formatter="{value}Юань", ),интервал=100
)
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='каждый Город'+xxx, pos_left='center'
),
xaxis_opts=opts.AxisOpts(
#name='Диапазон рейтинга продаж',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(rotate=-25),
axistick_opts=opts.AxisTickOpts(is_align_with_label=True,),
is_scale=False,
boundary_gap=False,
),
yaxis_opts=opts.AxisOpts(
splitline_opts=opts.SplitLineOpts(is_show=True),
name=xxx
),
legend_opts=opts.LegendOpts(pos_top='5%')
#datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(
# type_="inside",
# pos_bottom=0,
# )],
)
)
c.render_notebook()
# Добавить новое поле анализа
rawdata['вызовкоэффициент конверсии']=rawdata['вызовчисло']/rawdata['Количество пузырьков']
rawdata['отвечатькоэффициент конверсии']=rawdata['отвечатьчисло']/rawdata['вызовчисло']
rawdata['Полный заказкоэффициент конверсии']=rawdata['Полный заказчисло']/rawdata['отвечатьчисло']
rawdata
rawdata[(rawdata['отвечатькоэффициент конверсии']<rawdata['вызовкоэффициент конверсии'])]
# Данные об исключении: посмотрите, на каком этапе преобразования возникла проблема.
rawdata[(rawdata['Полный заказкоэффициент конверсии']-rawdata['отвечатькоэффициент конверсии'])<-0.3] #270 наоборот 600
rawdata['Полный заказкоэффициент конверсии'].mean()
# 0.8662754886794329
rawdata[rawdata['Полный заказкоэффициент конверсии']<0.6]
import pandas as pd
import numpy as np
from pyecharts.charts import *
import pyecharts.options as opts
import collections
col=['Неделя','период времени','Водитель онлайн','Количество пузырьков','вызовчисло','отвечатьчисло','Полный заказчисло','вызовкоэффициент конверсии','отвечатькоэффициент конверсии','Полный заказкоэффициент конверсии','пассажирводитель Сравнивать']
rawdata_cor=rawdata[col]
# Сопоставить числовой тип
name_to_week = {
'в понедельник': 1, «Вторник»: 2, «Среда»: 3, «Четверг»: 4, «Пятница»: 5, «Суббота»: 6, «Воскресенье»: 7
}
# rawdata_cor['Неделя']=rawdata_cor['Неделя'].map(name_to_week)
rawdata_cor.loc[:,'Неделя']=rawdata_cor.loc[:,'Неделя'].map(name_to_week) # Было бы лучше так
rawdata_cor
dff_corr=rawdata_cor.corr()
rows = dff_corr.index.size
cols = dff_corr.columns.size
# Требуется тепловая картаданные
dff_corr_heatmap = [[i, j, round(float(dff_corr.iloc[i, j]), 3)] for i in range(rows) for j in range(cols)]
c = (
HeatMap(
init_opts=opts.InitOpts(
width='1000px',
)
)
.add_xaxis(dff_corr.index.tolist())
.add_yaxis(
'Коэффициент корреляции',
dff_corr.columns.tolist(),
dff_corr_heatmap,
label_opts=opts.LabelOpts(
is_show=True,
position='inside'
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
title='Тепловая карта коэффициента корреляции',
subtitle='Онлайн-сервисы по вызову автомобилей временииндексданные', pos_left='center'),
legend_opts=opts.LegendOpts(
is_show=False,
),
xaxis_opts=opts.AxisOpts(
type_='category',
splitarea_opts=opts.SplitAreaOpts(
is_show=True,
areastyle_opts=opts.AreaStyleOpts(
opacity=1
)
),
axislabel_opts=opts.LabelOpts(
font_size=14,
rotate=-25,
),
interval=0
),
yaxis_opts=opts.AxisOpts(
name='',
type_='category',
splitarea_opts=opts.SplitAreaOpts(
is_show=True,
areastyle_opts=opts.AreaStyleOpts(
opacity=1
)
),
axislabel_opts=opts.LabelOpts(
font_size=14
),
interval=0,
# position='right'
),
visualmap_opts=opts.VisualMapOpts(
min_=-1,
max_=1,
# is_show=False,
)
)
)
c.render_notebook()
rawdata[(rawdata['Город']=='Eгород')&(rawdata['Полный заказкоэффициент конверсии']>0.9)]['пассажирводитель Сравнивать'].describe()
считать 67.000000 среднее 0,982520 стандартный 0,304556 мин 0,472162 25% 0,744118 50% 1,017183 75% 1,194638 максимум 1,759997 Название: соотношение пассажиров и водителей, dtype: float64