python中调用R语言包

用python做时间序列分析时,调用了R语言中的stl函数。共享脚本和踩过的坑:
 

import pandas as pd
from pandas import DataFrame 
import numpy as np
import time
import datetime
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri

def abnormal_detection(observed):
    pandas2ri.activate()
    stl=robjects.r['stl']
    ts=robjects.r['ts']
    c=robjects.r['c']
    read_csv=robjects.r['read.csv']

    observed_periodic=ts(observed,frequency=7,start=c(1,1))    
    decompose=stl(observed_periodic,"per",robust="TRUE",t_degree=1)
    #分解出decompose结果中,seasonal, trend,residual。 
    lenth = len(decompose[0])
    seasonal=decompose[0][0:int(lenth/3)]
    trend=decompose[0][int(lenth/3):int(2*lenth/3)]
    residual = decompose[0][int(2*lenth/3):]

 

其中一个坑是在decompose=stl(observed_periodic,"per",robust="TRUE",t_degree=1)中,t_degree这个参数的写法。

R的官方文档写的是t.degree,但是这个写法在python中会报错:

SyntaxError: keyword can't be an expression

R环境中不报错,但是python里面一直跳这个错误。说好的可以直接引用R下的函数和参数呢...

在网上几乎没看到相关问题的回答,是在stackoverflow上有人写了一段实例代码中,t.degree写成了d_degree,于是猜测是在python下这个参数的写法要改变来使用Python的语法规则。

分享给需要的盆友~

你可能感兴趣的:(技术(原创))