Skip to main content

Fuzzy merging and matching utilities for pandas Dataframes.

Project description

fuzzy-df

fuzzy-df is a Python package that provides utilities for performing fuzzy matching and merging on pandas DataFrames and Series. It leverages the power of rapidfuzz for efficient similarity computations and integrates seamlessly with pandas.

Features

  • Fuzzy Matching: Match elements between two pandas Series based on similarity scores.
  • Fuzzy Merging: Merge pandas DataFrames or Series using fuzzy matching logic.
  • Customizable: Configure similarity score thresholds and specify custom column names for scores.

Installation

You can install fuzzy-df using pip:

pip install fuzzy-df

Usage

Fuzzy Matching

Use the fuzz_match function to perform fuzzy matching between two pandas Series:

import pandas as pd
from fuzzy_df.match import fuzz_match

comp_left = pd.Series(["apple", "banana", "cherry"])
comp_right = pd.Series(["apples", "grape", "bananas", "apple"])

matches = fuzz_match(comp_left, comp_right, score_cutoff=70)
print(matches)

Output:

   left_index  right_index       score
0           0            0   90.909088
1           0            3  100.000000
2           1            2   92.307693

Fuzzy Merging

Use the fuzz_merge function to merge two pandas DataFrames or Series based on fuzzy matching:

import pandas as pd
from fuzzy_df.merge import fuzz_merge

left = pd.DataFrame(
   {"id_left": [1, 2], "name_left": ["foo", "bar"]})
right = pd.DataFrame(
   {"id_right": [3, 4, 5, 6], "name_right": ["baz", "bear", "fool", "food"]})

merged = fuzz_merge(left, right, left_on="name_left",
                  right_on="name_right", score_cutoff=70)

print(merged)

Output:

   id_right name_right  id_left name_left  left_index  right_index      score
2         4       bear        2       bar           1            1  85.714287
0         5       fool        1       foo           0            2  85.714287
1         6       food        1       foo           0            3  85.714287

Building

Building with uv

To build the project using uv, follow these steps:

  1. Setup python version: Overide the .python-version to test out on supported python version >=3.10:

    echo 3.13 > .python-version
    
  2. Run the build command: Navigate to the project directory and execute the following command:

    uv build
    

    This will package the project and prepare it for distribution.

  3. Verify the build: After the build process completes, you should see the generated distribution files in the dist/ directory. You can verify them by listing the contents:

    ls dist/
    
  4. Install the built package locally (optional): To test the built package, you can install it locally using pip:

    pip install dist/fuzzy_df-<version>.tar.gz
    

Replace <version> with the actual version number of the package.

For more information on uv, refer to its documentation.

Testing

To run tests, follow these steps:

  1. Install the package in editable mode:

    uv pip install -e .
    
  2. Run the test suite using pytest:

    uv run pytest
    

This will execute all the tests and display the results in the terminal.

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests on the GitHub repository.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Author

Developed by Iman-Budi Pranakasih. For inquiries, contact ibpranakasih@gmail.com.

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

fuzzy_df-0.2.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

fuzzy_df-0.2.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file fuzzy_df-0.2.0.tar.gz.

File metadata

  • Download URL: fuzzy_df-0.2.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fuzzy_df-0.2.0.tar.gz
Algorithm Hash digest
SHA256 75a41ec913713165aa43fdc6d3fc9229de2f8e79ef7e06de4cf3caa80a64471b
MD5 bf23593aed725e99b69c755efde106b7
BLAKE2b-256 301670e5854bbba60b93f2f78b4cb7916e5e8bb6450f11721a1b1508759517cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fuzzy_df-0.2.0.tar.gz:

Publisher: release.yml on ibpme/fuzzy-df

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fuzzy_df-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: fuzzy_df-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fuzzy_df-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af04c19c6429774ecb47ae228b2ea29f389ca2217ad83c396f6d6fff13911e2f
MD5 0829dda9f753e166bc1f0d23d9ee6470
BLAKE2b-256 f0611f5f76034a6e0fc9513510439955759792209a83be73e86e000f2367cdb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for fuzzy_df-0.2.0-py3-none-any.whl:

Publisher: release.yml on ibpme/fuzzy-df

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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