Python для анализа годовых температур в Москве

от автора

Python — это мощный язык программирования, который широко используется в области анализа данных, включая анализ погодных данных. Давайте на примере анализа годовых температур в Москве разберемся как с его помощью можно выгрузить, предобработать и визуализировать данные новичку в этом деле. 

Для начала, вам потребуется получить доступ к погодным данным. Вы можете использовать API, такие как OpenWeatherMap API, для получения данных о погоде. OpenWeatherMap API предоставляет доступ к текущим и историческим данным о погоде по всему миру.  

В нашем примере обойдемся без использования API и ограничимся загрузкой архива погодных данных с информационного ресурса https://rp5.ru/Погода_в_Москве_(ВДНХ) 

В нашем примере обойдемся без использования API и ограничимся загрузкой архива погодных данных с информационного ресурса https://rp5.ru/Погода_в_Москве_(ВДНХ

Скачиваем архив данных за интересующий период в формате csv или xls, сохраняем его у себя на ПК.  Затем, вы можете использовать библиотеки Python, такие как Pandas и Plotly, для анализа и визуализации данных. Pandas позволяет вам эффективно работать с табличными данными, а Plotly — создавать графики и визуализации. 

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

import numpy as np  import pandas as pd  import matplotlib.pyplot as plt import matplotlib import dash  import plotly.express as px import plotly as go   moscow_weather = pd.read_excel('C://moscow_weather.xlsx')  moscow_weather = moscow_weather.rename(columns={'Местное время в Москве (ВДНХ)':'timestamp'}) moscow_weather.info()
Для начала загрузим все необходимые библиотеки (в первой ячейке с кодом). С помощью функции “pd.read_excel” прочитаем архив с погодными данными, не забудьте указать путь до файла на вашем пк. Поменяем названия колонок на более удобные. 

Для начала загрузим все необходимые библиотеки (в первой ячейке с кодом). С помощью функции “pd.read_excel” прочитаем архив с погодными данными, не забудьте указать путь до файла на вашем пк. Поменяем названия колонок на более удобные. 

На этапе предобработки данных переведем все “временные” данные (год, месяц, дата, время и тд.) в формат timestamp для удобства работы с ними в будущем. 

С помощью функции “groupby” сгруппируем данные по годам, а к данным температуры применим агрегацию минимумом, максимумом, суммой и средним. 

Найдем медианные значения каждой из получившихся переменных и посчитаем относительные отклонения от медианной годовой температуры. 

#datetime split moscow_weather['timestamp'] = pd.to_datetime(moscow_weather['timestamp']) moscow_weather['year'] = moscow_weather.timestamp.dt.year moscow_weather['date'] = moscow_weather.timestamp.dt.date moscow_weather['month'] = moscow_weather.timestamp.dt.month moscow_weather['time'] = moscow_weather.timestamp.dt.time  annual_sample_temp = moscow_weather  #temperature analysis annual_sample_temp = annual_sample_temp.groupby(['year'])['T'].agg(['mean','sum', 'min', 'max']) annual_sample_temp = annual_sample_temp.reset_index()  median_min_T = annual_sample_temp['min'].median() median_max_T = annual_sample_temp['max'].median() median_avg_T = annual_sample_temp['sum'].median() median_avg_T = annual_sample_temp['mean'].median()  annual_sample_temp['rel_mean'] = (annual_sample_temp['mean']-median_avg_T)/annual_sample_temp['mean']

Из получившегося датасета изобразим отклонения от медианного значения температуры на графике. Будем использовать библиотеку Plotly для его создания.

import plotly.graph_objects as go  # Добавляем данные в график year = annual_sample_temp['year'].to_list() high = annual_sample_temp['max'].to_list() low = annual_sample_temp['min'].to_list() median = annual_sample_temp['mean'].to_list()   fig = go.Figure() # Создаем графики динамики температуры fig.add_trace(go.Scatter(x=year, y=high, name='Max',                          line=dict(color='firebrick', width=4))) fig.add_trace(go.Scatter(x=year, y=low, name = 'Min',                          line=dict(color='royalblue', width=4))) fig.add_trace(go.Scatter(x=year, y=median, name='Average',                          line=dict(color='grey', width=4,                               dash='dash') # dash options include 'dash', 'dot', and 'dashdot' ))  # Редактировать макет fig.update_layout(title='Средние, высокие и низкие годовые температуры в Москве',                    xaxis_title='Год',                    yaxis_title='Температура (градусы по Цельсию)',                    hovermode="x unified")  fig.show()

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


ссылка на оригинал статьи https://habr.com/ru/articles/805973/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *