Skip to main content

Pandas Interval Set Operations: methods for set operations, analytics, lookups and joins on pandas' Interval, IntervalArray and IntervalIndex

Project description

piso logo

piso - pandas interval set operations

piso exists to bring set operations (union, intersection, difference + more), analytical methods, and lookup and join functionality to pandas' interval classes, specifically

- pandas.Interval
- pandas.arrays.IntervalArray
- pandas.IntervalIndex

Currently, there is a lack of such functionality in pandas, although it has been earmarked for development. Until this eventuates, piso aims to fill the void. Many of the methods can be used via accessors, which can be registered to pandas.arrays.IntervalArray and pandas.IntervalIndex classes, for example:

>>> import pandas as pd
>>> import piso
>>> piso.register_accessors()

>>> arr = pd.arrays.IntervalArray.from_tuples(
...        [(1,5), (3,6), (2,4)]
...    )

>>> arr.piso.intersection()
<IntervalArray>
[(3, 4]]
Length: 1, closed: right, dtype: interval[int64]

>>> arr.piso.contains([2, 3, 5])
            2      3      5
(1, 5]   True   True   True
(3, 6]  False  False   True
(2, 4]  False   True  False

>>> df = pd.DataFrame(
...     {"A":[4,3], "B":["x","y"]},
...     index=pd.IntervalIndex.from_tuples([(1,3), (5,7)]),
... )

>>> s = pd.Series(
...     [True, False],
...     index=pd.IntervalIndex.from_tuples([(2,4), (5,6)]),
...     name="C",
... )

>>> piso.join(df, s)
        A  B      C
(1, 2]  4  x    NaN
(2, 3]  4  x   True
(5, 6]  3  y  False
(6, 7]  3  y    NaN

>>> piso.join(df, s, how="inner")
        A  B      C
(2, 3]  4  x   True
(5, 6]  3  y  False

The domain of the intervals can be either numerical, pandas.Timestamp or pandas.Timedelta.

Several case studies using piso can be found in the user guide. Further examples, and a detailed explanation of functionality, are provided in the API reference.

Visit https://piso.readthedocs.io for the documentation.

Installation

piso can be installed from PyPI or Anaconda.

To install the latest version from PyPI::

python -m pip install piso

To install the latest version through conda-forge::

conda install -c conda-forge piso

Versioning

SemVer is used by piso for versioning releases. For versions available, see the tags on this repository.

License

This project is licensed under the MIT License

Acknowledgments

Currently, piso is a pure-python implentation which relies heavily on staircase and pandas. It is designed to operate as part of the pandas ecosystem. The colours for the piso logo have been assimilated from pandas as a homage, and is not to intended to imply and affiliation with, or endorsement by, pandas.

Additionally, two classes have been borrowed, almost verbatim, from the pandas source code:

- `pandas.util._decorators.Appender`
- `pandas.core.accessor.CachedAccessor`

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

piso-1.2.0.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

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

piso-1.2.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file piso-1.2.0.tar.gz.

File metadata

  • Download URL: piso-1.2.0.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for piso-1.2.0.tar.gz
Algorithm Hash digest
SHA256 1453ad71141e1653e7d79cf1f73a2226f62c28311a9c0c8f0cf3603a17a72d6c
MD5 723f5dc176ef3e79cef6c98aa9bbaa6b
BLAKE2b-256 72ddc134c8fb932ae2b1c9a61ec589db6b7d7fad1b7ed6ca894bacd6346377db

See more details on using hashes here.

File details

Details for the file piso-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: piso-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for piso-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1bec0ff04f3e1a0147f3e2e0655998859e1641825d9c5fa232fbf7dcdf5984c9
MD5 cef40d51f78eefc1121a65bd6569bbd7
BLAKE2b-256 dd843d09682c177e8fa7281732c74b6239224140d45a409702869343acfcc6a2

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