pandas: устройство, выборка и изменение таблиц

Series и DataFrame: создание, index, columns, shape, dtypes

Содержание курса

Найди и исправь: три ошибки в создании Series/DataFrame и чтении атрибутов

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.

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

  1. pd.Series создаётся из словаря {'a': 1, 'b': 2, 'c': 3}, но при выводе index_type используется type(s.values).__name__ вместо type(s.index).__name__ — в результате выводится тип массива значений, а не тип объекта-индекса.
  2. pd.DataFrame создаётся из словаря списков, но в коде написано pd.DataFrame([cols]), где cols — сам словарь, обёрнутый в список. Это создаёт DataFrame из одного словаря-строки вместо словаря столбцов. Нужно передать словарь напрямую: pd.DataFrame(cols).
  3. При выводе shape DataFrame используется df.shape[0] вместо df.shape — печатается только число строк, а не полный кортеж.

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

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

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

  1. Читала из stdin целое число n — количество записей.
  2. Читала следующие n строк; каждая содержит два токена через пробел: метка (строка без пробелов) и значение (целое число).
  3. Создавала pd.Series из словаря {метка: значение, …} в порядке прочитанных строк — имя переменной s.
  4. Создавала pd.DataFrame из словаря списков с двумя столбцами: 'label' (список меток) и 'value' (список значений) — имя переменной df.
  5. Выводила в stdout ровно пять строк:
  • Строка 1: index_type=<тип> — имя класса s.index через type(s.index).__name__.
  • Строка 2: s_shape=<shape> — кортеж вида (n,).
  • Строка 3: s_dtype=<dtype> — строковое представление s.dtype.
  • Строка 4: df_shape=<shape> — полный кортеж вида (n, 2).
  • Строка 5: first_label_is_pos_0=<bool> — результат s.index[0] == 0 в виде True или False.

Ввод и вывод

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

Формат ввода

n
метка1 значение1
метка2 значение2
...

Дополнительные ограничения: n >= 1; все строковые метки попарно различны.

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

index_type=Index
s_shape=(n,)
s_dtype=int64
df_shape=(n, 2)
first_label_is_pos_0=False
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    3
    alpha 10
    beta 20
    gamma 30
    
    Ожидаемый вывод
    index_type=Index
    s_shape=(3,)
    s_dtype=int64
    df_shape=(3, 2)
    first_label_is_pos_0=False
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

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