Skip to content

F-mean-Fork/Python-and-urbanism

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Анализ данных о жилых домах

Работа с репозиторием

Скринкасты по работе с github

Создание репозитория

  1. Сделать себе репозиторий использую данный шаблон.
    Для этого необходимо нажать кнопку "Use this template".
    image
  2. Заполнить поле Repository name и нажать кнопку "Create repository from template".
    image

Загрузка решений на проверку

  1. Открыть файл task.py и нажать значок карандаша для редактирования файла, а затем заменить содержимое вашим решением.
    image
  2. Чтобы сохранить решение, необходимо нажать кнопку
    image
  3. В разделе "Commit changes" указать название final-task и выбрать пункт "Create a new branch ...".
    image
  4. Далее при необходимости можно сопроводить вашу работу любыми необходимыми комментариями. И нажать кнопку "Create pull request" image
  5. После прислать на проверку ссылку на Pull Request (PR).
    Пример ссылки: https://github.com/aeksei/RepositoryName/pull/1
  6. Все pull requests можно найти на странице репозитория во вкладке "Pull requests"
    image

Описание задания

Пришло время применить все полученные знания на практике. Ваше итоговое задание заключается в написании скрипта для анализа данных о жилых домах. Вам предстоит создать несколько функций для обработки данных, их классификации и анализа. Результаты работы скрипта должны быть представлены в удобном формате и распечатаны при запуске программы.

Данные для анализа содержатся в файле housing_data.csv со следующими полями:

  • area_id — идентификатор района
  • house_address — адрес дома
  • floor_count — количество этажей
  • heating_house_type — класс энергоэффективности дома
  • heating_value — количество тепла, потреблённое домом
  • area_residential — общая площадь жилых помещений, кв.м
  • population — общее количество жителей в доме

Гарантируется, что все значения заполнены и соответвуют нужным типам данных.

Задание

Вам необходимо написать скрипт на Python, который будет содержать следующие функции:

  1. Функция 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
        },
       ...
    ]
  2. Функция classify_house: Реализуйте функцию, которая классифицирует дом на основе количества этажей. Классификация должна быть следующей:

    • Малоэтажный (1-5 этажей)
    • Среднеэтажный (6-16 этажей)
    • Многоэтажный (более 16 этажей)

    На вход подаётся количество этажей дома, возвращаемое значение — категория дома на основе его этажности. Данная функция должна проверять, что переданное ей количество этажей является положительным целочисленным значением. Если аргумент не является целочисленным значением, то следует вызвать ошибку TypeError, а если не является положительным, то ValueError. Каждая ошибка должна сопровождаться сообщением о ней.

  3. Функция get_classify_houses: Классифицирует дома на основе количества этажей. На вход подаётся список словарей с информацией о домах, возвращаемое значение — список строк, где каждое значение соответствует категории дома.

  4. Функция get_count_house_categories(categories: list[str]) -> dict[str, int]: Реализуйте функцию для подсчета количества домов в каждой категории. На вход подаётся список категорий, возвращаемое значение — словарь с категориями в качестве ключей и количеством домов в каждой категории в качестве значений.

  5. Функция min_area_residential(houses: list[dict]) -> str: Реализуйте функцию для поиска дома с наименьшим средним количеством квадратных метров жилой площади на одного жильца. Для этого необходимо вычислить среднее значение жилой площади на одного жителя для каждого дома и вернуть адрес дома с наименьшим этим значением. На вход подаётся список словарей с информацией о домах, возвращаемое значение — строка с адресом дома.
    Гарантируется что список houses будет не пустым и содержит только один адрес с наименьшим средним значением.

Требования к выполнению задания

  1. Оформите программу как модуль. При запуске скрипта должна выводиться информация о количестве домов каждого типа и адрес дома с наименьшим средним количеством квадратных метров жилой площади на одного жильца.
  2. Каждая функция должны иметь документацию и аннотацию типов ко всем аргументам и возвращаемым значениям.
  3. При проверке линтером должны быть учтены и исправлены все предупреждения.

About

Basics of programming and analysis of spatial data in Python–2024

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages