Skip to main content

Standardized & reproducible data management for recommender systems.

Project description

🧩 DataRec: A Python Library for Standardized and Reproducible Data Management in Recommender Systems

Documentation License Python 3.9+


DataRec Logo

DataRec focuses on the data management phase of recommender systems, promoting standardization, interoperability, and best practices for data filtering, splitting, analysis, and export.

Official repository of the paper:
📄 DataRec: A Python Library for Standardized and Reproducible Data Management in Recommender Systems (SIGIR 2025) doi


📑 Table of Contents


Features ✨

  • Dataset Management: multi-format I/O with dynamic schema specification.
  • Reference Datasets: curated, versioned, and traceable datasets.
  • Filtering Strategies: widely used user/item interaction filters.
  • Splitting Strategies: temporal and random splits for reproducible evaluation.
  • Data Characteristics: compute dataset-level statistics (e.g., sparsity, popularity).
  • Interoperability: export datasets to external recommendation frameworks.
DataRec Architecture

Installation

From PyPI

pip install datarec-lib

From source (recommended for development)

git clone https://github.com/sisinflab/DataRec.git
cd DataRec
python3.9 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# editable mode + optional dependency groups (defined in pyproject.toml)
pip install -e '.[dev,docs]'

Quickstart 🚀

from datarec.datasets import AmazonOffice
from datarec.processing import FilterOutDuplicatedInteractions, UserItemIterativeKCore
from datarec.splitters import RandomHoldOut

# 1️⃣ Load a reference dataset
data = AmazonOffice(version='2014').prepare_and_load()

# 2️⃣ Apply preprocessing filters
data = FilterOutDuplicatedInteractions().run(data)
data = UserItemIterativeKCore(cores=5).run(data)

# 3️⃣ Split into train/validation/test
splitter = RandomHoldOut(test_ratio=0.2, val_ratio=0.1, seed=42)
splits = splitter.run(data)

train, val, test = splits['train'], splits['val'], splits['test']

Pipeline paths

When using YAML pipelines, store only filenames in the steps and pass the base folders at runtime:

from datarec.pipeline import Pipeline

pipeline = Pipeline.from_yaml("create_pipeline.yml")
pipeline.apply(input_folder="./data", output_folder="./outputs")

For file loaders use filename (instead of path) and for export steps use filename (instead of output_path) in the YAML.


Datasets 📊

The complete and up-to-date list of datasets (with metadata and statistics) is available in the documentation:

👉 Datasets Section


Documentation 📚

Full documentation available at: https://sisinflab.github.io/DataRec/
Includes API reference, guides, tutorials, and dataset overview.


Contributing 🤝

Contributions are welcome!
To contribute:

  1. Create a feature/fix branch.
  2. Add tests and documentation updates as needed.
  3. Run tests before pushing.
  4. Open a pull request describing your changes clearly.

The project also receives updates from a private development repository maintained by SisInfLab.


Citation 📖

If you use DataRec in your research, please cite our SIGIR 2025 paper:

@inproceedings{DBLP:conf/sigir/MancinoBF0MPN25,
  author       = {Alberto Carlo Maria Mancino and
                  Salvatore Bufi and
                  Angela Di Fazio and
                  Antonio Ferrara and
                  Daniele Malitesta and
                  Claudio Pomo and
                  Tommaso Di Noia},
  title        = {DataRec: {A} Python Library for Standardized and Reproducible Data
                  Management in Recommender Systems},
  booktitle    = {{SIGIR}},
  pages        = {3478--3487},
  publisher    = {{ACM}},
  year         = {2025}
}

Authors and Contributors 👥

Authors

  • Alberto Carlo Maria Mancino (Politecnico di Bari)
  • Salvatore Bufi
  • Angela Di Fazio
  • Daniele Malitesta
  • Antonio Ferrara
  • Claudio Pomo
  • Tommaso Di Noia

Contributors


Alberto C. M. Mancino

Angela Di Fazio

Salvatore Bufi

Giuseppe Fasano

Gianluca Colonna

Maria L. N. De Bonis

Marco Valentini

Related Projects 🧩


License 📜

Distributed under the MIT License.
See LICENSE.


Maintained with ❤️ by SisInfLab

DataRec Logo

Project details


Download files

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

Source Distribution

datarec_lib-1.5.5.tar.gz (118.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

datarec_lib-1.5.5-py3-none-any.whl (199.1 kB view details)

Uploaded Python 3

File details

Details for the file datarec_lib-1.5.5.tar.gz.

File metadata

  • Download URL: datarec_lib-1.5.5.tar.gz
  • Upload date:
  • Size: 118.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for datarec_lib-1.5.5.tar.gz
Algorithm Hash digest
SHA256 406f253d595520d540b3d85745f1a20e76c01e211c292bb9265f9efc81f4c1e7
MD5 42d3534b4ab41987dc6d9bec7443f6c1
BLAKE2b-256 3f6a195424e5496da3d3696be7ae8655613cdd64139ae75e1194d53e53e272e3

See more details on using hashes here.

File details

Details for the file datarec_lib-1.5.5-py3-none-any.whl.

File metadata

  • Download URL: datarec_lib-1.5.5-py3-none-any.whl
  • Upload date:
  • Size: 199.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for datarec_lib-1.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d4d04f99bcfd79414e56220c45cd47a92042058537cf6e853ca7ce48c8a72702
MD5 0e1c12c400d5c3fd5b7ba08a6d9ff53b
BLAKE2b-256 e535dfdec8a37d1bd5b085e48eee59d1226a492f2cf2d33869c4597e62fead45

See more details on using hashes here.

Supported by

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