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

2024-09-28 01:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在我不想在MPLFinancy或matplotlib中绘制它们,我只想要趋势线数字,这样我就可以使用它们了

非常感谢您的帮助:)


Tags: 数据matplotlib绘制数字趋势收盘价mplfinancy
1条回答
网友
1楼 · 发布于 2024-09-28 01:25:13

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

y = mx + b

其中m斜率,而by截距(当x == 0y的值)

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


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

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

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

y-intercept = y1 - slope*x1

现在可以使用y = mx + b计算y的所有相关值的直线x


对于时间序列数据,上述数据存在两个问题:


第一个问题是在时间序列中y通常是floatx通常是datetime对象的某种味道。这意味着斜率(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.

相关问题 更多 >

    热门问题