unit8co / darts

A python library for user-friendly forecasting and anomaly detection on time series.
https://unit8co.github.io/darts/
Apache License 2.0
7.91k stars 857 forks source link

[BUG] NBEATS notebook example not working #580

Closed DataWaveAnalytics closed 2 years ago

DataWaveAnalytics commented 2 years ago

System info Python version: 3.7.12 darts version: 0.13.1

Notebook example is broken at this point:

display_forecast(pred_series, series['0'], '7 day', start_date=pd.Timestamp('20170901'))

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
C:\AppData\Local\Temp/ipykernel_15780/1766667151.py in <module>
      7     verbose=True
      8 )
----> 9 display_forecast(pred_series, series['0'], '7 day', start_date=pd.Timestamp('20170901'))

~\sources\darts\darts\timeseries.py in __getitem__(self, key)
   2447         # handle simple types:
   2448         elif isinstance(key, str):
-> 2449             return self.__class__(self._xa.sel({DIMS[1]: [key]}))  # have to put key in a list not to drop the dimension
   2450         elif isinstance(key, (int, np.int64)):
   2451             xa_ = self._xa.isel({self._time_dim: [key]})

~\AppData\Local\Continuum\anaconda3\envs\darts_env\lib\site-packages\xarray\core\dataarray.py in sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
   1335             method=method,
   1336             tolerance=tolerance,
-> 1337             **indexers_kwargs,
   1338         )
   1339         return self._from_temp_dataset(ds)

~\AppData\Local\Continuum\anaconda3\envs\darts_env\lib\site-packages\xarray\core\dataset.py in sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
   2503         indexers = either_dict_or_kwargs(indexers, indexers_kwargs, "sel")
   2504         pos_indexers, new_indexes = remap_label_indexers(
-> 2505             self, indexers=indexers, method=method, tolerance=tolerance
   2506         )
   2507         # TODO: benbovy - flexible indexes: also use variables returned by Index.query

~\AppData\Local\Continuum\anaconda3\envs\darts_env\lib\site-packages\xarray\core\coordinates.py in remap_label_indexers(obj, indexers, method, tolerance, **indexers_kwargs)
    420 
    421     pos_indexers, new_indexes = indexing.remap_label_indexers(
--> 422         obj, v_indexers, method=method, tolerance=tolerance
    423     )
    424     # attach indexer's coordinate to pos_indexers

~\AppData\Local\Continuum\anaconda3\envs\darts_env\lib\site-packages\xarray\core\indexing.py in remap_label_indexers(data_obj, indexers, method, tolerance)
    118     for dim, index in indexes.items():
    119         labels = grouped_indexers[dim]
--> 120         idxr, new_idx = index.query(labels, method=method, tolerance=tolerance)
    121         pos_indexers[dim] = idxr
    122         if new_idx is not None:

~\AppData\Local\Continuum\anaconda3\envs\darts_env\lib\site-packages\xarray\core\indexes.py in query(self, labels, method, tolerance)
    240                 indexer = get_indexer_nd(self.index, label, method, tolerance)
    241                 if np.any(indexer < 0):
--> 242                     raise KeyError(f"not all values found in index {coord_name!r}")
    243 
    244         return indexer, None

KeyError: "not all values found in index 'component'"
dennisbader commented 2 years ago

Hi @DataWaveAnalytics, and thanks for pointing this out.

We correct that asap. For the meantime try replacing series['0'] with series whenever display_forecast() is called.