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

Скачиваем архив данных за интересующий период в формате 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()
На этапе предобработки данных переведем все “временные” данные (год, месяц, дата, время и тд.) в формат 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/
Добавить комментарий