Код Middle Производительность и память обновлено
Ужать DataFrame: category и downcast
Условие
Дан список строк [city, qty] (городов мало, qty целые). Постройте DataFrame, переведите city в category, qty в минимальный знаковый целый тип через pd.to_numeric(..., downcast="integer"). Верните {"city": имя dtype city, "qty": имя dtype qty, "smaller": стала ли таблица меньше по memory_usage(deep=True)}.
Примеры
shrink([["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2], ["Москва", 1], ["Казань", 2]]) // {"city":"category","qty":"int8","smaller":true}
shrink([["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1], ["A", 300], ["B", 1]]) // {"city":"category","qty":"int16","smaller":true}
shrink([["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1], ["A", 70000], ["A", 1]]) // {"city":"category","qty":"int32","smaller":true}
Как подойти
Подсказки: 3
astype("category")pd.to_numeric(s, downcast="integer")str(df[col].dtype)даёт имя типа.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Термины по теме
Ещё по теме «Производительность и память»
- Чем заменить apply(axis=1)
- Когда помогает тип category
- Цепочное присваивание в pandas 3.0
- Обнулить тестовые заказы через loc
- Скидка по категории через map
- Copy-on-Write в pandas 3.0
- Copy-on-Write: изменение колонки
- Copy-on-Write и SettingWithCopyWarning