Напишите Python-скрипт, который принимает временной ряд в виде pandas.Series
и определяет тренд: восходящий, нисходящий или отсутствие тренда. Решение должно быть простым и лаконичным.
import pandas as pd
import numpy as np
# Генерация данных
date_range = pd.date_range(start="2020-01-01", periods=12, freq="M")
values = np.linspace(10, 20, 12) + np.random.normal(0, 0.5, 12)
time_series = pd.Series(data=values, index=date_range)
result = detect_trend(time_series)
print(result) # Ожидаемый результат: "Восходящий тренд"
Решение задачи
import numpy as np
def detect_trend(series):
x = np.arange(len(series))
slope = np.polyfit(x, series.values, 1)[0]
if slope > 0:
return "Восходящий тренд"
elif slope < 0:
return "Нисходящий тренд"
else:
return "Тренд отсутствует"
# Пример использования
import pandas as pd
import numpy as np
date_range = pd.date_range(start="2020-01-01", periods=12, freq="M")
values = np.linspace(10, 20, 12) + np.random.normal(0, 0.5, 12)
time_series = pd.Series(data=values, index=date_range)
print(detect_trend(time_series))