TDB
Project description
Blackbear: Standard Library Data and Math Tools
.. image:: https://travis-ci.org/cgdeboer/blackbear.svg?branch=master :target: https://travis-ci.org/cgdeboer/blackbear
.. image:: https://img.shields.io/pypi/v/blackbear.svg :target: https://pypi.org/project/blackbear/
Blackbear is an organic (standard library) library for data manipulation and
math using only built-in python dicts
and sets
(without numpy, pandas, polars
)
.. image:: https://raw.githubusercontent.com/cgdeboer/blackbear/master/docs/blackbear.jpeg :width: 400
Example Code:
.. code-block:: python
>>> import blackbear as bb
>>> data = {'foo': 60.0,
'bar': 16.0,
'baz': 24.0}
>>> bb.add_scalar(data, 10)
{'foo': 70.0,
'bar': 26.0,
'baz': 34.0}
>>> blue = {'foo': 60.0,
'bar': 16.0,
'baz': 24.0}
>>> green = {'foo': 40.0,
'bar': 4.0,
'baz': 6.0}
>>> bb.add(blue, green)
{'foo': 100.0,
'bar': 20.0,
'baz': 40.0}
Performance
"No numpy_, no pandas_, not even polars_, I bet this is really, really slow. Right ?"
For certain use cases, it can be faster than any of those. Here is a guide:
- Use
blackbear
for frequent (millions) operations on small collections (< 20 items) where matching on an index (i.e dict keys) is needed. - Do not use
blackbear
for operations on larger collections (> 50000).
See benchmark details and data below.
.. _numpy: https://numpy.org/ .. _pandas: https://pandas.pydata.org/ .. _polars: https://www.pola.rs/
Feature Support
You are responsible for passing in the correct types to blackbear functions, we didn't want the additional overhead of type checking.
Blackbear officially supports Python 3.9+.
Installation
To install Blackbear, use pipenv <http://pipenv.org/>
_ (or pip, of course):
.. code-block:: bash
$ pipenv install blackbear
Documentation
Documentation beyond this readme will be available soon.
How to Contribute
#. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
#. Fork the repository
_ on GitHub to start making your changes to the master branch (or branch off of it).
#. Write a test which shows that the bug was fixed or that the feature works as expected.
#. Send a pull request. Make sure to add yourself to AUTHORS_.
.. _the repository
: https://github.com/cgdeboer/blackbear
.. _AUTHORS: https://github.com/cgdeboer/blackbear/blob/master/AUTHORS.rst
Benchmarks
100000 X 5 Element-wise ops on collection of 10
.. code-block::
Pandas
user 0m35.212s
Polars
user 0m3.398s
Numpy
user 0m1.437s
Blackbear
user 0m0.601s
1000000 X 5 Element-wise ops on collection of 10
.. code-block::
Pandas
user 5m26.803s
Polars
user 0m24.115s
Numpy
user 0m6.734s
Blackbear
user 0m5.574s
1000 X 5 Element-wise ops on collection of 10000
.. code-block::
Pandas
user 0m1.406s
Polars
user 0m1.055s
Numpy
user 0m0.737s
Blackbear
user 0m2.703s
1000 X 5 Element-wise ops on collection of 100000
.. code-block::
Pandas
user 0m1.725s
Polars
user 0m1.230s
Numpy
user 0m1.035s
Blackbear
user 0m39.090s
500000 X 5 Element-wise ops on collection of 5
.. code-block::
Pandas
user 2m46.098s
Polars
user 0m12.899s
Numpy
user 0m3.674s
Blackbear
user 0m2.025s
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.