• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python 如何让特征值滞后一行

    看代码吧~

    # 加载库
    import pandas as pd
    ​
    # 데이터프레임을 만듭니다.
    dataframe = pd.DataFrame()
    ​
    # 模拟数据
    dataframe["dates"] = pd.date_range("1/1/2001", periods=5, freq="D")
    dataframe["stock_price"] = [1.1,2.2,3.3,4.4,5.5]
    dataframe.head()
    ​
    # 让值滞后一行
    dataframe["previous_days_stock_price"] = dataframe["stock_price"].shift(1)
    ​
    dataframe.head()​
    dates	stock_price	previous_days_stock_price
    0	2001-01-01	1.1	NaN
    1	2001-01-02	2.2	1.1
    2	2001-01-03	3.3	2.2
    3	2001-01-04	4.4	3.3
    4	2001-01-05	5.5	4.4
    

    补充:怎样用python画超前滞后先关图

    想要获取更多Python学习资料,了解更多关于Python的知识,可以加Q群630390733踊跃发言,大家一起来学习讨论吧!

    超前滞后相关是什么

    想看两个时间序列是否相关,最简单的方法就是求二者的相关系数,但是在大气、海洋等科学问题的研究中,往往一个过程的响应并不是实时的,可能当a过程发生以后一段时间b过程才会发生,这样的关系往往不是同时期的相关系数可以表现的。

    超前滞后相关就是为了看两个过程的发生演变是否在时间的先后上有一定的相关性。

    举个例子:

    有a、b两个时间序列,长度都是十二个月,直接求相关系数就是简单的同期相关。

    如果a的1-11月对b的2-12月做相关系数,就是a对b超前1个月的相关;拿a的2-12月对b的1-11月做相关则称之为a对b的滞后1月相关,以此类推,就能求出n个月的超前滞后相关,画图出来就是沿0月(同期)正负各n月。

    摘自黄嘉佑的书《气相统计分析与预报方法》,第三版,17页

    python中的实现

    需要输入两个时间序列,结果为data1对data2的超前滞后相关系数的序列

    from scipy.stats import pearsonr
    import numpy as np
     
    #超前滞后相关
    def leadlagcor(data1,data2,n):
    	#data1和data2为两个时间序列,n设置做多少个时间步长的超前滞后
        a=-n
        b=-a
        c=b*2+1
        x=np.arange(-n,n+1,1)
        r=np.zeros((c,1))
        p=np.zeros((c,1))
     
        for i in range(c):
            if i(b):
                r[n-i],p[n-i]=pearsonr(data1[:(len(data1)-i)], data2[i:])
            else:
                r[i],p[i]=pearsonr(data1[x[i]:], data2[:len(data1)-x[i]])
        return r

    附赠一个可视化程序

    def leadlagcor_plot(data1,data2,n):
    	#data1和data2为两个时间序列,n设置做多少个时间步长的超前滞后
        r=leadlagcor(data1,data2,n)#调用上面写的函数做超前滞后相关
        x=range(-n,n+1,1)
        
        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.plot(x,r,'k--',linewidth=0.8)
        ax.axhline(0, color='k')
        
        b=ax.bar(x,np.squeeze(r),color='red')
        for bar,height in zip(b,r):
            if height0:
                bar.set(color='blue')
         
        print('cor_max:',np.max(r),'\n','cor_min:',np.min(r)) 
        plt.savefig('%s.jpg')
        plt.show()

    画出来的结果就是这样啦,有更好的写法和例图也欢迎分享~

    祝大家科研顺利,身心健康!

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • python共轭梯度法特征值迭代次数讨论
    • Python箱型图绘制与特征值获取过程解析
    • python dataframe常见操作方法:实现取行、列、切片、统计特征值
    上一篇:python实现电脑操控安卓手机
    下一篇:python 实现添加标签&打标签的操作
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python 如何让特征值滞后一行 Python,如何,让,特征值,滞后,