Скринкасты по работе с github
- Сделать себе репозиторий использую данный шаблон.
Для этого необходимо нажать кнопку "Use this template".

- Заполнить поле Repository name и нажать кнопку "Create repository from template".

- Открыть файл
task.pyи нажать значок карандаша для редактирования файла, а затем заменить содержимое вашим решением.
- Чтобы сохранить решение, необходимо нажать кнопку
- В разделе "Commit changes" указать название
final-taskи выбрать пункт "Create a new branch ...".

- Далее при необходимости можно сопроводить вашу работу любыми необходимыми комментариями. И нажать кнопку "Create pull request"

- После прислать на проверку ссылку на Pull Request (PR).
Пример ссылки:https://github.com/aeksei/RepositoryName/pull/1 - Все pull requests можно найти на странице репозитория во вкладке "Pull requests"

Пришло время применить все полученные знания на практике. Ваше итоговое задание заключается в написании скрипта для анализа данных о жилых домах. Вам предстоит создать несколько функций для обработки данных, их классификации и анализа. Результаты работы скрипта должны быть представлены в удобном формате и распечатаны при запуске программы.
Данные для анализа содержатся в файле housing_data.csv со следующими полями:
area_id— идентификатор районаhouse_address— адрес домаfloor_count— количество этажейheating_house_type— класс энергоэффективности домаheating_value— количество тепла, потреблённое домомarea_residential— общая площадь жилых помещений, кв.мpopulation— общее количество жителей в доме
Гарантируется, что все значения заполнены и соответвуют нужным типам данных.
Вам необходимо написать скрипт на Python, который будет содержать следующие функции:
-
Функция
read_file: Напишите функцию для чтения данных из CSV файла и преобразования их в список словарей. В каждом словаре должны быть все ключи, соответствующие столбцам файла. Данные должны быть приведены к правильным типам:floor_countиpopulation— целые числа,heating_valueиarea_residential— числа с плавающей точкой.Пример файла CSV:
area_id,house_address,floor_count,heating_house_type,heating_value,area_residential,population area_2,"ул. Пушкина, д. 32",6,c,933.27,1254.6,105 ...Результат преобразования в список словарей:
houses = [ { "area_id": "area_2", "house_address": "ул. Пушкина, д. 32", "floor_count": 6, "heating_house_type": "c", "heating_value": 933.27, "area_residential": 1254.6, "population": 105 }, ... ]
-
Функция
classify_house: Реализуйте функцию, которая классифицирует дом на основе количества этажей. Классификация должна быть следующей:- Малоэтажный (1-5 этажей)
- Среднеэтажный (6-16 этажей)
- Многоэтажный (более 16 этажей)
На вход подаётся количество этажей дома, возвращаемое значение — категория дома на основе его этажности. Данная функция должна проверять, что переданное ей количество этажей является положительным целочисленным значением. Если аргумент не является целочисленным значением, то следует вызвать ошибку
TypeError, а если не является положительным, тоValueError. Каждая ошибка должна сопровождаться сообщением о ней. -
Функция
get_classify_houses: Классифицирует дома на основе количества этажей. На вход подаётся список словарей с информацией о домах, возвращаемое значение — список строк, где каждое значение соответствует категории дома. -
Функция
get_count_house_categories(categories: list[str]) -> dict[str, int]: Реализуйте функцию для подсчета количества домов в каждой категории. На вход подаётся список категорий, возвращаемое значение — словарь с категориями в качестве ключей и количеством домов в каждой категории в качестве значений. -
Функция
min_area_residential(houses: list[dict]) -> str: Реализуйте функцию для поиска дома с наименьшим средним количеством квадратных метров жилой площади на одного жильца. Для этого необходимо вычислить среднее значение жилой площади на одного жителя для каждого дома и вернуть адрес дома с наименьшим этим значением. На вход подаётся список словарей с информацией о домах, возвращаемое значение — строка с адресом дома.
Гарантируется что списокhousesбудет не пустым и содержит только один адрес с наименьшим средним значением.
- Оформите программу как модуль. При запуске скрипта должна выводиться информация о количестве домов каждого типа и адрес дома с наименьшим средним количеством квадратных метров жилой площади на одного жильца.
- Каждая функция должны иметь документацию и аннотацию типов ко всем аргументам и возвращаемым значениям.
- При проверке линтером должны быть учтены и исправлены все предупреждения.