Задание. Погода за лето
Посчитать среднюю температуру за лето 2019, найти самый холодный и самый тёплый дни. Подсчитать число дождливых дней.
Исходные данные
Данные о погоде за лето находятся в файле weather_2019.csv (https://anhel.in/files/weather_2019.csv). Они получены с метеостанции в Огурцово и охватывают период с 1 июня 2019 по 31 августа 2019 (источник: сайт http://rp5.ru). Файл текстовый, в кодировке UTF-8. Он содержит таблицу наблюдений погоды в следующем формате.
- Одно наблюдение — одна строка файла.
- В день делается несколько наблюдений, в разное время.
- Столбцы таблицы разделяются символом «;» (точка с запятой).
- Кроме этого, каждое значение взято в кавычки («"»).
- Строки файла, начинающиеся с символа «#» в первой позиции — комментарии. Они не содержат информации и должны быть проигнорированы.
Скачайте этот файл и поместите в одну папку с вашим скриптом.
Поля таблицы
Повторюсь, поля разделены точкой с запятой, а значение каждого поля взято в кавычки. Это довольно важно: в некоторых полях может попадаться символ «;» (точка с запятой) прямо в середине поля. Именно поэтому каждое поле взято в кавычки. То есть просто разбить прочитанную строку по разделителю «;» недостаточно. Кроме того, у всех чисел с плавающей точкой разделитель целой и дробной части — точка («.»), а не запятая, как в нашей стране принято (это удобно, так как Python и функция float()
ожидают именно такой формат числа). Проверять прочитанные из файла данные на корректность не обязательно, файл в полном порядке и не содержит нарушений формата. Поля типа «строка» могут содержать любые символы, кроме кавычки («"»).
- Дата и время наблюдения. Строка. Формат всегда один и тот же, «ДД.ММ.ГГГГ ЧЧ:ММ» (например, "01.07.2019 16:00"), время новосибирское, перед числами из одной цифры стоит 0.
- T. Температура воздуха в момент наблюдения на высоте 2 м над землёй, в °С. Число с плавающей точкой, разделитель целой и дробной части — точка, «.» (например, "17.0").
- Po. Атмосферное давление, в мм. ртутного столба. Число с плавающей точкой.
- P. Атмосферное давление, приведённое к среднему уровню моря, в мм. рт. ст. Число с плавающей точкой.
- Pa. Барическая тенденция, то есть изменения давления за последние три часа, в мм. рт.ст. Число с плавающей точкой.
- U. Относительная влажность воздуха на выстоте 2 м над землёй, в %. Целое число.
- DD. Направление ветра на высоте 10-12 м, усреднённое за последние 10 минут. Строка.
- Ef. Скорость ветра на высоте 10-12 м, усреднённая за последние 10 минут, в м/с. Целое число.
- ff10. Максимальный порыв ветра на высоте 10-12 м за последние 10 минут, в м/с. Целое число.
- ff3. Максимальный порыв ветра на высоте 10-12 метров между наблюдениями, в м/с. Целое число.
- N. Общая облачность. Строка.
- WW. Текущая погода, сообщаемая с метеостанции. Строка.
- W1. Прошедшая погода между сроками наблюдения 1. Строка.
- W2. Прошедшая погода между сроками наблюдения 2. Строка.
- Tn. Минимальная температура за прошедший период, в °С. Число с плавающей точкой.
- Tx. Максимальная температура за прошедший период, в °С. Число с плавающей точкой.
- Cl. Описание облачности (слоистые, кучевые облака). Строка.
- Nh. Количество наблюдаемых облаков Cl, в %. Строка.
- H. Высота основания самых низких облаков, м. Строка.
- Cm. Описание облачности (высококучевые и высокослоистые облака). Строка.
- Ch. Описание облачности (перистые, перисто-кучевые и перисто-слоистые облака). Строка.
- VV. Горизонтальная дальность видимости, в км. Число с плавающей точкой.
- Td. Температура точки росы на высоте 2 м от земли, в °С. Число с плавающей точкой.
- RRR. Количество осадков за сутки. Заносится один раз в сутки. Число, либо строка (типа «Осадков нет», «Следы осадков» и т.д.), либо пустая строка (если в этом наблюдении эту информацию не заносили).
- tR. Период времени, за которые накоплено указанное число осадков, в часах. Целое число, либо пустая строка, если поле RRR в этой строке пустое.
- E. Состояние поверхности почвы (без учёта снега и льда). Строка.
- Tg. Минимальная температура поверхности почвы за ночь, в °С. Число с плавающей точкой.
- E’. Состояние поверхности почвы с учётом снега и льда. Строка.
- sss. Высота снежного покрова, в см. Целое число.
Откройте файл в любом текстовом редакторе с поддержкой кодировки UTF-8 и посмотрите на формат своими глазами.
Задача
Необходимо открыть файл, прочитать его по строкам, каждую строку разбить на поля по разделителю «;», убрать кавычки вокруг значения поля, и извлечь значения полей Дата и время, T и RRR. Обратите внимание, что в течение одного дня делается несколько наблюдений в разное время.
Затем нужно вычислить среднее значение температуры по каждому дню, а так же для каждого дня определить, был ли он дождливым. Дождливым считается день, в пределах которого в поле RRR указано любое значение, кроме "Осадков нет"
или пустой строки. После этого вычислить среднюю температуру за весь период (методом среднего арифметического). Сохранить даты самого тёплого и самого холодного дня. Самый тёплый день — день, когда зафиксирована максимальная средняя температура. Самый холодный — аналогично, когда была минимальная средняя температура дня. Так же необходимо посчитать, сколько было дождливых дней.
Результаты нужно вывести на экран с сопроводительными надписями, например:
Средняя температура = 21.0 градусов, дождливых дней было 28. Самый тёплый день: 18.06.2019, самый холодный: 27.08.2019
Что понадобится
- Открытие файла (open)
- Цикл for
- Работа со строками: split, find, преобразование типов
- Работа со списками.
Проверка работы скрипта
Скрипт должен иметь универсальный характер. Проверьте, что он работает и на других файлах с данными:
Это файлы в том же формате, но содержащие погодные данные за другие периоды времени (лето 2018 и лето 2017 года, соответственно).