NOTICE

The upcoming release of Featuretools 1.0.0 contains several breaking changes. Users are encouraged to test this version prior to release by installing from GitHub:

pip install https://github.com/alteryx/featuretools/archive/woodwork-integration.zip

For details on migrating to the new version, refer to Transitioning to Featuretools Version 1.0. Please report any issues in the Featuretools GitHub repo or by messaging in Alteryx Open Source Slack.


Release Notes

v0.27.1 Sep 2, 2021

  • Documentation Changes
    • Add banner to docs about upcoming Featuretools 1.0 release (GH#1669)

Thanks to the following people for contributing to this release: @thehomebrewnerd

v0.27.0 Aug 31, 2021

  • Changes
    • Remove autonormalize, tsfresh, nlp_primitives, sklearn_transformer, caegorical_encoding as an add-on libraries (will be added back later) (GH#1644)

    • Emit a warning message when a featuretools_primitives entrypoint throws an exception (GH#1662)

    • Throw a RuntimeError when two primitives with the same name are encountered during featuretools_primitives entrypoint handling (GH#1662)

    • Prevent the featuretools_primitives entrypoint loader from loading non-class objects as well as the AggregationPrimitive and TransformPrimitive base classes (GH#1662)

  • Testing Changes
    • Update latest dependency checker with proper install command (GH#1652)

    • Update isort dependency (GH#1654)

Thanks to the following people for contributing to this release: @davesque, @gsheni, @jeff-hernandez, @rwedge

v0.26.2 Aug 17, 2021

  • Documentation Changes
    • Specify conda channel and Windows exe in graphviz installation instructions (GH#1611)

    • Remove GA token from the layout html (GH#1622)

  • Testing Changes

Thanks to the following people for contributing to this release: @gsheni, @simha104

v0.26.1 Jul 23, 2021

  • Fixes
    • Set name attribute for EmailAddressToDomain primitive (GH#1543)

  • Documentation Changes
    • Remove and ignore unnecessary graph files (GH#1544)

Thanks to the following people for contributing to this release: @davesque, @rwedge

v0.26.0 Jul 15, 2021

  • Enhancements
    • Add replace_inf_values utility function for replacing inf values in a feature matrix (GH#1505)

    • Add URLToProtocol, URLToDomain, URLToTLD, EmailAddressToDomain, IsFreeEmailDomain as transform primitives (GH#1508, GH#1531)

  • Fixes
    • include_entities correctly overrides exclude_entities in primitive_options (GH#1518)

  • Documentation Changes
    • Prevent logging on build (GH#1498)

  • Testing Changes
    • Test featuretools on pandas 1.3.0 release candidate and make fixes (GH#1492)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @rwedge, @tamargrey, @thehomebrewnerd, @tuethan1999

v0.25.0 Jun 11, 2021

  • Enhancements
    • Add get_valid_primitives function (GH#1462)

    • Add EntitySet.dataframe_type attribute (GH#1473)

  • Changes
    • Upgrade minimum alteryx open source update checker to 2.0.0 (GH#1460)

  • Testing Changes
    • Upgrade minimum pip requirement for testing to 21.1.2 (GH#1475)

Thanks to the following people for contributing to this release: @gsheni, @rwedge

v0.24.1 May 26, 2021

  • Fixes
    • Update minimum pyyaml requirement to 5.4 (GH#1433)

    • Update minimum psutil requirement to 5.6.6 (GH#1438)

  • Documentation Changes
    • Update nbsphinx version to fix docs build issue (GH#1436)

  • Testing Changes
    • Create separate worksflows for each CI job (GH#1422)

    • Add minimum dependency checker to generate minimum requirement files (GH#1428)

    • Add unit tests against minimum dependencies for python 3.7 on PRs and main (GH#1432, GH#1445)

    • Update minimum urllib3 requirement to 1.26.5 (GH#1457)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @thehomebrewnerd

v0.24.0 Apr 30, 2021

  • Changes
    • Add auto assign bot on GitHub (GH#1380)

    • Reduce DFS max_depth to 1 if single entity in entityset (GH#1412)

    • Drop Python 3.6 support (GH#1413)

  • Documentation Changes
    • Improve formatting of release notes (GH#1396)

  • Testing Changes
    • Update Dask/Koalas test fixtures (GH#1382)

    • Update Spark config in test fixtures and docs (GH#1387, GH#1389)

    • Don’t cancel other CI jobs if one fails (GH#1386)

    • Update boto3 and urllib3 version requirements (GH#1394)

    • Update token for dependency checker PR creation (GH#1402, GH#1407, GH#1409)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @thehomebrewnerd

v0.23.3 Mar 31, 2021

Warning

The next non-bugfix release of Featuretools will not support Python 3.6

  • Changes
    • Minor updates to work with Koalas version 1.7.0 (GH#1351)

    • Explicitly mention Python 3.8 support in setup.py classifiers (GH#1371)

    • Fix issue with smart-open version 5.0.0 (GH#1372, GH#1376)

  • Testing Changes
    • Make release notes updated check separate from unit tests (GH#1347)

    • Performance tests now specify which commit to check (GH#1354)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @thehomebrewnerd

v0.23.2 Feb 26, 2021

Warning

The next non-bugfix release of Featuretools will not support Python 3.6

  • Enhancements
    • The list_primitives function returns valid input types and the return type (GH#1341)

  • Fixes
    • Restrict numpy version when installing koalas (GH#1329)

  • Changes
    • Warn python 3.6 users support will be dropped in future release (GH#1344)

  • Documentation Changes
    • Update docs for defining custom primitives (GH#1332)

    • Update featuretools release instructions (GH#1345)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge

v0.23.1 Jan 29, 2021

  • Fixes
    • Calculate direct features uses default value if parent missing (GH#1312)

    • Fix bug and improve tests for EntitySet.__eq__ and Entity.__eq__ (GH#1323)

  • Documentation Changes
    • Update Twitter link to documentation toolbar (GH#1322)

  • Testing Changes

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @seriallazer, @thehomebrewnerd

v0.23.0 Dec 31, 2020

  • Fixes
    • Fix logic for inferring variable type from unusual dtype (GH#1273)

    • Allow passing entities without relationships to calculate_feature_matrix (GH#1290)

  • Changes
    • Move query_by_values method from Entity to EntitySet (GH#1251)

    • Move _handle_time method from Entity to EntitySet (GH#1276)

    • Remove usage of ravel to resolve unexpected warning with pandas 1.2.0 (GH#1286)

  • Documentation Changes
    • Fix installation command for Add-ons (GH#1279)

    • Fix various broken links in documentation (GH#1313)

  • Testing Changes
    • Use repository-scoped token for dependency check (GH#1245:, GH#1248)

    • Fix install error during docs CI test (GH#1250)

Thanks to the following people for contributing to this release: @gsheni, @jeff-hernandez, @rwedge, @thehomebrewnerd

Breaking Changes

  • Entity.query_by_values has been removed and replaced by EntitySet.query_by_values with an added entity_id parameter to specify which entity in the entityset should be used for the query.

v0.22.0 Nov 30, 2020

  • Enhancements
    • Allow variable descriptions to be set directly on variable (GH#1207)

    • Add ability to add feature description captions to feature lineage graphs (GH#1212)

    • Add support for local tar file in read_entityset (GH#1228)

  • Fixes
  • Documentation Changes
    • Removed link to unused feedback board (GH#1220)

    • Update footer with Alteryx Innovation Labs (GH#1221)

    • Update links to repo in documentation to use alteryx org url (GH#1224)

  • Testing Changes
    • Update release notes check to use new repo url (GH#1222)

    • Use new version of pull request Github Action (GH#1234)

    • Upgrade pip during featuretools[complete] test (GH#1236)

    • Migrated CI tests to github actions (GH#1226, GH#1237, GH#1239)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @kmax12, @rwedge, @thehomebrewnerd

v0.21.0 Oct 30, 2020

  • Enhancements
    • Add describe_feature to generate an English language feature description for a given feature (GH#1201)

  • Fixes
    • Update EntitySet.add_last_time_indexes to work with Koalas 1.3.0 (GH#1192, GH#1202)

  • Changes
    • Keep koalas requirements in separate file (GH#1195)

  • Documentation Changes
    • Added footer to the documentation (GH#1189)

    • Add guide for feature selection functions (GH#1184)

    • Fix README.md badge with correct link (GH#1200)

  • Testing Changes
    • Add pyspark and koalas to automated dependency checks (GH#1191)

    • Add DockerHub credentials to CI testing environment (GH#1204)

    • Update premium primitives job name on CI (GH#1205)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @rwedge, @tamargrey, @thehomebrewnerd

v0.20.0 Sep 30, 2020

Warning

The Text variable type has been deprecated and been replaced with the NaturalLanguage variable type. The Text variable type will be removed in a future release.

  • Fixes
    • Allow FeatureOutputSlice features to be serialized (GH#1150)

    • Fix duplicate label column generation when labels are passed in cutoff times and approximate is being used (GH#1160)

    • Determine calculate_feature_matrix behavior with approximate and a cutoff df that is a subclass of a pandas DataFrame (GH#1166)

  • Changes
    • Text variable type has been replaced with NaturalLanguage (GH#1159)

  • Documentation Changes
    • Update release doc for clarity and to add Future Release template (GH#1151)

    • Use the PyData Sphinx theme (GH#1169)

  • Testing Changes
    • Stop requiring single-threaded dask scheduler in tests (GH#1163, GH#1170)

Thanks to the following people for contributing to this release: @gsheni, @rwedge, @tamargrey, @tuethan1999

v0.19.0 Sep 8, 2020

  • Enhancements
    • Support use of Koalas DataFrames in entitysets (GH#1031)

    • Add feature selection functions for null, correlated, and single value features (GH#1126)

  • Fixes
    • Fix encode_features converting excluded feature columns to a numeric dtype (GH#1123)

    • Improve performance of unused primitive check in dfs (GH#1140)

  • Changes
    • Remove the ability to stack transform primitives (GH#1119, GH#1145)

    • Sort primitives passed to dfs to get consistent ordering of features* (GH#1119)

  • Documentation Changes
    • Added return values to dfs and calculate_feature_matrix (GH#1125)

  • Testing Changes
    • Better test case for normalizing from no time index to time index (GH#1113)

* When passing multiple instances of a primitive built with make_trans_primitive or maxe_agg_primitive, those instances must have the same relative order when passed to dfs to ensure a consistent ordering of features.

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @rwedge, @tamargrey, @thehomebrewnerd, @tuethan1999

Breaking Changes

  • ft.dfs will no longer build features from Transform primitives where one of the inputs is a Transform feature, a GroupByTransform feature, or a Direct Feature of a Transform / GroupByTransform feature. This will make some features that would previously be generated by ft.dfs only possible if explicitly specified in seed_features.

v0.18.1 Aug 12, 2020

  • Fixes
    • Fix EntitySet.plot() when given a dask entityset (GH#1086)

  • Changes
    • Use nlp-primitives[complete] install for nlp_primitives extra in setup.py (GH#1103)

  • Documentation Changes
    • Fix broken downloads badge in README.md (GH#1107)

  • Testing Changes
    • Use CircleCI matrix jobs in config to trigger multiple runs of same job with different parameters (GH#1105)

Thanks to the following people for contributing to this release: @gsheni, @systemshift, @thehomebrewnerd

v0.18.0 Jul 31, 2020

  • Enhancements
    • Warn user if supplied primitives are not used during dfs (GH#1073)

  • Fixes
    • Use more consistent and uniform warnings (GH#1040)

    • Fix issue with missing instance ids and categorical entity index (GH#1050)

    • Remove warnings.simplefilter in feature_set_calculator to un-silence warnings (GH#1053)

    • Fix feature visualization for features with ‘>’ or ‘<’ in name (GH#1055)

    • Fix boolean dtype mismatch between encode_features and dfs and calculate_feature_matrix (GH#1082)

    • Update primitive options to check reversed inputs if primitive is commutative (GH#1085)

    • Fix inconsistent ordering of features between kernel restarts (GH#1088)

  • Changes
    • Make DFS match TimeSince primitive with all Datetime types (GH#1048)

    • Change default branch to main (GH#1038)

    • Raise TypeError if improper input is supplied to Entity.delete_variables() (GH#1064)

    • Updates for compatibility with pandas 1.1.0 (GH#1079, GH#1089)

    • Set pandas version to pandas>=0.24.1,<2.0.0. Filter pandas deprecation warning in Week primitive. (GH#1094)

  • Documentation Changes
    • Remove benchmarks folder (GH#1049)

    • Add custom variables types section to variables page (GH#1066)

  • Testing Changes
    • Add fixture for ft.demo.load_mock_customer (GH#1036)

    • Refactor Dask test units (GH#1052)

    • Implement automated process for checking critical dependencies (GH#1045, GH#1054, GH#1081)

    • Don’t run changelog check for release PRs or automated dependency PRs (GH#1057)

    • Fix non-deterministic behavior in Dask test causing codecov issues (GH#1070)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @monti-python, @rwedge, @systemshift, @tamargrey, @thehomebrewnerd, @wsankey

v0.17.0 Jun 30, 2020

  • Enhancements
    • Add list_variable_types and graph_variable_types for Variable Types (GH#1013)

    • Add graph_feature to generate a feature lineage graph for a given feature (GH#1032)

  • Fixes
    • Improve warnings when using a Dask dataframe for cutoff times (GH#1026)

    • Error if attempting to add entityset relationship where child variable is also child index (GH#1034)

  • Changes
    • Remove Feature.get_names (GH#1021)

    • Remove unnecessary pd.Series and pd.DatetimeIndex calls from primitives (GH#1020, GH#1024)

    • Improve cutoff time handling when a single value or no value is passed (GH#1028)

    • Moved find_variable_types to Variable utils (GH#1013)

  • Documentation Changes
    • Add page on Variable Types to describe some Variable Types, and util functions (GH#1013)

    • Remove featuretools enterprise from documentation (GH#1022)

    • Add development install instructions to contributing.md (GH#1030)

  • Testing Changes
    • Add required flag to CircleCI codecov upload command (GH#1035)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @kmax12, @rwedge, @thehomebrewnerd, @tuethan1999

Breaking Changes

  • Removed Feature.get_names, Feature.get_feature_names should be used instead

v0.16.0 Jun 5, 2020

  • Enhancements
    • Support use of Dask DataFrames in entitysets (GH#783)

    • Add make_index when initializing an EntitySet by passing in an entities dictionary (GH#1010)

    • Add ability to use primitive classes and instances as keys in primitive_options dictionary (GH#993)

  • Fixes
    • Cleanly close tqdm instance (GH#1018)

    • Resolve issue with NaN values in LatLong columns (GH#1007)

  • Testing Changes
    • Update tests for numpy v1.19.0 compatability (GH#1016)

Thanks to the following people for contributing to this release: @Alex-Monahan, @frances-h, @gsheni, @rwedge, @thehomebrewnerd

v0.15.0 May 29, 2020

  • Enhancements
    • Add get_default_aggregation_primitives and get_default_transform_primitives (GH#945)

    • Allow cutoff time dataframe columns to be in any order (GH#969, GH#995)

    • Add Age primitive, and make it a default transform primitive for DFS (GH#987)

    • Add include_cutoff_time arg - control whether data at cutoff times are included in feature calculations (GH#959)

    • Allow variables_types to be referenced by their type_string for the entity_from_dataframe function (GH#988)

  • Fixes
    • Fix errors with Equals and NotEquals primitives when comparing categoricals or different dtypes (GH#968)

    • Normalized type_strings of Variable classes so that the find_variable_types function produces a dictionary with a clear key to name transition (GH#982, GH#996)

    • Remove pandas.datetime in test_calculate_feature_matrix due to deprecation (GH#998)

  • Documentation Changes
    • Add python 3.8 support for docs (GH#983)

    • Adds consistent Entityset Docstrings (GH#986)

  • Testing Changes
    • Add automated tests for python 3.8 environment (GH#847)

    • Update testing dependencies (GH#976)

Thanks to the following people for contributing to this release: @ctduffy, @frances-h, @gsheni, @jeff-hernandez, @rightx2, @rwedge, @sebrahimi1988, @thehomebrewnerd, @tuethan1999

Breaking Changes

  • Calls to featuretools.dfs or featuretools.calculate_feature_matrix that use a cutoff time dataframe, but do not label the time column with either the target entity time index variable name or as time, will now result in an AttributeError. Previously, the time column was selected to be the first column that was not the instance id column. With this update, the position of the column in the dataframe is no longer used to determine the time column. Now, both instance id columns and time columns in a cutoff time dataframe can be in any order as long as they are named properly.

  • The type_string attributes of all Variable subclasses are now a snake case conversion of their class names. This changes the type_string of the Unknown, IPAddress, EmailAddress, SubRegionCode, FilePath, LatLong, and ZIPcode classes. Old saved entitysets that used these variables may load incorrectly.

v0.14.0 Apr 30, 2020

  • Enhancements
    • ft.encode_features - use less memory for one-hot encoded columns (GH#876)

  • Fixes
    • Use logger.warning to fix deprecated logger.warn (GH#871)

    • Add dtype to interesting_values to fix deprecated empty Series with no dtype (GH#933)

    • Remove overlap in training windows (GH#930)

    • Fix progress bar in notebook (GH#932)

  • Changes
    • Change premium primitives CI test to Python 3.6 (GH#916)

    • Remove Python 3.5 support (GH#917)

  • Documentation Changes
    • Fix README links to docs (GH#872)

    • Fix Github links with correct organizations (GH#908)

    • Fix hyperlinks in docs and docstrings with updated address (GH#910)

    • Remove unused script for uploading docs to AWS (GH#911)

Thanks to the following people for contributing to this release: @frances-h, @gsheni, @jeff-hernandez, @rwedge

Breaking Changes

  • Using training windows in feature calculations can result in different values than previous versions. This was done to prevent consecutive training windows from overlapping by excluding data at the oldest point in time. For example, if we use a cutoff time at the first minute of the hour with a one hour training window, the first minute of the previous hour will no longer be included in the feature calculation.

v0.13.4 Mar 27, 2020

Warning

The next non-bugfix release of Featuretools will not support Python 3.5

  • Fixes
    • Fix ft.show_info() not displaying in Jupyter notebooks (GH#863)

  • Changes
  • Documentation Changes
    • Add links to primitives.featurelabs.com (GH#860)

    • Add source code links to API reference (GH#862)

    • Update links for testing Dask/Spark integrations (GH#867)

    • Update release documentation for featuretools (GH#868)

  • Testing Changes
    • Miscellaneous changes (GH#861)

Thanks to the following people for contributing to this release: @frances-h, @FreshLeaf8865, @jeff-hernandez, @rwedge, @thehomebrewnerd

v0.13.3 Feb 28, 2020

  • Fixes
    • Fix a connection closed error when using n_jobs (GH#853)

  • Changes
    • Pin msgpack dependency for Python 3.5; remove dataframe from Dask dependency (GH#851)

  • Documentation Changes
    • Update link to help documentation page in Github issue template (GH#855)

Thanks to the following people for contributing to this release: @frances-h, @rwedge

v0.13.2 Jan 31, 2020

  • Enhancements
    • Support for Pandas 1.0.0 (GH#844)

  • Changes
    • Remove dependency on s3fs library for anonymous downloads from S3 (GH#825)

  • Testing Changes
    • Added GitHub Action to automatically run performance tests (GH#840)

Thanks to the following people for contributing to this release: @frances-h, @rwedge

v0.13.1 Dec 28, 2019

  • Fixes
    • Raise error when given wrong input for ignore_variables (GH#826)

    • Fix multi-output features not created when there is no child data (GH#834)

    • Removing type casting in Equals and NotEquals primitives (GH#504)

  • Changes
    • Replace pd.timedelta time units that were deprecated (GH#822)

    • Move sklearn wrapper to separate library (GH#835, GH#837)

  • Testing Changes
    • Run unit tests in windows environment (GH#790)

    • Update boto3 version requirement for tests (GH#838)

Thanks to the following people for contributing to this release: @jeffzi, @kmax12, @rwedge, @systemshift

v0.13.0 Nov 30, 2019

  • Enhancements
    • Added GitHub Action to auto upload releases to PyPI (GH#816)

  • Fixes
    • Fix issue where some primitive options would not be applied (GH#807)

    • Fix issue with converting to pickle or parquet after adding interesting features (GH#798, GH#823)

    • Diff primitive now calculates using all available data (GH#824)

    • Prevent DFS from creating Identity Features of globally ignored variables (GH#819)

  • Changes
    • Remove python 2.7 support from serialize.py (GH#812)

    • Make smart_open, boto3, and s3fs optional dependencies (GH#827)

  • Documentation Changes
    • remove python 2.7 support and add 3.7 in install.rst (GH#805)

    • Fix import error in docs (GH#803)

    • Fix release title formatting in changelog (GH#806)

  • Testing Changes
    • Use multiple CPUS to run tests on CI (GH#811)

    • Refactor test entityset creation to avoid saving to disk (GH#813, GH#821)

    • Remove get_values() from test_es.py to remove warnings (GH#820)

Thanks to the following people for contributing to this release: @frances-h, @jeff-hernandez, @rwedge, @systemshift

Breaking Changes

  • The libraries used for downloading or uploading from S3 or URLs are now optional and will no longer be installed by default. To use this functionality they will need to be installed separately.

  • The fix to how the Diff primitive is calculated may slow down the overall calculation time of feature lists that use this primitive.

v0.12.0 Oct 31, 2019

  • Enhancements
    • Added First primitive (GH#770)

    • Added Entropy aggregation primitive (GH#779)

    • Allow custom naming for multi-output primitives (GH#780)

  • Fixes
    • Prevents user from removing base entity time index using additional_variables (GH#768)

    • Fixes error when a multioutput primitive was supplied to dfs as a groupby trans primitive (GH#786)

  • Changes
    • Drop Python 2 support (GH#759)

    • Add unit parameter to AvgTimeBetween (GH#771)

    • Require Pandas 0.24.1 or higher (GH#787)

  • Documentation Changes
    • Update featuretools slack link (GH#765)

    • Set up repo to use Read the Docs (GH#776)

    • Add First primitive to API reference docs (GH#782)

  • Testing Changes
    • CircleCI fixes (GH#774)

    • Disable PIP progress bars (GH#775)

Thanks to the following people for contributing to this release: @ablacke-ayx, @BoopBoopBeepBoop, @jeffzi, @kmax12, @rwedge, @thehomebrewnerd, @twdobson

v0.11.0 Sep 30, 2019

Warning

The next non-bugfix release of Featuretools will not support Python 2

  • Enhancements
    • Improve how files are copied and written (GH#721)

    • Add number of rows to graph in entityset.plot (GH#727)

    • Added support for pandas DateOffsets in DFS and Timedelta (GH#732)

    • Enable feature-specific top_n value using a dictionary in encode_features (GH#735)

    • Added progress_callback parameter to dfs() and calculate_feature_matrix() (GH#739, GH#745)

    • Enable specifying primitives on a per column or per entity basis (GH#748)

  • Fixes
    • Fixed entity set deserialization (GH#720)

    • Added error message when DateTimeIndex is a variable but not set as the time_index (GH#723)

    • Fixed CumCount and other group-by transform primitives that take ID as input (GH#733, GH#754)

    • Fix progress bar undercounting (GH#743)

    • Updated training_window error assertion to only check against observations (GH#728)

    • Don’t delete the whole destination folder while saving entityset (GH#717)

  • Changes
    • Raise warning and not error on schema version mismatch (GH#718)

    • Change feature calculation to return in order of instance ids provided (GH#676)

    • Removed time remaining from displayed progress bar in dfs() and calculate_feature_matrix() (GH#739)

    • Raise warning in normalize_entity() when time_index of base_entity has an invalid type (GH#749)

    • Remove toolz as a direct dependency (GH#755)

    • Allow boolean variable types to be used in the Multiply primitive (GH#756)

  • Documentation Changes
    • Updated URL for Compose (GH#716)

  • Testing Changes

Thanks to the following people for contributing to this release: @angela97lin, @chidauri, @christopherbunn, @frances-h, @jeff-hernandez, @kmax12, @MarcoGorelli, @rwedge, @thehomebrewnerd

Breaking Changes

  • Feature calculations will return in the order of instance ids provided instead of the order of time points instances are calculated at.

v0.10.1 Aug 25, 2019

  • Fixes
    • Fix serialized LatLong data being loaded as strings (GH#712)

  • Documentation Changes
    • Fixed FAQ cell output (GH#710)

Thanks to the following people for contributing to this release: @gsheni, @rwedge

v0.10.0 Aug 19, 2019

Warning

The next non-bugfix release of Featuretools will not support Python 2

  • Enhancements
    • Give more frequent progress bar updates and update chunk size behavior (GH#631, GH#696)

    • Added drop_first as param in encode_features (GH#647)

    • Added support for stacking multi-output primitives (GH#679)

    • Generate transform features of direct features (GH#623)

    • Added serializing and deserializing from S3 and deserializing from URLs (GH#685)

    • Added nlp_primitives as an add-on library (GH#704)

    • Added AutoNormalize to Featuretools plugins (GH#699)

    • Added functionality for relative units (month/year) in Timedelta (GH#692)

    • Added categorical-encoding as an add-on library (GH#700)

  • Fixes
    • Fix performance regression in DFS (GH#637)

    • Fix deserialization of feature relationship path (GH#665)

    • Set index after adding ancestor relationship variables (GH#668)

    • Fix user-supplied variable_types modification in Entity init (GH#675)

    • Don’t calculate dependencies of unnecessary features (GH#667)

    • Prevent normalize entity’s new entity having same index as base entity (GH#681)

    • Update variable type inference to better check for string values (GH#683)

  • Changes
    • Moved dask, distributed imports (GH#634)

  • Documentation Changes
  • Testing Changes

Thanks to the following people for contributing to this release: @alexjwang, @allisonportis, @ayushpatidar, @CJStadler, @ctduffy, @gsheni, @jeff-hernandez, @jeremyliweishih, @kmax12, @rwedge, @zhxt95,

v0.9.1 Jul 3, 2019

  • Enhancements
    • Speedup groupby transform calculations (GH#609)

    • Generate features along all paths when there are multiple paths between entities (GH#600, GH#608)

  • Fixes
    • Select columns of dataframe using a list (GH#615)

    • Change type of features calculated on Index features to Categorical (GH#602)

    • Filter dataframes through forward relationships (GH#625)

    • Specify Dask version in requirements for python 2 (GH#627)

    • Keep dataframe sorted by time during feature calculation (GH#626)

    • Fix bug in encode_features that created duplicate columns of features with multiple outputs (GH#622)

  • Changes
    • Remove unused variance_selection.py file (GH#613)

    • Remove Timedelta data param (GH#619)

    • Remove DaysSince primitive (GH#628)

  • Documentation Changes
    • Add installation instructions for add-on libraries (GH#617)

    • Clarification of Multi Output Feature Creation (GH#638)

    • Miscellaneous changes (GH#632, GH#639)

  • Testing Changes

Thanks to the following people for contributing to this release: @CJStadler, @kmax12, @rwedge, @gsheni, @kkleidal, @ctduffy

v0.9.0 Jun 19, 2019

  • Enhancements
    • Add unit parameter to timesince primitives (GH#558)

    • Add ability to install optional add on libraries (GH#551)

    • Load and save features from open files and strings (GH#566)

    • Support custom variable types (GH#571)

    • Support entitysets which have multiple paths between two entities (GH#572, GH#544)

    • Added show_info function, more output information added to CLI featuretools info (GH#525)

  • Fixes
    • Normalize_entity specifies error when ‘make_time_index’ is an invalid string (GH#550)

    • Schema version added for entityset serialization (GH#586)

    • Renamed features have names correctly serialized (GH#585)

    • Improved error message for index/time_index being the same column in normalize_entity and entity_from_dataframe (GH#583)

    • Removed all mentions of allow_where (GH#587, GH#588)

    • Removed unused variable in normalize entity (GH#589)

    • Change time since return type to numeric (GH#606)

  • Changes
    • Refactor get_pandas_data_slice to take single entity (GH#547)

    • Updates TimeSincePrevious and Diff Primitives (GH#561)

    • Remove unecessary time_last variable (GH#546)

  • Documentation Changes
  • Testing Changes

Thanks to the following people for contributing to this release: @alexjwang, @allisonportis, @CJStadler, @ctduffy, @gsheni, @kmax12, @rwedge

v0.8.0 May 17, 2019

  • Rename NUnique to NumUnique (GH#510)

  • Serialize features as JSON (GH#532)

  • Drop all variables at once in normalize_entity (GH#533)

  • Remove unnecessary sorting from normalize_entity (GH#535)

  • Features cache their names (GH#536)

  • Only calculate features for instances before cutoff (GH#523)

  • Remove all relative imports (GH#530)

  • Added FullName Variable Type (GH#506)

  • Add error message when target entity does not exist (GH#520)

  • New demo links (GH#542)

  • Remove duplicate features check in DFS (GH#538)

  • featuretools_primitives entry point expects list of primitive classes (GH#529)

  • Update ALL_VARIABLE_TYPES list (GH#526)

  • More Informative N Jobs Prints and Warnings (GH#511)

  • Update sklearn version requirements (GH#541)

  • Update Makefile (GH#519)

  • Remove unused parameter in Entity._handle_time (GH#524)

  • Remove build_ext code from setup.py (GH#513)

  • Documentation updates (GH#512, GH#514, GH#515, GH#521, GH#522, GH#527, GH#545)

  • Testing updates (GH#509, GH#516, GH#517, GH#539)

Thanks to the following people for contributing to this release: @bphi, @CharlesBradshaw, @CJStadler, @glentennis, @gsheni, @kmax12, @rwedge

Breaking Changes

  • NUnique has been renamed to NumUnique.

    Previous behavior

    from featuretools.primitives import NUnique
    

    New behavior

    from featuretools.primitives import NumUnique
    

v0.7.1 Apr 24, 2019

  • Automatically generate feature name for controllable primitives (GH#481)

  • Primitive docstring updates (GH#489, GH#492, GH#494, GH#495)

  • Change primitive functions that returned strings to return functions (GH#499)

  • CLI customizable via entrypoints (GH#493)

  • Improve calculation of aggregation features on grandchildren (GH#479)

  • Refactor entrypoints to use decorator (GH#483)

  • Include doctests in testing suite (GH#491)

  • Documentation updates (GH#490)

  • Update how standard primitives are imported internally (GH#482)

Thanks to the following people for contributing to this release: @bukosabino, @CharlesBradshaw, @glentennis, @gsheni, @jeff-hernandez, @kmax12, @minkvsky, @rwedge, @thehomebrewnerd

v0.7.0 Mar 29, 2019

  • Improve Entity Set Serialization (GH#361)

  • Support calling a primitive instance’s function directly (GH#461, GH#468)

  • Support other libraries extending featuretools functionality via entrypoints (GH#452)

  • Remove featuretools install command (GH#475)

  • Add GroupByTransformFeature (GH#455, GH#472, GH#476)

  • Update Haversine Primitive (GH#435, GH#462)

  • Add commutative argument to SubtractNumeric and DivideNumeric primitives (GH#457)

  • Add FilePath variable_type (GH#470)

  • Add PhoneNumber, DateOfBirth, URL variable types (GH#447)

  • Generalize infer_variable_type, convert_variable_data and convert_all_variable_data methods (GH#423)

  • Documentation updates (GH#438, GH#446, GH#458, GH#469)

  • Testing updates (GH#440, GH#444, GH#445, GH#459)

Thanks to the following people for contributing to this release: @bukosabino, @CharlesBradshaw, @ColCarroll, @glentennis, @grayskripko, @gsheni, @jeff-hernandez, @jrkinley, @kmax12, @RogerTangos, @rwedge

Breaking Changes

  • ft.dfs now has a groupby_trans_primitives parameter that DFS uses to automatically construct features that group by an ID column and then apply a transform primitive to search group. This change applies to the following primitives: CumSum, CumCount, CumMean, CumMin, and CumMax.

    Previous behavior

    ft.dfs(entityset=es,
           target_entity='customers',
           trans_primitives=["cum_mean"])
    

    New behavior

    ft.dfs(entityset=es,
           target_entity='customers',
           groupby_trans_primitives=["cum_mean"])
    
  • Related to the above change, cumulative transform features are now defined using a new feature class, GroupByTransformFeature.

    Previous behavior

    ft.Feature([base_feature, groupby_feature], primitive=CumulativePrimitive)
    

    New behavior

    ft.Feature(base_feature, groupby=groupby_feature, primitive=CumulativePrimitive)
    

v0.6.1 Feb 15, 2019

  • Cumulative primitives (GH#410)

  • Entity.query_by_values now preserves row order of underlying data (GH#428)

  • Implementing Country Code and Sub Region Codes as variable types (GH#430)

  • Added IPAddress and EmailAddress variable types (GH#426)

  • Install data and dependencies (GH#403)

  • Add TimeSinceFirst, fix TimeSinceLast (GH#388)

  • Allow user to pass in desired feature return types (GH#372)

  • Add new configuration object (GH#401)

  • Replace NUnique get_function (GH#434)

  • _calculate_idenity_features now only returns the features asked for, instead of the entire entity (GH#429)

  • Primitive function name uniqueness (GH#424)

  • Update NumCharacters and NumWords primitives (GH#419)

  • Removed Variable.dtype (GH#416, GH#433)

  • Change to zipcode rep, str for pandas (GH#418)

  • Remove pandas version upper bound (GH#408)

  • Make S3 dependencies optional (GH#404)

  • Check that agg_primitives and trans_primitives are right primitive type (GH#397)

  • Mean primitive changes (GH#395)

  • Fix transform stacking on multi-output aggregation (GH#394)

  • Fix list_primitives (GH#391)

  • Handle graphviz dependency (GH#389, GH#396, GH#398)

  • Testing updates (GH#402, GH#417, GH#433)

  • Documentation updates (GH#400, GH#409, GH#415, GH#417, GH#420, GH#421, GH#422, GH#431)

Thanks to the following people for contributing to this release: @CharlesBradshaw, @csala, @floscha, @gsheni, @jxwolstenholme, @kmax12, @RogerTangos, @rwedge

v0.6.0 Jan 30, 2018

Thanks to the following people for contributing to this release: @floscha, @gsheni, @kmax12, @RogerTangos, @rwedge

v0.5.1 Dec 17, 2018

  • Add missing dependencies (GH#353)

  • Move comment to note in documentation (GH#352)

v0.5.0 Dec 17, 2018

  • Add specific error for duplicate additional/copy_variables in normalize_entity (GH#348)

  • Removed EntitySet._import_from_dataframe (GH#346)

  • Removed time_index_reduce parameter (GH#344)

  • Allow installation of additional primitives (GH#326)

  • Fix DatetimeIndex variable conversion (GH#342)

  • Update Sklearn DFS Transformer (GH#343)

  • Clean up entity creation logic (GH#336)

  • remove casting to list in transform feature calculation (GH#330)

  • Fix sklearn wrapper (GH#335)

  • Add readme to pypi

  • Update conda docs after move to conda-forge (GH#334)

  • Add wrapper for scikit-learn Pipelines (GH#323)

  • Remove parse_date_cols parameter from EntitySet._import_from_dataframe (GH#333)

Thanks to the following people for contributing to this release: @bukosabino, @georgewambold, @gsheni, @jeff-hernandez, @kmax12, and @rwedge.

v0.4.1 Nov 29, 2018

  • Resolve bug preventing using first column as index by default (GH#308)

  • Handle return type when creating features from Id variables (GH#318)

  • Make id an optional parameter of EntitySet constructor (GH#324)

  • Handle primitives with same function being applied to same column (GH#321)

  • Update requirements (GH#328)

  • Clean up DFS arguments (GH#319)

  • Clean up Pandas Backend (GH#302)

  • Update properties of cumulative transform primitives (GH#320)

  • Feature stability between versions documentation (GH#316)

  • Add download count to GitHub readme (GH#310)

  • Fixed #297 update tests to check error strings (GH#303)

  • Remove usage of fixtures in agg primitive tests (GH#325)

v0.4.0 Oct 31, 2018

  • Remove ft.utils.gen_utils.getsize and make pympler a test requirement (GH#299)

  • Update requirements.txt (GH#298)

  • Refactor EntitySet.find_path(…) (GH#295)

  • Clean up unused methods (GH#293)

  • Remove unused parents property of Entity (GH#283)

  • Removed relationships parameter (GH#284)

  • Improve time index validation (GH#285)

  • Encode features with “unknown” class in categorical (GH#287)

  • Allow where clauses on direct features in Deep Feature Synthesis (GH#279)

  • Change to fullargsspec (GH#288)

  • Parallel verbose fixes (GH#282)

  • Update tests for python 3.7 (GH#277)

  • Check duplicate rows cutoff times (GH#276)

  • Load retail demo data using compressed file (GH#271)

v0.3.1 Sep 28, 2018

  • Handling time rewrite (GH#245)

  • Update deep_feature_synthesis.py (GH#249)

  • Handling return type when creating features from DatetimeTimeIndex (GH#266)

  • Update retail.py (GH#259)

  • Improve Consistency of Transform Primitives (GH#236)

  • Update demo docstrings (GH#268)

  • Handle non-string column names (GH#255)

  • Clean up merging of aggregation primitives (GH#250)

  • Add tests for Entity methods (GH#262)

  • Handle no child data when calculating aggregation features with multiple arguments (GH#264)

  • Add is_string utils function (GH#260)

  • Update python versions to match docker container (GH#261)

  • Handle where clause when no child data (GH#258)

  • No longer cache demo csvs, remove config file (GH#257)

  • Avoid stacking “expanding” primitives (GH#238)

  • Use randomly generated names in retail csv (GH#233)

  • Update README.md (GH#243)

v0.3.0 Aug 27, 2018

  • Improve performance of all feature calculations (GH#224)

  • Update agg primitives to use more efficient functions (GH#215)

  • Optimize metadata calculation (GH#229)

  • More robust handling when no data at a cutoff time (GH#234)

  • Workaround categorical merge (GH#231)

  • Switch which CSV is associated with which variable (GH#228)

  • Remove unused kwargs from query_by_values, filter_and_sort (GH#225)

  • Remove convert_links_to_integers (GH#219)

  • Add conda install instructions (GH#223, GH#227)

  • Add example of using Dask to parallelize to docs (GH#221)

v0.2.2 Aug 20, 2018

  • Remove unnecessary check no related instances call and refactor (GH#209)

  • Improve memory usage through support for pandas categorical types (GH#196)

  • Bump minimum pandas version from 0.20.3 to 0.23.0 (GH#216)

  • Better parallel memory warnings (GH#208, GH#214)

  • Update demo datasets (GH#187, GH#201, GH#207)

  • Make primitive lookup case insensitive (GH#213)

  • Use capital name (GH#211)

  • Set class name for Min (GH#206)

  • Remove variable_types from normalize entity (GH#205)

  • Handle parquet serialization with last time index (GH#204)

  • Reset index of cutoff times in calculate feature matrix (GH#198)

  • Check argument types for .normalize_entity (GH#195)

  • Type checking ignore entities. (GH#193)

v0.2.1 Jul 2, 2018

  • Cpu count fix (GH#176)

  • Update flight (GH#175)

  • Move feature matrix calculation helper functions to separate file (GH#177)

v0.2.0 Jun 22, 2018

  • Multiprocessing (GH#170)

  • Handle unicode encoding in repr throughout Featuretools (GH#161)

  • Clean up EntitySet class (GH#145)

  • Add support for building and uploading conda package (GH#167)

  • Parquet serialization (GH#152)

  • Remove variable stats (GH#171)

  • Make sure index variable comes first (GH#168)

  • No last time index update on normalize (GH#169)

  • Remove list of times as on option for cutoff_time in calculate_feature_matrix (GH#165)

  • Config does error checking to see if it can write to disk (GH#162)

v0.1.21 May 30, 2018

v0.1.20 Apr 13, 2018

  • Primitives as strings in DFS parameters (GH#129)

  • Integer time index bugfixes (GH#128)

  • Add make_temporal_cutoffs utility function (GH#126)

  • Show all entities, switch shape display to row/col (GH#124)

  • Improved chunking when calculating feature matrices (GH#121)

  • fixed num characters nan fix (GH#118)

  • modify ignore_variables docstring (GH#117)

v0.1.19 Mar 21, 2018

  • More descriptive DFS progress bar (GH#69)

  • Convert text variable to string before NumWords (GH#106)

  • EntitySet.concat() reindexes relationships (GH#96)

  • Keep non-feature columns when encoding feature matrix (GH#111)

  • Uses full entity update for dependencies of uses_full_entity features (GH#110)

  • Update column names in retail demo (GH#104)

  • Handle Transform features that need access to all values of entity (GH#91)

v0.1.18 Feb 27, 2018

  • fixes related instances bug (GH#97)

  • Adding non-feature columns to calculated feature matrix (GH#78)

  • Relax numpy version req (GH#82)

  • Remove entity_from_csv, tests, and lint (GH#71)

v0.1.17 Jan 18, 2018

  • LatLong type (GH#57)

  • Last time index fixes (GH#70)

  • Make median agg primitives ignore nans by default (GH#61)

  • Remove Python 3.4 support (GH#64)

  • Change normalize_entity to update secondary_time_index (GH#59)

  • Unpin requirements (GH#53)

  • associative -> commutative (GH#56)

  • Add Words and Chars primitives (GH#51)

v0.1.16 Dec 19, 2017

  • fix EntitySet.combine_variables and standardize encode_features (GH#47)

  • Python 3 compatibility (GH#16)

v0.1.15 Dec 18, 2017

  • Fix variable type in demo data (GH#37)

  • Custom primitive kwarg fix (GH#38)

  • Changed order and text of arguments in make_trans_primitive docstring (GH#42)

v0.1.14 Nov 20, 2017

  • Last time index (GH#33)

  • Update Scipy version to 1.0.0 (GH#31)

v0.1.13 Nov 1, 2017

  • Add MANIFEST.in (GH#26)

v0.1.11 Oct 31, 2017

  • Package linting (GH#7)

  • Custom primitive creation functions (GH#13)

  • Split requirements to separate files and pin to latest versions (GH#15)

  • Select low information features (GH#18)

  • Fix docs typos (GH#19)

  • Fixed Diff primitive for rare nan case (GH#21)

  • added some mising doc strings (GH#23)

  • Trend fix (GH#22)

  • Remove as_dir=False option from EntitySet.to_pickle() (GH#20)

  • Entity Normalization Preserves Types of Copy & Additional Variables (GH#25)

v0.1.10 Oct 12, 2017

  • NumTrue primitive added and docstring of other primitives updated (GH#11)

  • fixed hash issue with same base features (GH#8)

  • Head fix (GH#9)

  • Fix training window (GH#10)

  • Add associative attribute to primitives (GH#3)

  • Add status badges, fix license in setup.py (GH#1)

  • fixed head printout and flight demo index (GH#2)

v0.1.9 Sep 8, 2017

  • Documentation improvements

  • New featuretools.demo.load_mock_customer function

v0.1.8 Sep 1, 2017

  • Bug fixes

  • Added Percentile transform primitive

v0.1.7 Aug 17, 2017

  • Performance improvements for approximate in calculate_feature_matrix and dfs

  • Added Week transform primitive

v0.1.6 Jul 26, 2017

  • Added load_features and save_features to persist and reload features

  • Added save_progress argument to calculate_feature_matrix

  • Added approximate parameter to calculate_feature_matrix and dfs

  • Added load_flight to ft.demo

v0.1.5 Jul 11, 2017

  • Windows support

v0.1.3 Jul 10, 2017

  • Renamed feature submodule to primitives

  • Renamed prediction_entity arguments to target_entity

  • Added training_window parameter to calculate_feature_matrix

v0.1.2 Jul 3rd, 2017

  • Initial release