
[英]Python Pandas Dataframe: How to create columns from existing list in dataframe?
[英]Python Pandas Dataframe: How to get Trend Lines data from existing dataframe columns?
我希望能够从我的其他列的两个点创建包含趋势线数据的列,例如收盘价到 5 天后的收盘价。
我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。
现在我不介意在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线编号以便我可以使用它们。
任何帮助是极大的赞赏:)
基本思想是确定直线公式中的常数,并使用该公式向前和/或向后扩展趋势线。 直线的公式是:
y = mx + b
其中m
是斜率, b
是y 截距(当x == 0
时y
的值)。
该公式假设 x 和 y 都是连续的。
给定两个点(两个 x,y 对) x1
, y1
和x2
, y2
,首先计算斜率:
slope = (y2-y1) / (x2-x1)
然后使用两个点中的任何一个来计算 y 截距:
y-intercept = y1 - slope*x1
现在您可以使用y = mx + b
来计算x
的所有相关值的直线y
第一个问题是在时间序列中, y
通常是float
,而x
通常是datetime
时间 object 的某种风格。 这意味着斜率(y2-y1)/(x2-x1)
将是float
除以DatetimeDelta
,大多数编程语言都不允许这样做(除非您可以覆盖除法运算符;但如果是这样,用什么算法?) .
此问题的解决方案是首先将日期时间转换为与时间成比例且连续的float
表示(例如,UNIX 时间或 matplotlib 日期时间)。 现在您可以计算斜率和 y 截距。
如果您的时间序列与 time 不连续,则会出现第二个问题。 如果您选择忽略非交易日,这在交易数据中很常见。 忽略非交易日会导致 x 轴与时间不连续。 这意味着斜率计算(y2-y1)/(x2-x1)
将不正确。
这个不连续性问题有两种解决方案:
hth
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.