pandas DataFrame из списка словарей: пример и задача
Список словарей можно передать в pd.DataFrame: каждый словарь станет строкой, а ключи — названиями столбцов. Например, pd.DataFrame([{"name": "Анна", "score": 4}, {"name": "Игорь", "score": 7}]) создаёт таблицу из двух строк.
Если индекс не задан явно, строки получают стандартные числовые метки. Различайте доступ по метке через .loc и доступ по позиции через .iloc; после изменения индекса они могут указывать на разные строки. Типы столбцов проверяются через .dtypes.
В упражнении ниже создайте таблицу, задайте требуемый индекс и проверьте типы данных. Гостевая проверка сравнит результат с требованиями условия.
DataFrame из списка словарей: dtypes, метки и позиции строк
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:город(строка без пробелов),население(целое число),площадь(вещественное число, может быть целым). Пример строки:Казань 1200000 614.0. - Формирует список словарей, где каждый словарь имеет ключи
'city','population','area'— в таком порядке. Создаётpd.DataFrameиз этого списка словарей; называет егоdf. - Выводит в
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
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- pandas Series из словаря: index, shape и dtype
- pd.readcsv с chunksize: что возвращает вызов
- Загрузка CSV с явными типами и датами через readcsv — задача по NumPy и pandas
- Загрузка CSV в pandas: dtype, usecols и разбор дат
- pandas readcsv: конфликт usecols и parsedates
- Выборка столбцов и строк: [], loc и iloc без цепочной индексации — задача по NumPy и pandas
