Skip to main content

A collection of measures for Approximate Functional Dependencies in relational data.

Project description

AFD measures

A collection of measures for Approximate Functional Dependencies in relational data. Additionally, this repository contains all artifacts to "Approximately Measuring Functional Dependencies: a Comparative Study".

Short description

In real-world research projects, we often encounter unknown relational (tabular) datasets. In order to process them efficiently, functional dependencies (FDs) give us structural insight into relational data, describing strong relationships between columns. Errors in real-world data let traditional FD detection techniques fail. Hence we consider approximate FDs (AFDs): FDs that approximately hold in relational data.

This repository contains the implemented measures as well as the all artifacts to "Approximately Measuring Functional Dependencies: a Comparative Study".

Overview

  • code: this directory holds the code used to generate the results in the paper
    • afd_measures: all Python source code relating to the implemented AFD measures
    • experiments: Jupyter notebooks containing the processing steps to generate the results, figures or tables in the paper
    • synthetic_data: all Python source code relating to the synthetic data generation process
  • data: the datasets used in the paper
    • rwd: manually annotated dataset of files found on the web (see data/ground_truth.csv)
    • rwd_e: datasets from rwd with errors introduced into them. Generated by the notebook code/experiments/create_rwd_e_dataset.ipynb.
    • syn_e: synthetic dataset generated focussing on errors. Generated by the notebook code/experiments/create_syn_e.ipynb
    • syn_u: synthetic dataset generated focussing on left-hand side uniqueness. Generated by the notebook code/experiments/create_syn_u.ipynb
    • syn_s: synthetic dataset generated focussing on right-hand side skewness. Generated by the notebook code/experiments/create_syn_s.ipynb
  • paper: A full version of the paper including all proofs.
  • results: results of applying the AFD measures to the datasets.

Installation (measure library)

This library can be found on PyPI: afd-measures. Install it using pip like this:

pip install afd-measures

Usage (measure library)

To apply one of the measures to your data, you will need a pandas DataFrame of your relation. Pandas will automatically installed as a dependency of afd-measures. You can start with this Python snippet to analyse your own data (a CSV file in this example):

import afd_measures
import pandas as pd

my_data = pd.read_csv("my_amazing_table.csv")
print(afd_measures.mu_plus(my_data, lhs="X", rhs="Y"))

Installation (experiments)

To revisit the experiments that we did, clone this repository and install all requirements with Poetry (preferred) or Conda.

Poetry

Install the requirements using poetry. Use the extra flag "experiments" to install all additional requirements for the experiments to work. This includes (amongst others) Jupyter Lab.

$ poetry install -E experiments
$ jupyter lab

Conda

Create a new environment from the conda_environment.yaml file, activate it and run Jupyter lab to investigate the code.

$ conda create -f conda_environment.yaml
$ jupyter lab

Dataset References

In addition to this repository, we made our benchmark also available on Zenodo: find it here

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

afd_measures-1.0.0.tar.gz (8.4 kB view hashes)

Uploaded Source

Built Distribution

afd_measures-1.0.0-py3-none-any.whl (8.3 kB view hashes)

Uploaded Python 3

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