Skip to main content

<sjoshistrats>

fastgrouper

Allows for fast groupby-apply operations, in python.

Install

Users can install the package from PyPI via:

python -m pip install fastgrouper

Usage

Use the arr interface, for numpy array focused applications.

import numpy as np
import fastgrouper.arr
  
def baz(x, y):
    return np.mean(x + y) - 3

# Sample arrays, to slice
xvals = np.array([1, 2, 10])
yvals = np.array([4, 5, 6])
  
# Group ids
gids  = np.array([1, -3, 1])

# Perform groupby-apply; note that keyword args are supported as well.
grpd = fastgrouper.arr.Grouped(gids)
result = grpd.apply(baz, xvals, y=yvals) # np.array([7.5, 4])

# The gids correponding to the result above can be found via the `dedup_gids` attribute.
grpd.dedup_gids # np.array([ 1, -3])

# Users can also perform groupby-apply, and then expand results back to align with the original gids.
result = grpd.apply_expand(baz, xvals, yvals) # np.array([7.5, 4, 7.5])

The li interface returns the results over the groups as a list (instead of an array); this may be useful for functions that return different-sized results. Note that in all interfaces (e.g. both arr and li), the order in which the group elements appear is preserved when the group slices are passed to the function being applied.

import numpy as np
import fastgrouper.li
  
def bop(x):
    return list(x)

# Sample arrays, to slice
xvals = np.array([2, 3, 4])
  
# Group ids
gids  = np.array([10, -20, 10])

grpd = fastgrouper.li.Grouped(gids)
grpd.apply(bop, xvals) # [[2, 4], [3]]

For additional examples, checkout the tests.

Metadata

Release files for fastgrouper 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastgrouper 0.1.2
File Size Uploaded
fastgrouper-0.1.2.tar.gz 5.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for fastgrouper 0.1.2
File Interpreter ABI Platform
fastgrouper-0.1.2-py3.8.egg Legacy Egg format - - Details
fastgrouper-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / fastgrouper-0.1.2.tar.gz

Download URL fastgrouper-0.1.2.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d90b2cd98a2f8bd6dc3cddc8aa32fa5f58b68b902a2e20c2f747f353068fcb11
BLAKE2b-256 checksum
How to use checksums
4b3dee75e9c42a6b54c5b28b86503b4cfe912bba3926e3010e105dceb8ce27d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.8

Release files / fastgrouper-0.1.2-py3.8.egg

Download URL fastgrouper-0.1.2-py3.8.egg
Size 10.3 kB
Tags Egg
SHA-256 checksum
How to use checksums
0fe8e7b3a9544a54fb94c1b5e31a54947a878bcdee0d6adb74701d5a6f8ee43b
BLAKE2b-256 checksum
How to use checksums
e73b543b7d5843a7d32e7096474a094a9cd34c2a25dcd32c1c5a23c045600ecc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.8

Release files / fastgrouper-0.1.2-py3-none-any.whl

Download URL fastgrouper-0.1.2-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01ec249a2871d8a5b11c76d37dbb2e51c120b627c5e9864452ad9f0a15d3e95f
BLAKE2b-256 checksum
How to use checksums
480ffd795181bb60d9f58ca58d6115ed7f4f6156320154b2be3330af1e9c758e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.8

Release history Release notifications | RSS feed

This release

0.1.2 This release

3 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page