如何解决Python Pandas Dataframe:如何从现有数据框列中获取趋势线数据? 对于时间序列数据,上面有两个问题:A more detailed discussion, along with some code examples and plots, can be found by clicking here.
我希望能够从其他列的两点创建包含趋势线数据的列,例如5 天后收盘价至收盘价。
我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。
现在我不想在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线编号,以便我可以使用它们。
非常感谢任何帮助:)
解决方法
基本思想是确定直线公式中的常数,并使用该公式向前和/或向后延伸趋势线。直线的公式是:
y = mx + b
其中 m
是 斜率,b
是 y 截距(当 {{1 }}).
这个公式假设 x 和 y 都是连续的。
给定两个点(两个 x,y 对),y
,x == 0
和 x1
,y1
,首先计算斜率:
x2
然后使用两个点中的任何一个来计算 y 截距:
y2
现在您可以使用 slope = (y2-y1) / (x2-x1)
为 y-intercept = y1 - slope*x1
的所有相关值计算直线 y = mx + b
对于时间序列数据,上面有两个问题:
第一个问题是时间序列y
通常是x
strong> 而 y
通常是 float
对象的某种风格。这意味着斜率 x
将是 datetime
除以 (y2-y1)/(x2-x1)
,这是大多数编程语言不允许的(除非您可以覆盖除法运算符;但如果是这样,使用什么算法?).
此问题的解决方案是首先将日期时间转换为与时间成比例且连续的 float
表示(例如,UNIX时间,或 matplotlib 日期时间)。现在您可以计算斜率和 y 轴截距。
第二个问题如果您的时间序列与时间不连续就会发生。这在交易数据中很常见如果您选择忽略非交易日。忽略非交易日会导致 x 轴随时间不连续。这意味着斜率计算 DatetimeDelta
将不正确。
这个不连续性问题有两种解决方案:
- 不要担心,因为在短时间内,即使有一些不连续性,斜率计算可能 是一个足够接近的近似值.
- 如果您的数据框架中完全没有非交易日,请注意,虽然数据在时间方面可能是不连续的,但就而言是连续的> 数据框的行号。因此,可以使用分母中的数据框行号计算斜率。
A more detailed discussion,along with some code examples and plots,can be found by clicking here.
第
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。