Facebook-Prophet: ошибка переполнения при установке - PullRequest
1 голос
/ 23 сентября 2019

Я хотел попрактиковаться с Пророком, поэтому я решил загрузить данные "Среднее число солнечных пятен за год [1700 - сейчас]" из этого места

http://www.sidc.be/silso/datafiles#total.

Это мой кодпока что

import numpy as np
import matplotlib.pyplot as plt
from fbprophet import Prophet
from fbprophet.plot import plot_plotly
import plotly.offline as py
import datetime

py.init_notebook_mode()

plt.style.use('classic')

df = pd.read_csv('SN_y_tot_V2.0.csv',delimiter=';', names = ['ds', 'y','C3', 'C4', 'C5'])


df = df.drop(columns=['C3', 'C4', 'C5'])

df.plot(x="ds", style='-',figsize=(10,5))
plt.xlabel('year',fontsize=15);plt.ylabel('mean number of sunspots',fontsize=15)
plt.xticks(np.arange(1701.5, 2018.5,40))
plt.ylim(-2,300);plt.xlim(1700,2020)
plt.legend()df['ds'] = pd.to_datetime(df.ds, format='%Y')


df['ds'] = pd.to_datetime(df.ds, format='%Y')

m = Prophet(yearly_seasonality=True)

Пока все выглядит хорошо, и df ['ds'] находится в формате даты и времени.

Однако, когда я выполняю

m.fit(df)

Я получаю следующую ошибку

---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
<ipython-input-57-a8e399fdfab2> in <module>()
----> 1 m.fit(df)

/anaconda2/envs/mde/lib/python3.7/site-packages/fbprophet/forecaster.py in fit(self, df, **kwargs)
   1055         self.history_dates = pd.to_datetime(df['ds']).sort_values()
   1056 
-> 1057         history = self.setup_dataframe(history, initialize_scales=True)
   1058         self.history = history
   1059         self.set_auto_seasonalities()

/anaconda2/envs/mde/lib/python3.7/site-packages/fbprophet/forecaster.py in setup_dataframe(self, df, initialize_scales)
    286             df['cap_scaled'] = (df['cap'] - df['floor']) / self.y_scale
    287 
--> 288         df['t'] = (df['ds'] - self.start) / self.t_scale
    289         if 'y' in df:
    290             df['y_scaled'] = (df['y'] - df['floor']) / self.y_scale

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/ops/__init__.py in wrapper(left, right)
    990             # test_dt64_series_add_intlike, which the index dispatching handles
    991             # specifically.
--> 992             result = dispatch_to_index_op(op, left, right, pd.DatetimeIndex)
    993             return construct_result(
    994                 left, result, index=left.index, name=res_name, dtype=result.dtype

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/ops/__init__.py in dispatch_to_index_op(op, left, right, index_class)
    628         left_idx = left_idx._shallow_copy(freq=None)
    629     try:
--> 630         result = op(left_idx, right)
    631     except NullFrequencyError:
    632         # DatetimeIndex and TimedeltaIndex with freq == None raise ValueError

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/indexes/datetimelike.py in __sub__(self, other)
    521         def __sub__(self, other):
    522             # dispatch to ExtensionArray implementation
--> 523             result = self._data.__sub__(maybe_unwrap_index(other))
    524             return wrap_arithmetic_op(self, other, result)
    525 

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/arrays/datetimelike.py in __sub__(self, other)
   1278             result = self._add_offset(-other)
   1279         elif isinstance(other, (datetime, np.datetime64)):
-> 1280             result = self._sub_datetimelike_scalar(other)
   1281         elif lib.is_integer(other):
   1282             # This check must come after the check for np.timedelta64

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in _sub_datetimelike_scalar(self, other)
    856 
    857         i8 = self.asi8
--> 858         result = checked_add_with_arr(i8, -other.value, arr_mask=self._isnan)
    859         result = self._maybe_mask_results(result)
    860         return result.view("timedelta64[ns]")

/anaconda2/envs/mde/lib/python3.7/site-packages/pandas/core/algorithms.py in checked_add_with_arr(arr, b, arr_mask, b_mask)
   1006 
   1007     if to_raise:
-> 1008         raise OverflowError("Overflow in int64 addition")
   1009     return arr + b
   1010 

OverflowError: Overflow in int64 addition```

I understand that there's an issue with 'ds', but I am not sure whether there is something wring with the column's format or an open issue.

Does anyone have any idea how to fix this? I have checked some issues in github, but they haven't been of much help in this case.


Thanks

...