Skip to content

Commit c98b091

Browse files
authored
changes wording of datetime transformer features (#355)
1 parent a734128 commit c98b091

File tree

4 files changed

+43
-44
lines changed

4 files changed

+43
-44
lines changed

feature_engine/datetime/datetime.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,10 @@ class DatetimeFeatures(BaseEstimator, TransformerMixin):
3939
- "quarter"
4040
- "semester"
4141
- "year"
42-
- "week_of_the_month"
43-
- "week_of_the_year"
44-
- "day_of_the_week"
45-
- "day_of_the_month"
46-
- "day_of_the_year"
42+
- "week"
43+
- "day_of_week"
44+
- "day_of_month"
45+
- "day_of_year"
4746
- "weekend"
4847
- "month_start"
4948
- "month_end"
@@ -68,7 +67,7 @@ class DatetimeFeatures(BaseEstimator, TransformerMixin):
6867
6968
features_to_extract: list, default=None
7069
The list of date features to extract. If None, the following features will be
71-
extracted: "month", "year", "day_of_the_week", "day_of_the_month", "hour",
70+
extracted: "month", "year", "day_of_week", "day_of_month", "hour",
7271
"minute" and "second". If "all", all supported features will be extracted.
7372
Alternatively, you can pass a list with the names of the supported features
7473
you want to extract.

feature_engine/datetime/datetime_constants.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
"quarter",
66
"semester",
77
"year",
8-
"week_of_the_year",
9-
"day_of_the_week",
10-
"day_of_the_month",
11-
"day_of_the_year",
8+
"week",
9+
"day_of_week",
10+
"day_of_month",
11+
"day_of_year",
1212
"weekend",
1313
"month_start",
1414
"month_end",
@@ -28,10 +28,10 @@
2828
"quarter": "_quarter",
2929
"semester": "_semester",
3030
"year": "_year",
31-
"week_of_the_year": "_woty",
32-
"day_of_the_week": "_dotw",
33-
"day_of_the_month": "_dotm",
34-
"day_of_the_year": "_doty",
31+
"week": "_week",
32+
"day_of_week": "_day_of_week",
33+
"day_of_month": "_day_of_month",
34+
"day_of_year": "_day_of_year",
3535
"weekend": "_weekend",
3636
"month_start": "_month_start",
3737
"month_end": "_month_end",
@@ -51,10 +51,10 @@
5151
"quarter": lambda x: x.dt.quarter,
5252
"semester": lambda x: np.where(x.dt.month <= 6, 1, 2).astype(np.int64),
5353
"year": lambda x: x.dt.year,
54-
"week_of_the_year": lambda x: x.dt.isocalendar().week.astype(np.int64),
55-
"day_of_the_week": lambda x: x.dt.dayofweek,
56-
"day_of_the_month": lambda x: x.dt.day,
57-
"day_of_the_year": lambda x: x.dt.dayofyear,
54+
"week": lambda x: x.dt.isocalendar().week.astype(np.int64),
55+
"day_of_week": lambda x: x.dt.dayofweek,
56+
"day_of_month": lambda x: x.dt.day,
57+
"day_of_year": lambda x: x.dt.dayofyear,
5858
"weekend": lambda x: np.where(x.dt.dayofweek <= 4, 0, 1).astype(np.int64),
5959
"month_start": lambda x: x.dt.is_month_start.astype(np.int64),
6060
"month_end": lambda x: x.dt.is_month_end.astype(np.int64),
@@ -72,8 +72,8 @@
7272
FEATURES_DEFAULT = [
7373
"month",
7474
"year",
75-
"day_of_the_week",
76-
"day_of_the_month",
75+
"day_of_week",
76+
"day_of_month",
7777
"hour",
7878
"minute",
7979
"second",

tests/test_datetime/conftest.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ def df_datetime_transformed(df_datetime):
1010
"datetime_range_quarter": [1, 1, 1, 1],
1111
"datetime_range_semester": [1, 1, 1, 1],
1212
"datetime_range_year": [2020, 2020, 2020, 2020],
13-
"datetime_range_woty": [9, 9, 9, 9],
14-
"datetime_range_dotw": [0, 1, 2, 3],
15-
"datetime_range_dotm": [24, 25, 26, 27],
16-
"datetime_range_doty": [55, 56, 57, 58],
13+
"datetime_range_week": [9, 9, 9, 9],
14+
"datetime_range_day_of_week": [0, 1, 2, 3],
15+
"datetime_range_day_of_month": [24, 25, 26, 27],
16+
"datetime_range_day_of_year": [55, 56, 57, 58],
1717
"datetime_range_weekend": [0, 0, 0, 0],
1818
"datetime_range_month_start": [0, 0, 0, 0],
1919
"datetime_range_month_end": [0, 0, 0, 0],
@@ -30,10 +30,10 @@ def df_datetime_transformed(df_datetime):
3030
"date_obj1_quarter": [1, 1, 2, 2],
3131
"date_obj1_semester": [1, 1, 1, 1],
3232
"date_obj1_year": [2010, 1945, 2100, 1999],
33-
"date_obj1_woty": [53, 8, 24, 20],
34-
"date_obj1_dotw": [4, 5, 0, 0],
35-
"date_obj1_dotm": [1, 24, 14, 17],
36-
"date_obj1_doty": [1, 55, 165, 137],
33+
"date_obj1_week": [53, 8, 24, 20],
34+
"date_obj1_day_of_week": [4, 5, 0, 0],
35+
"date_obj1_day_of_month": [1, 24, 14, 17],
36+
"date_obj1_day_of_year": [1, 55, 165, 137],
3737
"date_obj1_weekend": [0, 1, 0, 0],
3838
"date_obj1_month_start": [1, 0, 0, 0],
3939
"date_obj1_month_end": [0, 0, 0, 0],
@@ -50,10 +50,10 @@ def df_datetime_transformed(df_datetime):
5050
"date_obj2_quarter": [4, 4, 2, 1],
5151
"date_obj2_semester": [2, 2, 1, 1],
5252
"date_obj2_year": [2012, 2009, 1995, 2004],
53-
"date_obj2_woty": [41, 53, 26, 12],
54-
"date_obj2_dotw": [3, 3, 4, 2],
55-
"date_obj2_dotm": [11, 31, 30, 17],
56-
"date_obj2_doty": [285, 365, 181, 77],
53+
"date_obj2_week": [41, 53, 26, 12],
54+
"date_obj2_day_of_week": [3, 3, 4, 2],
55+
"date_obj2_day_of_month": [11, 31, 30, 17],
56+
"date_obj2_day_of_year": [285, 365, 181, 77],
5757
"date_obj2_weekend": [0, 0, 0, 0],
5858
"date_obj2_month_start": [0, 0, 0, 0],
5959
"date_obj2_month_end": [0, 1, 1, 0],
@@ -70,10 +70,10 @@ def df_datetime_transformed(df_datetime):
7070
"time_obj_quarter": [today.quarter] * 4,
7171
"time_obj_semester": [1 if today.month <= 6 else 2] * 4,
7272
"time_obj_year": [today.year] * 4,
73-
"time_obj_woty": [today.week] * 4,
74-
"time_obj_dotw": [today.dayofweek] * 4,
75-
"time_obj_dotm": [today.day] * 4,
76-
"time_obj_doty": [today.dayofyear] * 4,
73+
"time_obj_week": [today.week] * 4,
74+
"time_obj_day_of_week": [today.dayofweek] * 4,
75+
"time_obj_day_of_month": [today.day] * 4,
76+
"time_obj_day_of_year": [today.dayofyear] * 4,
7777
"time_obj_weekend": [1 if today.dayofweek > 4 else 0] * 4,
7878
"time_obj_month_start": [int(today.is_month_start)] * 4,
7979
"time_obj_month_end": [int(today.is_month_end)] * 4,

tests/test_datetime/test_datetime_features.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,25 +226,25 @@ def test_extract_all_datetime_features(df_datetime, df_datetime_transformed):
226226

227227
def test_extract_specified_datetime_features(df_datetime, df_datetime_transformed):
228228
X = DatetimeFeatures(
229-
features_to_extract=["semester", "week_of_the_year"]
229+
features_to_extract=["semester", "week"]
230230
).fit_transform(df_datetime)
231231
pd.testing.assert_frame_equal(
232232
X,
233233
df_datetime_transformed[
234234
vars_non_dt
235-
+ [var + "_" + feat for var in vars_dt for feat in ["semester", "woty"]]
235+
+ [var + "_" + feat for var in vars_dt for feat in ["semester", "week"]]
236236
],
237237
)
238238

239239
# different order than they appear in the glossary
240-
X = DatetimeFeatures(features_to_extract=["hour", "day_of_the_week"]).fit_transform(
240+
X = DatetimeFeatures(features_to_extract=["hour", "day_of_week"]).fit_transform(
241241
df_datetime
242242
)
243243
pd.testing.assert_frame_equal(
244244
X,
245245
df_datetime_transformed[
246246
vars_non_dt
247-
+ [var + "_" + feat for var in vars_dt for feat in ["hour", "dotw"]]
247+
+ [var + "_" + feat for var in vars_dt for feat in ["hour", "day_of_week"]]
248248
],
249249
)
250250

@@ -343,7 +343,7 @@ def test_extract_features_without_dropping_original_variables(
343343
):
344344
X = DatetimeFeatures(
345345
variables=["datetime_range", "date_obj2"],
346-
features_to_extract=["week_of_the_year", "quarter"],
346+
features_to_extract=["week", "quarter"],
347347
drop_original=False,
348348
).fit_transform(df_datetime)
349349

@@ -357,7 +357,7 @@ def test_extract_features_without_dropping_original_variables(
357357
for feat in [
358358
var + "_" + feat
359359
for var in ["datetime_range", "date_obj2"]
360-
for feat in ["woty", "quarter"]
360+
for feat in ["week", "quarter"]
361361
]
362362
],
363363
axis=1,
@@ -377,11 +377,11 @@ def test_extract_features_from_variables_containing_nans():
377377

378378
def test_extract_features_with_different_datetime_parsing_options(df_datetime):
379379
X = DatetimeFeatures(
380-
features_to_extract=["day_of_the_month"], dayfirst=True
380+
features_to_extract=["day_of_month"], dayfirst=True
381381
).fit_transform(df_datetime[["date_obj2"]])
382382
pd.testing.assert_frame_equal(
383383
X,
384-
pd.DataFrame({"date_obj2_dotm": [10, 31, 30, 17]}),
384+
pd.DataFrame({"date_obj2_day_of_month": [10, 31, 30, 17]}),
385385
)
386386

387387
X = DatetimeFeatures(features_to_extract=["year"], yearfirst=True).fit_transform(

0 commit comments

Comments
 (0)