Skip to main content

Local differential privacy mechanisms

Project description

TrasgoDP

License: Apache 2.0 codecov Documentation Status CI/CD Pipeline Python version

TrasgoDP implements different mechanims for ε-differential privacy and (ε, δ)-differential privacy. The mechanisms are implemented for being used under a local approach, adding noise directly to the raw data. Two types of mechanims are implemented:

  • For numerical records: Laplace and Gaussian mechanisms. The implementation includes a final clipping applyied on the data with DP.
  • For categorical records: Exponential mechanism.

This library provides dedicated function designed for being applied on both pandas dataframes and lists/numpy arrays.

Getting started

For applying DP mechanisms to a column of a dataframe you need to introduce:

  • The pandas dataframe with the data.
  • The column in the dataframe to be privatized.
  • The privacy budget (ε).
  • The probability of exceeding the privacy budget (δ) in case of numerical attributes and the Gaussian mechanism.
  • The uper and lower bounds for numerical attributes (optional).

Example: apply DP to the adult dataset with the Laplace mechanism for the column age and the Exponential mechanism for the column workclass:

import pandas as pd
from trasgodp.numerical import dp_clip_laplace
from trasgodp.categorical import dp_exponential

# Read and process the data
data = pd.read_csv("examples/adult.csv")
data.columns = data.columns.str.strip()
cols = [
    "workclass",
    "education",
    "marital-status",
    "occupation",
    "sex",
    "native-country",
]
for col in cols:
    data[col] = data[col].str.strip()

# Apply DP for the attribute age:
column_num = "age"
epsilon1 = 10
df = dp_clip_laplace(data, column_num, epsilon1, new_column=True)

# Apply DP for the attribute workclass:
column_cat = "workclass"
epsilon2 = 5
df = dp_exponential(data, column_cat, epsilon2, new_column=True)

Warning

This project is under active development.

License

This project is licensed under the Apache 2.0 license.

Funding and acknowledgments

This work is funded by European Union through the SIESTA project (Horizon Europe) under Grant number 101131957.

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

trasgodp-0.0.1.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

trasgodp-0.0.1-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file trasgodp-0.0.1.tar.gz.

File metadata

  • Download URL: trasgodp-0.0.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for trasgodp-0.0.1.tar.gz
Algorithm Hash digest
SHA256 37bd5b6302442d105e4c3fccf3615d4344be5376384312f2701288e1911df6b7
MD5 1a650f8cc20fb3d258bd376451984198
BLAKE2b-256 625d681a43d6d573ea74eca8bae3a4d091c21cc350e36efba587e1f9bfa44117

See more details on using hashes here.

File details

Details for the file trasgodp-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: trasgodp-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for trasgodp-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8307a09936720188c82fa4ff8fb416f71de90cb8e31e9b763c637081bc9abb8c
MD5 613b205fc4fc75a24f810cf7fb844f32
BLAKE2b-256 d410234e38ee8913c28b1a34c05e1f3383d11604f8390096d52275270c049b32

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