Я прошел через ту же проблему, с которой вы сталкиваетесь сегодня.Чтобы обнаружить тенденцию, я не смог найти определенную функцию, чтобы справиться с ситуацией.
Я нашел действительно полезную функцию, т.е. numpy.polyfit ()
numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
[Проверьте эту официальную документацию]
Вы можете использовать функцию, подобную этой
def trenddetector(list_of_index,array_of_data, order=1):
result = np.polyfit(list_of_index, list(data), order)
slope = result[-2]
return float(slope)
, эта функция возвращает значение с плавающей запятой, которое указывает тренд ваших данных, а также вы можете использовать его, например, как
,
если уклон равен + ve -> тенденция к увеличению
если уклон равен -ve -> тенденция к снижению
если уклонявляется нулевым значением -> Нет тренда
Поиграйте с этой функцией, найдите правильный порог в соответствии с вашей проблемой и задайте его как условие.
Пример кода для вашего решения
import numpy as np
def trendline(index,data, order=1):
coeffs = np.polyfit(index, list(data), order)
slope = coeffs[-2]
return float(slope)
index=[1,2,3,4]
List=[1043,6582,5452,7571]
resultent=trendline(index,List)
print(resultent)
РЕЗУЛЬТАТ
1845.3999999999999
Согласно этому выводу, результат намного больше нуля, поэтому он показывает, что ваши данные неуклонно растут.