1 个回答
-
您可以使用numpy.polyfit,您可以提供订单作为拟合多项式的度。
请参阅:numpy.polyfit文档
import numpy as np import pandas as pd def trendline(data, order=1): coeffs = np.polyfit(data.index.values, list(data), order) slope = coeffs[-2] return float(slope) #Sample Dataframe revenue = [0.85, 0.99, 1.01, 1.12, 1.25, 1.36, 1.28, 1.44] year = [1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000] # check if values are exactly same if (len(set(revenue))) <= 1: print(0) else: df = pd.DataFrame({'year': year, 'revenue': revenue}) slope = trendline(df['revenue']) print(slope)
所以现在如果斜率的值是+ ve,趋势是增加的,如果是0,趋势是恒定的,否则是减少的
在您给定的数据中,斜率是0.0804761904762。因此,趋势正在增加
更新:如果值完全恒定,趋势线将失败,您可以添加自定义检查
(len(set(revenue))) <= 1
以进行验证,如果是,则返回0。