Друкарня від WE.UA

Обчислення статистичних показників даних про прогноз погоди у Python

Зміст

Всіх вітаю! У цьому матеріалі ми будемо обчислювати та візуалізувати за допомогою бібліотеки plotly дисперсію нашої вибірки. У ролі наших вибірок я візьму максимальні та мінімальні прогнозовані значення температури у Києві на січень.

Створення вибірок

Для поврення обчислень та кінцевої візуалізації нам спочатку треба створити саму вибірки, з якою ми будемо працювати. Цю вибірку я пропоную ствирити з прогнозів погоди на січень у Києві.

Спершу створюємо вирібку із максимально можливих значень температури за січень:

max_predicted_temperature = [-8, 1, 0, -1, -2, -4, -5, -5, -4, -1, -3, -3, -5, 3, 4, 3, 2, 1, 1, 2, 2, 3, -1, -2, -4, -4, 1, 2, 3, 3, 3]

Також вибірка із мінімально можливих значень температури:

min_predicted_temperature = [-11, -2, -5, -7, -6, -6, -6, -7, -5, -7, -6, -8, -9, -2, -3, -3, -3, -4, -4, -3, -3, -6, -7, -9, -11, -9, -5, -3, -3, -3, -11]

І дні у січні:

days_list = ["Ч 1", "П 2", "С 3", "Н 4", "П 5", "В 6", "С 7", "Ч 8", "П 9", 
"С 10", "Н 11", "П 12", "В 13", "С 14", "Ч 15", "П 16", "С 17", "Н 18", "П 19", 
"В 20", "С 21", "Ч 22", "П 23", "С 24", "Н 25", "П 26", "В 27", "С 28", "Ч 29", "П 30", "С 31"]

Візуалізація даних або створення графіків за допомогою пакета express

Встановлення plotly

Команди для встановлення бібліотеки plotly є у цьому розділі.

Windows:

pip install plotly

MacOS:

pip3 install plotly

Linux:

pip install plotly

Графік максимальних прогнозованих значень температури

Після встановлення бібліотеки plotly імпортуємо її з пакетом express:

import plotly.express as exp

Для візуалізації наших даних створимо функцію visualize_data(), яка буде свторювати точковий графік на основі потрібних значень і під відповідним заголовком:

def visualize_data(x, y):
    scatter_plot = exp.scatter(x=x, y=y)
    scatter_plot.update_layout(title="Прогноз температури у Києві на січень (максимальні прогнозовані значення)")
    scatter_plot.show()


visualize_data(days_list, max_predicted_temperature)

Тут ми створюємо точковий графік на основі значень x та y:

scatter_plot = exp.scatter(x=x, y=y)

Створюємо заголовок графіка:

scatter_plot.update_layout(title="Прогноз температури у Києві на січень (максимальні прогнозовані значення)")

Відображаємо графік:

scatter_plot.show()

Результат коду:

Графік максимальних прогнозованих значень температури на січень

Чудово! Ми отримали потрібний нам графік, але він якийсь нудний, а тому пропоную зробити його значно красивішим. Для цього, наприклад, можна зробити більшимим крапки та задати їм шкалу кольорів.

По-перше, задамо графіку шкалу кольорів, це ми робимо безпосередньо у функції scatter() за допомогою параметрів color і color_continuous_scale. Перший параметр приймає вісь зі значеннями, до яких ми збираємося застосовувати шкалу кольорів, а другий параметр надає змогу вказати конкретну шкалу кольорів.

Ось як це виглядає у коді:

scatter_plot = exp.scatter(x=x, y=y, color=y, color_continuous_scale="Viridis")

По-друге, задамо крапкам розмір 15, щоб вони були більшими. Це можна зробити за допомогою функції update_traces(), а конктено її параметра marker_size:

scatter_plot.update_traces(marker_size=15)

Після нововвдень отримуємо ось такий резудьтат:

Оновлений графік

Як бачимо, тепер наш графік став значно приємнішим і красивішим.

Графік мінімальних прогнозованих значень температури

Для створення цього графіку потрібно лише змінити значення по y на список min_predicted_temperature, який і зберігає ці значення.

Ось код та результат:

def visualize_data(x, y):
    scatter_plot = exp.scatter(x=x, y=y)
    scatter_plot.update_layout(title="Прогноз температури у Києві на січень (мінімальні прогнозовані значення)")
    scatter_plot.show()


visualize_data(days_list, min_predicted_temperature)
Графік мінімальних прогнозованих значень температури на січень

А ось оновлений графік:

Оновлений графік, але на основі мінімальних значень

Можливі помилки при спробі візуалізації через пакет express

Після запуску попореднього коду ви, можливо, можете зіштовхнутися з деякими помилками, які буде відображати ваш код. Це пов’язано із пакетом express бібліотеки plotly. Справа у тому, що для коректної роботи цього пакета треба, щоб ви завантажили декілька інших бібліотек.

Перша помилка полягає у тому, що для роботи з пакетом express треба завантажити бібліотеку numpy. Інакше ви отримаєте таку помилку:

Повідомлення про першу помилку

Команди для встановлення numpy є нижче.

Windows:

pip install numpy

MacOS:

pip3 install numpy

Linux:

pip install numpy

Друга ж помилка аналогічна — треба також встановити іншу бібліотеку. На цей раз необхідно встановити бібліотеку pandas. Якщо ви її не встановите, то в результаті отримаєте таку помилку:

Повідомлення про другу помилку
Повідомлення про другу помилку

Команди для встановлення pandas також показані внизу.

Windows:

pip install pandas

MacOS:

pip3 install pandas

Linux:

pip install pandas

Візуалізація даних або створення графіків за допомогою пакета graph_objects

У першому розділі ми створювали графіки через пакет express бібліотеки plotly, але ті ж самі графіки також можна створювати і через пакет graph_objects, з яким ми вже працювали у минулій статті. Тож, у цьому розділі ми спробуємо створити ці ж графіки через пакет graph_objects, щоб дати ширші знання про plotly.

Імпортуємо бібліотеку з відповідним пакетом:

import plotly.graph_objects as go

Графік максимальних прогнозованих значень температури

Ось приклад реалізації графіка максимальних прогнозованих значень температури на січень:

import plotly.graph_objects as go


def visualize_graph(x, y):
    graph_scatter = go.Figure(data=go.Scatter(x=x, y=y, mode="markers",
                              marker=dict(size=15, 
                                          color=max_predicted_temperature,
                                          colorscale="Viridis", showscale=True
                              )))

    graph_scatter.update_layout(title="Прогноз температури у Києві на січень (максимальні прогнозовані значення)")
    graph_scatter.show()


visualize_graph(days_list, max_predicted_temperature)

Параметр

Означення

mode

Вказуємо, що на графіку повинні бути крапки

size

Розмір крапок

color

Застосовує шкалу кольорів до наших крапок

colorscale

Вказуємо шкалу кольорів

showscale

Показуємо шкалу у правій частині екрана з графіком

Створюємо графік з крапками та заданим розміром зі шкалою кольорів:

graph_scatter = go.Figure(data=go.Scatter(x=x, y=y, mode="markers",
                              marker=dict(size=15, 
                                          color=max_predicted_temperature,
                                          colorscale="Viridis", showscale=True
                              )))

Різниця з пакетом express видна одразу, так як у тому пакеті ми використовували функцію scatter(), а тут користуємося вже класом Scatter() у середені основного класу Figure(). Тобто Figure() — це по суті наше полотно так би мовити, а Scatter() — це вже тип графіка, який буде на цьому полотні.

Додаємо заголовок:

graph_scatter.update_layout(title="Прогноз температури у Києві на січень (максимальні прогнозовані значення)")

Відображаємо графік:

graph_scatter.show()

Результат:

Графік максимальних прогнозованих значень температури на січень

Графік мінімальних прогнозованих значень температури

Реалізація графіка мінімальних прогнозованих значень температури на січень:

import plotly.graph_objects as go


def visualize_graph(x, y):
    graph_scatter = go.Figure(data=go.Scatter(x=x, y=y, mode="markers",
                              marker=dict(size=15, 
                                          color=min_predicted_temperature,
                                          colorscale="Viridis", showscale=True
                              )))

    graph_scatter.update_layout(title="Прогноз температури у Києві на січень (мінімальні прогнозовані значення)")
    graph_scatter.show()


visualize_graph(days_list, min_predicted_temperature)
Графік мінімальних прогнозованих значень температури на січень

Об’єднання графіків

В кінці нашої подорожі по візуалізації було б добре об’єднати графік для максимальних та мінімальних значень в один графік. Це також можна зробити у plotly.

Ось повиний код пограми, яка об’єднує дві вибірки в один графік:

import plotly.graph_objects as go

max_predicted_temperature = [-8, 1, 0, -1, -2, -4, -5, -5, -4, -1, -3, -3, -5, 3, 4, 3, 2, 1, 1, 2, 2, 3, -1, -2, -4, -4, 1, 2, 3, 3, 3]

min_predicted_temperature = [-11, -2, -5, -7, -6, -6, -6, -7, -5, -7, -6, -8, -9, -2, -3, -3, -3, -4, -4, -3, -3, -6, -7, -9, -11, -9, -5, -3, -3, -3, -11]

days_list = ["Ч 1", "П 2", "С 3", "Н 4", "П 5", "В 6", "С 7", "Ч 8", "П 9", "С 10", "Н 11", "П 12", "В 13", "С 14", "Ч 15", "П 16", "С 17", "Н 18", "П 19", 
"В 20", "С 21", "Ч 22", "П 23", "С 24", "Н 25", "П 26", "В 27", "С 28", 
"Ч 29", "П 30", "С 31"]


def visualize_temperature():
    graph = go.Figure()
    graph.add_trace(go.Scatter(x=days_list,
                               y=max_predicted_temperature,
                               name="Максимальні значення температури",
                               mode="markers",
                               fillcolor="blue"
                               )
                    )
    
    graph.add_trace(go.Scatter(x=days_list,
                               y=min_predicted_temperature,
                               name="Мінімальні значення температури",
                               mode="markers",
                               fillcolor="red"
                               )
                    )
    
    graph.update_traces(marker_size=15)
    graph.update_layout(title="Прогноз температури у Києві на січень")
    graph.show()
    
    
visualize_temperature()

Спочатку створюємо об’єкт graph за допомогою класу Figure():

graph = go.Figure()

Далі додаємо максимальні значення температури, вказуємо їх колір на графіку та назву, яку ми потім побачимо у правій стороні екрана:

graph.add_trace(go.Scatter(x=days_list,
                               y=max_predicted_temperature,
                               name="Максимальні значення температури",
                               mode="markers",
                               fillcolor="blue"
                               )
                    )

Додаємо мінімальні значення температури:

graph.add_trace(go.Scatter(x=days_list,
                           y=min_predicted_temperature,
                           name="Мінімальні значення температури",
                           mode="markers",
                           fillcolor="red"
                           )
                )

Як бачимо, ми просто створили об’єкт graph і тепер додаємо до нашого полотна графіки зі значеннями за допомогою метода add_trace().

Задаємо розмір крапкам, заголовок і нарешті відображаємо графік:

graph.update_traces(marker_size=15)
graph.update_layout(title="Прогноз температури у Києві на січень")
graph.show()

В результаті маємо один графік для максимальних і мінімальних значень температури:

Об’єднаний графік

Обчислення статистичних показників

Для знаходження статистичних показниів ми будемо використовувати вбудований модуль statistics, який дозволяє впроваджувати статистичні розрахунки.

Середнє арифметичне

Почнемо анш аналіз з нашпростішої речі — середнього арифметичного. Для її знаходження використовується функція mean().

Для максимальних прогнозованих значень температури:

max_temperature_mean = st.mean(max_predicted_temperature)
print(f"Середнє арифметичне максимальних прогнозованих значень температури: {max_temperature_mean}")
Середнє арифметичне максимальних прогнозованих значень температури: -0.5806451612903226

Для мінімальних прогнозованих значень температури:

min_temperature_mean = st.mean(min_predicted_temperature)
print(f"Середнє арифметичне мінімальних прогнозованих значень температури: {min_temperature_mean}")
Середнє арифметичне мінімальних прогнозованих значень температури: -5.709677419354839

Медіана

Для обчислення медіани існує функція median().

Для максимальних прогнозованих значень температури:

max_temperature_median = st.median(max_predicted_temperature)
print(f"Медіана максимальних прогнозованих значень: {max_temperature_median}")
Медіана максимальних прогнозованих значень: 0

Для мінімальних прогнозованих значень температури:

min_temperature_median = st.median(min_predicted_temperature)
print(f"Медіана мінімальних прогнозованих значень: {min_temperature_median}")
Медіана мінімальних прогнозованих значень: -6

Мода

Щоб знайти моду вибірки необхідно застосувати функцію mode().

Для максимальних прогнозованих значень температури:

max_temperature_mode = st.mode(max_predicted_temperature)
print(f"Мода максимальних прогнозованих значень температури: {max_temperature_mode}")
Мода максимальних прогнозованих значень температури: 3

Для мінімальних прогнозованих значень температури:

min_temperature_mode = st.mode(min_predicted_temperature)
print(f"Мода мінімальних прогнозованих значень температури: {min_temperature_mode}")
Мода мінімальних прогнозованих значень температури: -3

Генеральна дисперсія

Генеральна дисперсія — це такий тип дисперсії, який використовується для визначення рівня розсіяності значень саме за конкретний проміжок часу. У нашому випадку це січень місяць.

Взагалі генеральна дисперсія застосовується у випадку, якщо ми маємо повністю усі значення для аналізу чогось. Таким чином ми зможемо зробити загальний висновок про предмет аналізу. Тобто в нашій ситуації ми маємо значення температури за весь січень, і якщо наша кінцева мета — це зробити висновок про рівень розсіяності значень температури конкретно за січень, тоді нам треба буде використовувати генеральну дисперсію.

Щоб знайти дисперсію за допомогою модуля statistics нам треба використати функцію pvariance(). Спочатку знайдемо дисперсію для максимальних прогнозованих значень температури:

max_temperature_generalized_variance = st.pvariance(max_predicted_temperature)
print(f"Генеральна дисперсія максимальних прогнозованих значень: {max_temperature_generalized_variance}")
Генеральна дисперсія максимальних прогнозованих значень: 10.049947970863684

Тепер для мінімальних прогнозованих значень температури:

min_temperature_generalized_variance = st.pvariance(min_predicted_temperature)
print(f"Генеральна дисперсія мінімальних прогнозованих значень: {min_temperature_generalized_variance}")
Генеральна дисперсія мінімальних прогнозованих значень: 7.173777315296566

Вибіркова дисперсія

Вибіркова дисперсія — це такий тип дисперсії, який використовується для того, щоб зробити загальний висновок про предмет аналізу за частковою кількістю значень. Тобто це якби ми хотіли знайти рівень розсіяності значень температур за усю зиму, маючи лише значення за січень.

Для знаходження вибіркової дисперсії застосовується функція variance().

Для максимальних прогнозованих значень температури:

max_temperature_sample_variance = st.variance(max_predicted_temperature)
print(f"Вибіркова дисперсія максимальних прогнозованих значень: {max_temperature_sample_variance}")
Вибіркова дисперсія максимальних прогнозованих значень: 10.38494623655914

Для мінімальних прогнозованих значень температури:

min_temperature_sample_variance = st.variance(min_predicted_temperature)
print(f"Вибіркова дисперсія мінімальних прогнозованих значень: {min_temperature_sample_variance}")
Вибіркова дисперсія мінімальних прогнозованих значень: 7.412903225806452

Висновок

У підсумку ми дізналися дуже багато нового про створення графіків за допомогою різних пакетів plotly та провели деякий статистичний аналіз наших вибірок завдяки вбудованому модулю statistics, який також був предметом нашої розмови у даній статті. Всім дякую за увагу!

Список джерел
  1. Сайт, з якого були взяті дані для вибірок

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Mystique Lord
Mystique Lord@nocturnal_reader

Нічний читач

352Прочитань
19Автори
10Читачі
Підтримати
На Друкарні з 14 липня

Більше від автора

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: