pandas DataFrame из списка словарей: пример и задача

Список словарей можно передать в pd.DataFrame: каждый словарь станет строкой, а ключи — названиями столбцов. Например, pd.DataFrame([{"name": "Анна", "score": 4}, {"name": "Игорь", "score": 7}]) создаёт таблицу из двух строк.

Если индекс не задан явно, строки получают стандартные числовые метки. Различайте доступ по метке через .loc и доступ по позиции через .iloc; после изменения индекса они могут указывать на разные строки. Типы столбцов проверяются через .dtypes.

В упражнении ниже создайте таблицу, задайте требуемый индекс и проверьте типы данных. Гостевая проверка сравнит результат с требованиями условия.

DataFrame из списка словарей: dtypes, метки и позиции строк

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: город (строка без пробелов), население (целое число), площадь (вещественное число, может быть целым). Пример строки: Казань 1200000 614.0.
  3. Формирует список словарей, где каждый словарь имеет ключи 'city', 'population', 'area' — в таком порядке. Создаёт pd.DataFrame из этого списка словарей; называет его df.
  4. Выводит в stdout ровно n + 5 строк в следующем порядке:
  • Строки 1…n: для каждой позиции i от 0 до n-1 — строку вида pos=<i> label=<метка> city=<значение df['city'].iloc[i]>, где <метка> — df.index[i] (целое число).
  • Строка n+1: shape=<shape> — кортеж вида (n, 3).
  • Строка n+2: columns=<список> — list(df.columns) через стандартный print.
  • Строка n+3: city_dtype=<dtype> — df.dtypes['city'].
  • Строка n+4: population_dtype=<dtype> — df.dtypes['population'].
  • Строка n+5: area_dtype=<dtype> — df.dtypes['area'].

Для строк n+3…n+5 используйте формат city_dtype=object, population_dtype=int64, area_dtype=float64.

Ввод и вывод

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

Формат ввода

n
город1 население1 площадь1
город2 население2 площадь2
...

Дополнительные ограничения: n >= 1.

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

pos=0 label=0 city=город1
pos=1 label=1 city=город2
...
shape=(n, 3)
columns=['city', 'population', 'area']
city_dtype=object
population_dtype=int64
area_dtype=float64

Пример

Ввод
3
Казань 1200000 614.0
Уфа 1100000 707.5
Сочи 400000 176.77
Вывод
pos=0 label=0 city=Казань
pos=1 label=1 city=Уфа
pos=2 label=2 city=Сочи
shape=(3, 3)
columns=['city', 'population', 'area']
city_dtype=object
population_dtype=int64
area_dtype=float64
РешениеPython

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

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

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

pandas DataFrame из списка словарей: пример и задача