О чём этот проект
В этом проекте я разбираюсь с данными о видеоиграх в Steam. Мне было интересно понять, есть ли вообще связь между ценой игры, её жанром и тем, как её оценивают игроки. Типа: правда ли, что дорогие игры лучше, какие жанры чаще получают хорошие отзывы и как отличаются бесплатные игры от платных.
Для этого я взял готовый датасет со Steam и обработал его с помощью Python и библиотеки Pandas: почистил данные, убрал лишнее, посчитал новые показатели и построил графики. Я не просто показываю цифры, а стараюсь объяснить, что именно на них видно и какие выводы из этого можно сделать.
Проект сделан в исследовательском формате — шаг за шагом от сырых данных к выводам, с акцентом на понятную визуализацию и объяснение результатов.
Загрузка и первичный осмотр данных
Сначала я загрузил CSV в Pandas и посмотрел структуру таблицы: какие есть колонки, какие типы данных, есть ли пропуски и насколько данные «чистые». Это нужно, чтобы понимать, что придётся исправлять перед графиками.


Очистка и подготовка данных
убрал дубликаты
привёл типы (цены/отзывы/время)
распарсил дату релиза → год
посчитал total_ratings и % позитивных (rating_share)
сделал признак Free/Paid
распарсил owners в число owners_low
жанры превратил в список для анализа по жанрам


Подготовка данных для визуализации
На этом этапе я подготовил отдельные таблицы для разных типов визуализаций. Я сгруппировал данные по годам, типу распространения (бесплатные и платные игры), цене и жанрам, а также рассчитал агрегированные показатели — количество игр и медианную долю позитивных отзывов.
Перед визуализацией я также ограничил экстремальные значения цен, чтобы выбросы не искажали распределения и связи на графиках.
Количество релизов в Steam по годам
На графике показано, как менялось количество выпускаемых игр в Steam с течением времени. По оси X — год релиза, по оси Y — количество игр, вышедших в этот год.
Можно заметить устойчивый рост числа релизов, особенно начиная с середины 2010-х годов. Это связано с упрощением публикации игр в Steam и ростом инди-разработки.
Доля бесплатных и платных игр по годам
Диаграмма показывает, как менялось соотношение бесплатных и платных игр среди всех релизов Steam. Значения представлены в процентах, что позволяет сравнивать годы с разным общим количеством релизов.
Со временем доля бесплатных игр постепенно увеличивается. Это отражает рост free-to-play-модели, особенно характерной для онлайн-проектов и сервисных игр.
Распределение цен
Гистограмма цен игр в Steam: X — цена, Y — сколько игр в диапазоне. Для читаемости исключены цены выше 99-го перцентиля.
Большинство игр в датасете стоит недорого: основная масса цен лежит в нижнем диапазоне, а дорогие игры встречаются заметно реже. Из-за этого распределение получается «перекошенным»: много дешёвых проектов и длинный хвост из более высоких цен.
Цена против доли позитивных отзывов
Точечная диаграмма: X — цена, Y — % позитивных отзывов; линия — общий тренд (медиана по корзинам).
Простой зависимости «дороже = лучше» здесь нет. В дешёвом сегменте разброс огромный: встречаются и очень высоко оценённые игры, и сильно провальные. Трендовая линия держится примерно в одном коридоре (около 75– 82%), то есть в среднем процент позитивных отзывов меняется слабо при росте цены. На высоких ценах видны более редкие точки — игр там меньше, поэтому любые оценки выглядят менее стабильными. В целом цена плохо объясняет качество по отзывам: гораздо сильнее на оценки влияют другие вещи — жанр, ожидания аудитории, качество исполнения и «отполированность» продукта.
Жанры и медианная доля позитивных отзывов
График сравнивает жанры по медианной доле позитивных отзывов. Я использую медиану, потому что она меньше зависит от выбросов и единичных «суперхитов».
Разные жанры получают заметно разные оценки: даже при одинаковой платформе и схожих условиях публикации одни жанры в среднем нравятся аудитории больше, чем другие. Это подтверждает, что пользовательские отзывы зависят не только от цены, но и от контекста: ожиданий от жанра, привычек аудитории и типичного качества/полировки проектов внутри жанров.
Какие статистические методы я использовал
В проекте я использовал базовую описательную статистику и сравнение групп. Сначала я посмотрел структуру данных (размер таблицы, типы колонок, пропуски, дубликаты). Дальше добавил новые показатели: общее число отзывов и долю позитивных отзывов (positive / (positive + negative)).
Для сравнения по годам и категориям я использовал группировки groupby и сводные таблицы pivot (например, релизы по годам и долю бесплатных/платных игр). Для жанров я считал медиану доли позитивных отзывов — медиана нужна, потому что распределения часто с выбросами и среднее может «врать».
Чтобы цены не ломали масштаб, я ограничил выбросы по 99-му перцентилю (p99). Для графика «цена vs отзывы» я строил тренд как медиану по ценовым корзинам и сглаживал её, чтобы убрать шум на диапазонах, где мало игр.
Как я стилизовал графики
Я сделал единый визуальный стиль для всех графиков, чтобы они выглядели как одна серия инфографики, а не случайный набор картинок. Я задал общие параметры отображения (размеры, сетку, подписи, заголовки) и использовал одну палитру, чтобы графики совпадали по настроению и читаемости.
Отдельно я следил за тем, чтобы каждый график был понятен без «угадывания»: добавлял поясняющие подписи (например, про обрезку выбросов или про смысл трендовой линии).
Итоги
Количество релизов в Steam со временем растёт — особенно заметно в последние годы выборки.
Доля бесплатных игр постепенно увеличивается, что отражает рост free-to-play модели.
Большинство игр находится в низком ценовом диапазоне, а дорогие проекты встречаются намного реже.
Прямой связи «дороже = лучше по отзывам» нет: хорошие и плохие оценки встречаются в разных ценовых категориях.
Жанр влияет на оценки сильнее, чем цена: разные жанры показывают разный медианный процент позитивных отзывов.
Описание применения генеративной модели
В процессе работы я использовал генеративную модель ChatGPT (OpenAI) как инструмент помощи, а не как «замену анализа».
ИИ применялся для: — планирования структуры проекта и логики презентации (какие шаги показывать и в каком порядке); — подсказок по работе с Pandas (загрузка CSV, чистка, groupby, pivot, расчёт новых показателей); — помощи со стилизацией визуализаций в Matplotlib (единый формат подписей, заголовков, поясняющих элементов); — исправления ошибок и уточнения, почему график выглядит некорректно (например, «дождик» из точек из-за дискретных цен).
Все расчёты и выводы были сделаны на основе реального датасета и кода в ноутбуке. Генеративная модель не генерировала данные и не подменяла результаты — она использовалась как помощник для ускорения работы и проверки технических решений.
Примеры запросов к модели: — «Напиши шаг 2: чистка данных и создание новых признаков для датасета Steam» — „Сделай график „цена vs доля позитивных отзывов“ и объясни, почему получаются столбики точек» — «Как оформить блок „статистические методы“ простым языком для презентации»
Дата сет и код.







