Skip to main content

A tool to link or deduplicate small or medium sized datasets.

Project description

This Record Linkage Toolkit is a library to link records in or between data sources. The package provides most of the tools needed for record linkage. The package contains indexing methods, functions to compare records and classifiers. The package is developed for research and linking of small or medium sized files.

This project is inspired by the Freely Extensible Biomedical Record Linkage (FEBRL) project, which is a great project. This project has one big difference, it uses pandas and numpy for data handling and computations. The use of pandas, a flexible and powerful data analysis and manipulation library for Python, makes the record linkage process much easier and faster. A lot of built-in pandas methods can be used to integrate your record linkage directly into existing data manipulation projects.

One of the aims of this project is to make an extensible record linkage framework. It is easy to include your own indexing algorithms, comparison/similarity measures and classifiers.

Basic linking example

Import the recordlinkage module with all important tools for record linkage and import the data manipulation framework pandas.

import recordlinkage
import pandas

For examples, you try to link two datasets with personal information like name, sex and date of birth. Load these datasets into a pandas DataFrame.

df_a = pandas.DataFrame(YOUR_FIRST_DATASET)
df_b = pandas.DataFrame(YOUR_SECOND_DATASET)

Comparing all record can be computationally intensive. Therefore, we make smart set of candidate links with one of the built-in indexing techniques like blocking. Only records pairs that agree on the surname are included.

index = recordlinkage.Index(df_a, df_b)
candidate_links = index.block('surname')

For each candidate link, compare the pair of records with the Compare class and the available comparison/similarity functions.

compare = recordlinkage.Compare(candidate_links, df_a, df_b)

compare.fuzzy('name', 'name', method='jarowinkler', threshold=0.85)
compare.exact('sex', 'gender')
compare.exact('dob', 'date_of_birth')
compare.fuzzy('streetname', 'streetname', method='damerau_levenshtein', threshold=0.7)
compare.exact('place', 'placename')
compare.exact('haircolor', 'haircolor', missing_value=9)

# The comparison vectors
compare.vectors

This record linkage package contains several classification alogirthms. Plenty of the algorithms need trainings data (supervised learning) while others are unsupervised. An example of supervised learning:

true_linkage = pandas.Series(YOUR_GOLDEN_DATA, index=pandas.MultiIndex(YOUR_MULTI_INDEX))

logrg = recordlinkage.LogisticRegressionClassifier()
logrg.learn(compare.vectors[true_linkage.index], true_linkage)

logrg.predict(compare.vectors)

and an example of unsupervised learning (the well known ECM-algorithm):

ecm = recordlinkage.BernoulliEMClassifier()
ecm.learn(compare.vectors)

Main Features

The main features of the recordlinkage package are:

  • Clean and standardise data

  • Make pairs of records with several indexing methods such as blocking and sorted neighbourhood indexing

  • Compare records with a large number of comparison and similarity functions (including the jaro-winkler and levenshtein metrics)

  • Several classifications algorithms, both supervised and unsupervised algorithms.

Documentation, dependencies, installation and license

The most recent documentation can be found at recordlinkage.readthedocs.org.

The following packages are required. You probably have it already ;)

The following packages are recommanded

  • jellyfish: Needed for approximate string comparison. Version 0.5.0 or higher.

It is not possible to install the package with pip (coming soon). You can download or clone the recordlinkage project and install it in the normal way

python setup.py install

The license for this record linkage tool is GPLv3.

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

recordlinkage-0.2.tar.gz (162.0 kB view details)

Uploaded Source

File details

Details for the file recordlinkage-0.2.tar.gz.

File metadata

  • Download URL: recordlinkage-0.2.tar.gz
  • Upload date:
  • Size: 162.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for recordlinkage-0.2.tar.gz
Algorithm Hash digest
SHA256 4698d7913c44771a0a0da6b823d901579ec246c547cf8ae304148c07a383d8e7
MD5 e202926ed869b208e31918978d311878
BLAKE2b-256 c4989794d59be27c2ccc07b0f4c51369c73813784875d97ef8083fc6ee0bd0bd

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