pandas Categorical: сортировка по порядку категорий

Приоритеты «низкая», «средняя» и «высокая» должны идти в рабочем порядке, а не по алфавиту. В этой задаче нужно починить CategoricalDtype и сохранить результат преобразования в DataFrame. Затем проверьте и порядок строк, и тип столбца.

Программа курса «NumPy и pandas: практический тренажёр».

Найди и исправь: три ошибки в CategoricalDtype, astype и sort_values

Что уже дано

В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:

  1. pd.CategoricalDtype создан с ordered=False, хотя по условию нужна упорядоченная шкала (ordered=True).
  2. Результат astype(cat_dtype) не присвоен обратно в df['urgency'] — столбец остаётся object, и сортировка идёт алфавитно.
  3. Для вывода флага упорядоченности используется df_sorted['urgency'].dtype вместо df_sorted['urgency'].cat.ordered.

Каждая ошибка находится в отдельной строке кода. Исправьте все три.

Что нужно сделать

Исправьте три ошибки так, чтобы программа:

  1. Читала из stdin целое число n — количество строк таблицы.
  2. Читала следующие n строк; каждая содержит два токена через пробел: task (строка без пробелов) и urgency (одно из слов низкая, средняя, высокая). Создавала pd.DataFrame с именем df со столбцами 'task' и 'urgency'.
  3. Создавала cat_dtype = pd.CategoricalDtype(categories=['низкая', 'средняя', 'высокая'], ordered=True) и присваивала тип столбцу df['urgency'] через astype, сохраняя результат обратно.
  4. Сортировала df по 'urgency' через sort_values и сохраняла в df_sorted.
  5. Выводила в stdout ровно три строки:
  • значения df_sorted['urgency'].tolist() как строку Python;
  • str(df_sorted['urgency'].dtype);
  • str(df_sorted['urgency'].cat.ordered).

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
task1 urgency1
task2 urgency2
...

Формат вывода

<urgency.tolist() как строка Python>
<dtype>
<cat.ordered>

Пример

Ввод
5
T1 высокая
T2 низкая
T3 средняя
T4 низкая
T5 высокая
Вывод
['низкая', 'низкая', 'средняя', 'высокая', 'высокая']
category
True
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи