Skip to main content

A package for converting time series data from e.g. electronic health records into wide format data.

Project description

Timeseriesflattener

github actions docs github actions pytest python versions Code style: black

PyPI version status

Time series from e.g. electronic health records often have a large number of variables, are sampled at irregular intervals and tend to have a large number of missing values. Before this type of data can be used for prediction modelling with machine learning methods such as logistic regression or XGBoost, the data needs to be reshaped.

In essence, the time series need to be flattened so that each prediction time is represented by a set of predictor values and an outcome value. These predictor values can be constructed by aggregating the preceding values in the time series within a certain time window.

timeseriesflattener aims to simplify this process by providing an easy-to-use and fully-specified pipeline for flattening complex time series.

🔧 Installation

To get started using timeseriesflattener simply install it using pip by running the following line in your terminal:

pip install timeseriesflattener

⚡ Quick start

import numpy as np
import pandas as pd

if __name__ == "__main__":

    # Load a dataframe with times you wish to make a prediction
    prediction_times_df = pd.DataFrame(
        {
            "id": [1, 1, 2],
            "date": ["2020-01-01", "2020-02-01", "2020-02-01"],
        },
    )
    # Load a dataframe with raw values you wish to aggregate as predictors
    predictor_df = pd.DataFrame(
        {
            "id": [1, 1, 1, 2],
            "date": [
                "2020-01-15",
                "2019-12-10",
                "2019-12-15",
                "2020-01-02",
            ],
            "value": [1, 2, 3, 4],
        },
    )
    # Load a dataframe specifying when the outcome occurs
    outcome_df = pd.DataFrame({"id": [1], "date": ["2020-03-01"], "value": [1]})

    # Specify how to aggregate the predictors and define the outcome
    from timeseriesflattener.feature_specs.single_specs import OutcomeSpec, PredictorSpec
    from timeseriesflattener.aggregation_fns import maximum, mean

    predictor_spec = PredictorSpec(
        timeseries_df=predictor_df,
        lookbehind_days=30,
        fallback=np.nan,
        aggregation_fn=mean,
        feature_base_name="test_feature",
    )
    outcome_spec = OutcomeSpec(
        timeseries_df=outcome_df,
        lookahead_days=31,
        fallback=0,
        aggregation_fn=maximum,
        feature_base_name="test_outcome",
        incident=False,
    )

    # Instantiate TimeseriesFlattener and add the specifications
    from timeseriesflattener import TimeseriesFlattener

    ts_flattener = TimeseriesFlattener(
        prediction_times_df=prediction_times_df,
        entity_id_col_name="id",
        timestamp_col_name="date",
        n_workers=1,
        drop_pred_times_with_insufficient_look_distance=False,
    )
    ts_flattener.add_spec([predictor_spec, outcome_spec])
    df = ts_flattener.get_df()
    df

Output:

id date prediction_time_uuid pred_test_feature_within_30_days_mean_fallback_nan outc_test_outcome_within_31_days_maximum_fallback_0_dichotomous
0 1 2020-01-01 00:00:00 1-2020-01-01-00-00-00 2.5 0
1 1 2020-02-01 00:00:00 1-2020-02-01-00-00-00 1 1
2 2 2020-02-01 00:00:00 2-2020-02-01-00-00-00 4 0

📖 Documentation

Documentation
🎓 Tutorial Simple and advanced tutorials to get you started using timeseriesflattener
🎛 General docs The detailed reference for timeseriesflattener's API.
🙋 FAQ Frequently asked question
🗺️ Roadmap Kanban board for the roadmap for the project

💬 Where to ask questions

Type
🚨 Bug Reports GitHub Issue Tracker
🎁 Feature Requests & Ideas GitHub Issue Tracker
👩‍💻 Usage Questions GitHub Discussions
🗯 General Discussion GitHub Discussions

🎓 Projects

PSYCOP projects which use timeseriesflattener. Note that some of these projects have yet to be published and are thus private.

Project Publications
Type 2 Diabetes Prediction of type 2 diabetes among patients with visits to psychiatric hospital departments

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timeseriesflattener-1.15.0.tar.gz (5.4 MB view details)

Uploaded Source

Built Distribution

timeseriesflattener-1.15.0-py3-none-any.whl (4.3 MB view details)

Uploaded Python 3

File details

Details for the file timeseriesflattener-1.15.0.tar.gz.

File metadata

  • Download URL: timeseriesflattener-1.15.0.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.2.0 tqdm/4.66.2 importlib-metadata/7.0.1 keyring/24.3.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13

File hashes

Hashes for timeseriesflattener-1.15.0.tar.gz
Algorithm Hash digest
SHA256 e1d7db589917f4d7031c9c30a0ef922eba17f047f3eb0a38a0c8efd6b0a8d149
MD5 4d53582d7f666493c394ebcca93d0266
BLAKE2b-256 1fdfb61eacab6b716ccac13b33ace97481588f5e6220ec3cda57e853290fd161

See more details on using hashes here.

File details

Details for the file timeseriesflattener-1.15.0-py3-none-any.whl.

File metadata

  • Download URL: timeseriesflattener-1.15.0-py3-none-any.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/42.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.2.0 tqdm/4.66.2 importlib-metadata/7.0.1 keyring/24.3.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.13

File hashes

Hashes for timeseriesflattener-1.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9cb6ed54089de4f882aa82d2040b3e4eda0b8641a6a5adb5d7b3ae8248d3275
MD5 331c1a1ce13a13456eefc9cb21358d6d
BLAKE2b-256 7dfc5f74baa842a32c0f5f7bf32311023f2c67663f1bd1f2b9e6288ce18c4d64

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page