Python Pandas Dataframe:如何从现有 Dataframe 列中获取趋势线数据?

Python Pandas Dataframe: How to get Trend Lines data from existing dataframe columns?

我希望能够从其他列的两个点创建包含趋势线数据的列,例如收盘价为 5 天后的收盘价。

我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。

现在我不想在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线数字以便我可以使用它们。

非常感谢任何帮助:)

基本思想是确定直线公式中的常数,并使用公式将趋势线向前and/or向后延伸。直线的公式是:

y = mx + b

其中 m 斜率 by 轴截距 yx == 0).

此公式假设 x 和 y 都是连续的。


给定两个点(两个 x,y 对)x1y1x2y2,首先计算斜率:

slope = (y2-y1) / (x2-x1)

然后使用两个点中的任何一个来计算 y 轴截距:

y-intercept = y1 - slope*x1

现在您可以使用y = mx + b计算x

所有相关值的直线y

对于时间序列数据,上面有两个问题:


第一个问题是在时间序列中y通常是floatx 通常是 datetime[=93 的某种风格=] 对象。这意味着斜率 (y2-y1)/(x2-x1) 将是 float 除以 DatetimeDelta,大多数编程语言都不允许这样做(除非您可以覆盖除法运算符;但如果可以,使用什么算法?)。

这个问题的解决方案是首先将日期时间转换成float表示,它与关于时间(例如,UNIX 时间或 matplotlib 日期时间)。现在您可以计算斜率和 y 轴截距了。


第二个问题 如果您的时间序列与时间不连续,就会发生。如果您选择忽略非交易日,这在交易数据中很常见。忽略非交易日会导致 x 轴随时间不连续。这意味着斜率计算 (y2-y1)/(x2-x1) 将不正确。

这个不连续性问题有两个解决方案

  1. 不用担心,因为在短时间内,即使有一些不连续性,斜率计算 可能 是一个足够接近的近似值
  2. 如果您的数据框中完全缺少非交易日,请认识到,虽然数据在时间方面可能是不连续的,但它在[方面是连续的 数据帧的行号。因此,可以使用分母中的数据帧行号来计算斜率。

A more detailed discussion, along with some code examples and plots, can be found by clicking here.

hth