2017-02-17 1 views
1

pyculiarity 패키지에서 detect_ts 함수를 실행하려고하지만이 python에서 2 차원 데이터 프레임을 전달할 때이 오류가 발생합니다.TypeError : 'numpy.float64'객체를 정수로 해석 할 수 없습니다.

>>> import pandas as pd 
>>> from pyculiarity import detect_ts 
>>> data=pd.read_csv('C:\\Users\\nikhil.chauhan\\Desktop\\Bosch_Frame\\dataset1.csv',usecols=['time','value']) 
>>> data.head() 
    time value 
0  0 32.0 
1 250 40.5 
2 500 40.5 
3 750 34.5 
4 1000 34.5 
>>> results = detect_ts(data,max_anoms=0.05,alpha=0.001,direction = 'both') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\detect_ts.py", line 177, in detect_ts 
    verbose=verbose) 
    File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\detect_anoms.py", line 69, in detect_anoms 
    decomp = stl(data.value, np=num_obs_per_period) 
    File "C:\Windows\System32\pyculiar-0.0.5\pyculiarity\stl.py", line 35, in stl 
    res = sm.tsa.seasonal_decompose(data.values, model='additive', freq=np) 
    File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\seasonal.py", line 88, in seasonal_decompose 
    trend = convolution_filter(x, filt) 
    File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\filters\filtertools.py", line 303, in convolution_filter 
    result = _pad_nans(result, trim_head, trim_tail) 
    File "C:\Anaconda3\lib\site-packages\statsmodels\tsa\filters\filtertools.py", line 28, in _pad_nans 
    return np.r_[[np.nan] * head, x, [np.nan] * tail] 
TypeError: 'numpy.float64' object cannot be interpreted as an integer 
+0

나는 detect_ts''에 대한 문서를 검토 할 것입니다. 입력이 올바른 유형인지 확인하십시오. 'data.values'는'data'로부터 배열을 추출합니다. 다른 접근법은 '머리', 'x'및 '꼬리'를 추론하여 끝에서부터 작업하는 것입니다. '[np.nan] * np.float64 (2)'는 오류를 생성합니다. – hpaulj

+0

동일한 오류가 발생했습니다 ... 데이터에 액세스하기위한 폴더 경로를 활성화 한 경우. (예 : G 폴더/공유 링크의 경우) 액세스 데이터에 대한 링크가 활성화되었으므로 오류가 해결되었습니다. – Abhishek

답변

0

코드의 문제는 np.nanfloat64 형의 값입니다 수도 있지만, np.r_[]정수의 대괄호 안에을 쉼표로 구분 기대하고있다. 따라서 정수 형식으로 변환해야합니다.

하지만 여기에는 또 다른 문제가 있습니다.

이 보통의 경우에 문제를 해결해야
return np.r_[[(int)(np.nan)] * head, x, [(int)(np.nan)] * tail] 

.... 그러나이 경우 실 거예요 작업, 으로 NaN의 유형을 정수로 주조 유형이 될 수 없습니다. 우리가 여기서 뭘 하려는지 알지 못한다면

ValueError: cannot convert float NaN to integer 

따라서, 더 적절한 솔루션을 제안 할 수 없습니다. 코드에 대한 세부 정보를 조금 더 제공하면 도움이 될 것입니다.

:-) 것은

관련 문제