gpt4 book ai didi

python - 计算 Pandas 中一系列趋势线的斜率

转载 作者:行者123 更新时间:2023-12-02 00:47:42 25 4
gpt4 key购买 nike

是否有一种惯用的方法可以获取 DataFrame 列中线性趋势线拟合值的斜率?数据使用 DateTime 索引进行索引。

最佳答案

这应该可以做到:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.rand(100, 5), pd.date_range('2012-01-01', periods=100))

def trend(df):
df = df.copy().sort_index()
dates = df.index.to_julian_date().values[:, None]
x = np.concatenate([np.ones_like(dates), dates], axis=1)
y = df.values
return pd.DataFrame(np.linalg.pinv(x.T.dot(x)).dot(x.T).dot(y).T,
df.columns, ['Constant', 'Trend'])


trend(df)

enter image description here

使用上面相同的 df 作为索引:

df_sample = pd.DataFrame((df.index.to_julian_date() * 10 + 2) + np.random.rand(100) * 1e3, df.index)

coef = trend(df_sample)
df_sample['trend'] = (coef.iloc[0, 1] * df_sample.index.to_julian_date() + coef.iloc[0, 0])
df_sample.plot(style=['.', '-'])

enter image description here

关于python - 计算 Pandas 中一系列趋势线的斜率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38385162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com