Статья Автор: Лебедев Дмитрий Алексеевич

Сириус. Визуализация данных

Дан csv-файл (user_statistics.csv) с таблицей user_statistics, содержащей некоторые характеристики, рассчитанные для учеников образовательной платформы. Таблица содержит следующие колонки:

  1. «user_id» — идентификатор ученика на платформе.
  2. «age» — возраст ученика.
  3. «avg_session_time» — среднее время пользовательской сессии для ученика.
  4. «avg_tries_cnt» — среднее число попыток на решение задачи.
  5. «avg_progress» — средний прогресс ученика в курсах.

Схема таблицы выглядит следующим образом:

 
Колонка Тип данных Пропуски Первичный ключ
user_id Целое число False True
age Целое число False False
avg_session_time Вещественное число True False
avg_tries_cnt Вещественное число True False
avg_progress Вещественное число True False
 

В рамках следующих заданий вам будет необходимо провести исследование распределений характеристик, представленных в этой таблице.


Задание 9.

Постройте с помощью seaborn графики распределения характеристик, представленных в таблице user_statistics, и соотнесите характеристики с их графиками распределения, которые представлены ниже (без указания значений по оси X).


С помощью pandas и seaborn постройте тепловую карту, по оси X которой будут отложены сгруппированные значения характеристики avg_session_time, а по оси Y — сгруппированные значения характеристики age. В ячейках тепловой карты должно храниться количество учеников, попавших в пересечение соответствующих групп.

Группы по характеристике avg_session_time предполагаются следующие:

  1. Значения из диапазона [0; 10].
  2. Значения из диапазона (10; 40].
  3. Значения из диапазона (40; +∞).

Группы по характеристике age предполагаются следующие:

  1. Значения из диапазона [0; 20].
  2. Значения из диапазона (20; 35].
  3. Значения из диапазона (35; +∞).

Рекомендации по решению

В pandas есть функция cut, которая позволяет создать новую колонку, полученную в результате разбиения заданной колонки на некоторые диапазоны значений.

Ниже приведён пример кода, который создаст в таблице user_data колонку age_bin. В колонке для каждого пользователя хранится информация о том, к какой возрастной группе из перечисленных выше он относится:

user_data['age_bin'] = (pd.cut(
    # Колонка, значения в которой необходимо разбить на диапазоны.
    user_data['age'],
    # Задание диапазонов. Запись [a, b, c] соответствует диапазонам (a; b], (b; c].
    [0, 20, 35, float('inf')],  
    # Флаг, который означает, что в первый диапазон будет включена левая граница.
    include_lowest=True,
    # Названия диапазонов в том виде, в котором они будут записаны в новую колонку.
    labels=['0–20', '20–35', '> 35'])
# Приведение названий диапазонов к строковому виду.
.astype('str'))                        

Attached files
user_statistics.csv
Печать