python - Python Pandas Dataframe:如何从现有数据框列中获取趋势线数据?
问题描述
我希望能够从我的其他列的两个点创建包含趋势线数据的列,例如收盘价到 5 天后的收盘价。
我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。
现在我不介意在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线编号以便我可以使用它们。
任何帮助是极大的赞赏 :)
解决方案
基本思想是确定直线公式中的常数,并使用该公式向前和/或向后扩展趋势线。直线的公式是:
y = mx + b
其中m
是斜率,b
是y 截距(y
when的值x == 0
)。
该公式假设 x 和 y 都是连续的。
给定两个点(两个 x,y 对)、x1
和y1
, x2
,y2
首先计算斜率:
slope = (y2-y1) / (x2-x1)
然后使用两个点中的任何一个来计算 y 截距:
y-intercept = y1 - slope*x1
现在您可以使用计算所有相关值的y = mx + b
直线y
x
对于时间序列数据,上述有两个问题:
第一个问题是在时间序列y
中通常是float
一段x
是某种datetime
对象。这意味着斜率(y2-y1)/(x2-x1)
将被 afloat
除以 aDatetimeDelta
,这是大多数编程语言所不允许的(除非您可以覆盖除法运算符;但如果是这样,使用什么算法?)。
此问题的解决方案是首先将日期float
为与时间成比例且连续的表示(例如,UNIX 时间或 matplotlib 日期时间)。现在您可以计算斜率和 y 截距。
如果您的时间序列与 time 不连续,则会出现第二个问题。如果您选择忽略非交易日,这在交易数据中很常见。忽略非交易日会导致 x 轴与时间不连续。这意味着斜率计算(y2-y1)/(x2-x1)
将不正确。
这个不连续性问题有两种解决方案:
- 不要担心,因为在短时间内,即使有一些不连续性,斜率计算也可能 是一个足够接近的近似值。
- 如果您的数据框中完全缺少非交易日,请认识到,虽然数据在时间方面可能是不连续的,但相对于 数据框的行号而言是连续的。因此,可以使用分母中的数据帧行号来计算斜率。
单击此处可以找到更详细的讨论以及一些代码示例和图表。
hth
推荐阅读
- python - 如何根据行从熊猫数据框中绘制,所以每列都是一个点
- android - 使用 Glide 调整 ImageView 的高度以匹配原始图像的纵横比
- swift - UITableViewCell 中带有多行标签的 UIStackView 高度不正确
- javascript - 仅在加载页面时如何使用javascript调用JSF支持bean方法
- python - 如何下载更快的 youtube 音频或视频文件?
- sql-server - SQL Server Profiler 在不同系统上跟踪相同查询的不同结果
- julia - 如何在 Julia ccall 中指定相对库路径?
- typescript - 如何在本机反应中转换方法中的名称
- macos - 在 Xamarin 中使用 NSAppleEventsUsageDescription 获取登录项
- ios - 如果我们在很长一段时间后使用 MSGraphSDK,发送邮件功能在 iOS 中不起作用