Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Features/indexing #150

Merged
merged 22 commits into from
Aug 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
425a479
add support for columns to the TimeSeries object
grll Jul 15, 2020
beb6432
add colum support indexing to timeseries
grll Jul 16, 2020
20064aa
fix wrong docstring
grll Jul 16, 2020
8c9f224
refactor indexing, fix docstring, columns as last arg
grll Jul 16, 2020
a8021ed
clean indexing method
grll Jul 16, 2020
4bde24b
refactor indexing only based on loc and iloc
grll Jul 16, 2020
f9d89a8
Update darts/timeseries.py
grll Jul 16, 2020
9c0c9e6
use underlying columns by default
grll Jul 20, 2020
cd6df5d
fix column added on intern _df and use self.freq_str
grll Jul 20, 2020
6bef192
fix parameter position in from_times_and_values
grll Jul 20, 2020
fb8b78d
fix the tests to use str columns
grll Jul 20, 2020
9ad5c46
fix docstring timeseries
grll Jul 20, 2020
1cde216
remove None check on df that should exists
grll Jul 20, 2020
66105c7
Merge branch 'develop' into features/indexing
grll Jul 21, 2020
8ddc228
Merge branch 'develop' into features/indexing
TheMP Jul 28, 2020
cade004
add comment for clarifying that _df is a copy
grll Jul 28, 2020
38635ab
add separate function to process columns
grll Jul 28, 2020
f96f169
Merge branch 'features/indexing' of github.com:unit8co/darts into fea…
grll Jul 28, 2020
28173d1
Merge branch 'develop' into features/indexing
grll Jul 29, 2020
b515be0
adapt map with str col indexing
grll Jul 30, 2020
1a2189b
Merge branch 'develop' into features/indexing
grll Jul 31, 2020
4261a1f
Merge branch 'develop' into features/indexing
TheMP Jul 31, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion darts/models/forecasting_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def _build_forecast_series(self,

time_index = self._generate_new_dates(len(points_preds))

return TimeSeries.from_times_and_values(time_index, points_preds, self.training_series.freq())
return TimeSeries.from_times_and_values(time_index, points_preds, freq=self.training_series.freq())


class UnivariateForecastingModel(ForecastingModel):
Expand Down
21 changes: 11 additions & 10 deletions darts/tests/test_timeseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,9 @@ def test_getitem(self):
seriesA: TimeSeries = self.series1.drop_after(pd.Timestamp("20130105"))
self.assertEqual(self.series1[pd.date_range('20130101', ' 20130104')], seriesA)
self.assertEqual(self.series1[:4], seriesA)
self.assertTrue(self.series1[pd.Timestamp('20130101')].equals(self.series1.pd_dataframe()[:1]))
self.assertEqual(self.series1[pd.Timestamp('20130101'):pd.Timestamp('20130105')], seriesA)
self.assertTrue(self.series1[pd.Timestamp('20130101')] == TimeSeries(self.series1.pd_dataframe()[:1],
freq=self.series1.freq()))
self.assertEqual(self.series1[pd.Timestamp('20130101'):pd.Timestamp('20130104')], seriesA)

with self.assertRaises(IndexError):
self.series1[pd.date_range('19990101', '19990201')]
Expand Down Expand Up @@ -441,21 +442,21 @@ def test_map(self):
df_01 = series.pd_dataframe()
df_012 = series.pd_dataframe()

df_0[[0]] = df_0[[0]].applymap(fn)
df_2[[2]] = df_2[[2]].applymap(fn)
df_01[[0, 1]] = df_01[[0, 1]].applymap(fn)
df_0[["0"]] = df_0[["0"]].applymap(fn)
df_2[["2"]] = df_2[["2"]].applymap(fn)
df_01[["0", "1"]] = df_01[["0", "1"]].applymap(fn)
df_012 = df_012.applymap(fn)

series_0 = TimeSeries(df_0, 'D')
series_2 = TimeSeries(df_2, 'D')
series_01 = TimeSeries(df_01, 'D')
series_012 = TimeSeries(df_012, 'D')

self.assertEqual(series_0, series.map(fn, 0))
self.assertEqual(series_0, series.map(fn, [0]))
self.assertEqual(series_2, series.map(fn, 2))
self.assertEqual(series_01, series.map(fn, [0, 1]))
self.assertEqual(series_012, series.map(fn, [0, 1, 2]))
self.assertEqual(series_0, series.map(fn, "0"))
self.assertEqual(series_0, series.map(fn, ["0"]))
self.assertEqual(series_2, series.map(fn, "2"))
self.assertEqual(series_01, series.map(fn, ["0", "1"]))
self.assertEqual(series_012, series.map(fn, ["0", "1", "2"]))
self.assertEqual(series_012, series.map(fn))

self.assertNotEqual(series_01, series.map(fn))
28 changes: 14 additions & 14 deletions darts/tests/test_timeseries_multivariate.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ class TimeSeriesMultivariateTestCase(unittest.TestCase):
times1 = pd.date_range('20130101', '20130110')
times2 = pd.date_range('20130206', '20130215')
dataframe1 = pd.DataFrame({
0: range(10),
1: range(5, 15),
2: range(10, 20)
"0": range(10),
"1": range(5, 15),
"2": range(10, 20)
}, index=times1)
dataframe2 = pd.DataFrame({
0: np.arange(1, 11),
1: np.arange(1, 11) * 3,
2: np.arange(1, 11) * 5
"0": np.arange(1, 11),
"1": np.arange(1, 11) * 3,
"2": np.arange(1, 11) * 5
}, index=times1)
dataframe3 = pd.DataFrame({
0: np.arange(1, 11),
1: np.arange(11, 21),
"0": np.arange(1, 11),
"1": np.arange(11, 21),
}, index=times2)
series1 = TimeSeries(dataframe1)
series2 = TimeSeries(dataframe2)
Expand All @@ -44,7 +44,7 @@ def test_creation(self):
# Series cannot be lower than three without passing frequency as argument to constructor
with self.assertRaises(ValueError):
TimeSeries(self.dataframe1.iloc[:2, :])
TimeSeries(self.dataframe1.iloc[:2, :], 'D')
TimeSeries(self.dataframe1.iloc[:2, :], freq='D')

def test_eq(self):
seriesA = TimeSeries(self.dataframe1)
Expand Down Expand Up @@ -73,9 +73,9 @@ def test_rescale(self):
seriesB = self.series2.rescale_with_value(1)
self.assertEqual(seriesB, TimeSeries(
pd.DataFrame({
0: np.arange(1, 11),
1: np.arange(1, 11),
2: np.arange(1, 11)
"0": np.arange(1, 11),
"1": np.arange(1, 11),
"2": np.arange(1, 11)
}, index=self.dataframe2.index).astype(float)
))

Expand Down Expand Up @@ -119,7 +119,7 @@ def test_stack(self):
self.series1.stack(self.series3)
seriesA = self.series1.stack(self.series2)
dataframeA = pd.concat([self.dataframe1, self.dataframe2], axis=1)
dataframeA.columns = range(6)
dataframeA.columns = [str(i) for i in range(6)]
self.assertTrue((seriesA.pd_dataframe() == dataframeA).all().all())
self.assertEqual(seriesA.values().shape, (len(self.dataframe1),
len(self.dataframe1.columns) + len(self.dataframe2.columns)))
Expand All @@ -130,7 +130,7 @@ def test_univariate_component(self):
with self.assertRaises(ValueError):
self.series1.univariate_component(3)
seriesA = self.series1.univariate_component(1)
self.assertTrue(seriesA == TimeSeries.from_times_and_values(self.times1, range(5, 15)))
self.assertTrue(seriesA == TimeSeries.from_times_and_values(self.times1, range(5, 15), columns=["1"]))
seriesB = self.series1.univariate_component(0).stack(seriesA).stack(self.series1.univariate_component(2))
self.assertTrue(self.series1 == seriesB)

Expand Down
Loading