Эта статья является продолжением цикла про Велоинфраструктуру в Голландии. В этот раз речь пойдет про автомобили.
Недавно в одном из проектов довелось получить доступ к данным с камеры, распознающей автомобильные номера. Зная номер, можно получить довольно много дополнительной информации. Но затем этих данных показалось мало, стало интересно обработать всю базу по голландским авто целиком, благо что она официально открыта в общем доступе.
Результаты показались достаточно интересными, чтобы поделиться ими с читателями. Все-таки Голландия входит в топ-10 стран по рейтингу качества жизни, так что посмотреть, на чем ездят голландцы кроме велосипедов, оказалось весьма любопытно.
Продолжение под катом.
Исходные данные
Статистика разбита на две части — локальное тестирование и общие данные. В первом случае в качестве источника данных использовалась профессиональная камера наблюдения AXIS, имеющая возможность встроенного распознавания автомобильных номеров. Сам по себе номер не так уж интересен для статистики, куда более интересна дополнительная информация, которую можно по нему получить. И это в Голландии делается просто, на сайте rdw.nl по любому номеру совершенно бесплатно можно получить информацию по автомобилю, послав простой GET-запрос (для примера можно посмотреть взятый наугад номер H789GF). Данных возвращается довольно много, включая год выпуска, мощность, стоимость по каталогу и пр. А это уже интереснее.
И наконец, во второй части будет рассмотрена вся база целиком. Чтобы не делать графики слишком уж громоздкими, рассмотрена только информация за 2019 год — самые актуальные марки и модели автомобилей, зарегистрированных за последний год.
Итак, приступим.
Локальные данные
Как было сказано выше, в первом случае использовалась камера наблюдения AXIS, имеющая возможность распознавания автомобильных номеров. Камера установлена на въезде в офисный центр. Набор данных тут разумеется, небольшой, но их интерес в том, что это реальные данные с тех машин, которыми пользуются обычные люди, представители среднего класса, куда можно включить и работников ИТ. В список также могли попасть и грузовые авто, но их было не так уж много, специальной фильтрации по таким моделям я не делал.
За 3 дня работы камеры было собрано 370 записей, на которых оказалось примерно 100 автомобилей. Из всего этого был собран датасет, который выглядит примерно так:
car_id,datetime,manufacturer,model,year,price
3,2020-01-23 16:57:26,PEUGEOT,PEUGEOT 206,2004.0,
3,2020-01-23 16:57:26,PEUGEOT,PEUGEOT 206,2004.0,
26,2020-01-23 16:41:39,NISSAN,NISSAN NISSAN JUKE,2012.0,25965.0
26,2020-01-23 16:41:39,NISSAN,NISSAN NISSAN JUKE,2012.0,25965.0
26,2020-01-23 16:41:39,NISSAN,NISSAN NISSAN JUKE,2012.0,25965.0
26,2020-01-23 16:41:38,NISSAN,NISSAN NISSAN JUKE,2012.0,25965.0
21,2020-01-23 16:30:33,BMW,BMW 5ER REIHE,2004.0,
21,2020-01-23 16:30:33,BMW,BMW 5ER REIHE,2004.0,
21,2020-01-23 16:30:32,BMW,BMW 5ER REIHE,2004.0,
47,2020-01-23 16:24:55,VOLVO,VOLVO 240 POLAR U9,1993.0,
47,2020-01-23 16:24:54,VOLVO,VOLVO 240 POLAR U9,1993.0,
Названия полей, думаю, понятны без комментариев. Номерные знаки убраны из соображений приватности, впрочем для нашего анализа они и не нужны.
Посмотрим, какие данные можно извлечь с помощью Python и Pandas. Те, кому код неинтересен, могут пролистать текст сразу до графиков.
Подключим необходимые компоненты и загрузим датасет в Pandas:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("license_plates.csv", quotechar='"')
Нас интересуют модели машин, так что выделим необходимое подмножество и уберем дубликаты (на каждый проезд машины камера генерирует 3-4 события). Для удобства отображения графиков отсортируем датасет по модели автомобиля.
df_cars = df[['car_id', 'manufacturer', 'model', 'year', 'price']]
df_cars = df_cars.drop_duplicates()
df_cars['year'] = df_cars["year"].map(int)
df_cars['price'] = df_cars["price"].map(get_rounded, na_action=None).astype('Int64')
df_cars['car'] = df_cars['model'] + '/' + df_cars['year'].apply(str)
df_cars = df_cars.sort_values('manufacturer', ascending=True, inplace=False)
Напишем вспомогательную функцию извлечения данных в виде гистограммы:
def extract_as_hist(dataframe, param: str):
g = dataframe.groupby([param])
msg_count = g.size().reset_index(name='counts')
grouped = g.mean().reset_index()
grouped['counts'] = msg_count['counts']
return grouped[param].values, grouped['counts'].values
Теперь можно приступать к самому интересному — собственно графикам.
Производитель
Можно посмотреть данные по производителям:
manufacturer, manufacturer_cnt = extract_as_hist(df_cars, 'manufacturer')
plt.gca().invert_yaxis()
plt.xticks(np.arange(min(manufacturer_cnt)-2, max(manufacturer_cnt)+2, 1.0))
plt.barh(manufacturer, manufacturer_cnt, label='Car Manufacturer')
График:
На первом месте с заметным отрывом выбивается Volkswagen, второе делят равномерно BMW, Mercedes и Volvo. Ни одного ВАЗа за время теста замечено не было ;)
Год выпуска
Код приводить не буду, он такой же. Сразу график:
Как можно видеть, большинство ездят на машинах не старше 5-летней давности, хотя и 10-летние авто экзотикой не являются. Есть даже пара раритетов 1993 и 1994г. Это оказались VOLVO 240 POLAR U9 и BMW 325I CABRIOLET E2 соответственно.
Цены
Сразу приведу график:
Мы видим что основная масса авто имеет вполне четкий пик по средней цене порядка 30К Евро. Верхушку топа занимают TESLA MODEL X 2018г (120К) и PORSCHE CAYENNE DIESEL 2014г (115К). Самый дешевый автомобиль — PEUGEOT 107 2012г за 5К.
Разумеется, большего из датасета в 100 машин извлечь невозможно — выборка слишком мала. Перейдем к следующему шагу — рассмотрим данные по всей стране целиком.
Общие данные по Голландии
Для начала нужно скачать всю базу целиком, что позволит нам извлечь гораздо больше данных. Файлы доступны на странице RDW, размер нужного нам CSV-файла составляет около 7Гбайт.
Код здесь примерно такой же, повторять его я не буду, перейдем сразу к результатам. Все графики относятся к данным за 2019 год, по другим годам желающие могут вывести их самостоятельно. Всего за год было зарегистрировано 672тыс машин, что довольно-таки много, учитывая что всё население Голландии 17млн человек.
Производитель
Общий список довольно длинный, выведем первые 30.
Как и в локальном тесте, первое место с большим отрывом занимает Volkswagen. Остальное видно из графика. Из интересного, можно отметить Теслу, которая вполне уверенно вошла в топ-10 машин, покупаемых в 2019 году.
Кстати, если увеличить другую часть графика, то можно увидеть что в 2019м в Голландии были куплены или ввезены Lada и UAZ, общим количеством примерно 10 штук:
Если кто не верит — UAZ BUKHANKA, ввезенный в мае 2019 года, цена по каталогу 32385Евро (тут я что-то наверно не понимаю в ценообразовании, да ладно). А всего в Голландии за все годы зарегистрировано аж 732 автомобиля LADA:
Модель
Здесь результаты оказались неожиданными. Первое место в 2019 году занимает Tesla Model 3, которых было зарегистрировано почти 30тыс штук. Остальное видно из графика.
Здесь разумеется, только часть графика, целиком он был бы слишком длинный.
Цвет
По цветам вариантов довольно мало, все понятно из картинки даже без перевода.
На первом месте серый, затем черный и белый, и вообще, выбор цветов невелик. Кстати, аэрография и разные художества не приняты в Голландии от слова «совсем», такие машины на улицах не попадались ни разу.
Цена
Следующая, и довольно интересная категория — цена.
Как и в локальном тесте, данные похожи — пик приходится на автомобили ценой 20-30К. График продолжается вправо и дальше — топ-3 занимают VOLKSWAGEN TOUAREG, CAPRON T66 и AUDI A6 3.0 TDI ценой 8.8млн.Евро.
Тип автомобиля
Эта категория оказалась довольно любопытной.
Топ довольно очевиден — stationwagen (универсал), hatchback, MPV (минивен-универсал) и седан. Любопытно другое — категории «лимузин» (42 машины), «катафалк» (47 машин) и «скорая помощь» (153 машины). И это все в категории «личные авто» (наверно эти 47 человек подрабатывают в свободное время извозом на катафалке, сказать сложно).
На этом я закончу с графиками, были еще идеи посмотреть вес или мощность, но статья и так получается слишком длинной.
Выводы
Скажу честно, я не эксперт в автомобилях, так что каких-то отдельных выводов не будет. Датасет доступен всем желающим, кто хочет, могут собрать статистику самостоятельно, ключевые фрагменты кода в тексте есть.
Если у кого-то есть данные по другим странам, было бы интересно сравнить.
Автор: DmitrySpb79