-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgraphs.py
More file actions
88 lines (76 loc) · 3.11 KB
/
Copy pathgraphs.py
File metadata and controls
88 lines (76 loc) · 3.11 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
def plot_temp(data, city, date, days):
"""
Построение графика изменения температуры за заданный период.
Параметры:
data (pd.DataFrame): Датасет с температурными данными.
city (str): Название города для анализа.
date (datetime): Дата начала анализа.
days (int): Количество дней для анализа.
Возвращает:
plotly.graph_objs._figure.Figure: График с изменением температуры,
скользящим средним и доверительными интервалами.
"""
stop = date + pd.Timedelta(days=days)
return px.line(
data.query('timestamp >= @date and timestamp <= @stop'),
x="timestamp",
y=["temperature", "moving_average", "ci_up", "ci_down"],
title=f'Среднесуточная температура в {city}',
color_discrete_map={'temperature': 'darkblue', 'moving_average': 'red', 'ci_up': 'orange', 'ci_down': 'orange'},
)
def plot_moving_average(data, city):
"""
Построение графика скользящего среднего температуры с выделением выбросов.
Параметры:
data (pd.DataFrame): Датасет с температурными данными.
city (str): Название города для анализа.
Возвращает:
plotly.graph_objs._figure.Figure: График скользящего среднего, выбросов и среднего по сезону.
"""
fig = go.Figure()
# Добавляем линию скользящего среднего
fig.add_trace(
go.Scatter(
name='moving average',
x=data['timestamp'],
y=data['moving_average'],
line_color='darkblue',
))
# Выделяем выбросы (outliers)
outliers = data[data.is_outlier == 1]
fig.add_trace(
go.Scatter(
name='outliers',
x=outliers['timestamp'] ,
y=outliers['temperature'],
mode='markers',
marker_color='darkorange'
)
)
# Добавляем линию среднего по сезону
fig.add_trace(
go.Scatter(
name='average temperature in season',
x=data['timestamp'],
y=data['mean']
)
)
# Настройки оформления графика
fig.update_layout(
title=dict(
text=f"Скользящее среднее температуры в {city}"
),
xaxis=dict(
title=dict(
text="timestamp"
)
),
yaxis=dict(
title=dict(
text="value"
)
))
return fig