BLD: make bottleneck required
State: closed

- [x] closes #12149
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry


Labels:

Comments:
Hello @jbrockmendel! Thanks for submitting the PR.

 - There are no PEP8 issues in the file [`asv_bench/benchmarks/stat_ops.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/asv_bench/benchmarks/stat_ops.py) !

 - There are no PEP8 issues in the file [`pandas/core/config_init.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/core/config_init.py) !

 - There are no PEP8 issues in the file [`pandas/core/nanops.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/core/nanops.py) !

 - There are no PEP8 issues in the file [`pandas/tests/frame/test_analytics.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/tests/frame/test_analytics.py) !

 - There are no PEP8 issues in the file [`pandas/tests/series/test_analytics.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/tests/series/test_analytics.py) !

 - There are no PEP8 issues in the file [`pandas/tests/series/test_operators.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/tests/series/test_operators.py) !

 - There are no PEP8 issues in the file [`pandas/tests/test_nanops.py`](https://github.com/jbrockmendel/pandas/blob/c8c3d55529aa76f697d68396a7f0d79e7057ff41/pandas/tests/test_nanops.py) !


even though i created the original issue

-1 on adding this dependency. rather would drop it and add numba instead to do the computation.

bottleneck doesn’t really add much performance except in a very limited way 
> rather would drop it and add numba instead to do the computation.

I'm happy to put this PR off if this topic needs discussion.  My impression is that numba is less of a bottleneck-substitute than it is a cython-substitute.  Could be way off in that, since I don't use numba myself.
I have an experimental project reimplementing bottleneck functions in Numba, which might be a helpful reference: http://github.com/shoyer/numbagg
@shoyer how much work to update numbagg to modern numba? could u rerun benchmarks when u have a chance
I'd also prefer not to do this.

I think once we're ready to take on proper string support (next year some time?) there's a chance we'll add numba as a required dependency anyway (though that shouldn't be taken as a given at this point).
@shoyer that's a neat usage, thanks for sharing.

My main goal with this PR is to untangle nanops, don't care that much about bottleneck.  Let's close and discuss numba in a dedicated Issue.
maybe what’s useful here is to decouple the bottleneck code from nanops - iow make it like a plug-in that we then swap out (to another engine) might require some refactoring
Numbagg works with modern numba, which has been remarkably stable over the
past few years. I'm still not sure I would recommend that pandas use it --
bottleneck (written in C) is definitely easier to install than Numba. If we
vendored bottleneck in pandas (not that I recommend it) our users would
hardly notice the difference from what we do currently. That's probably not
as true for Numba.
On Sun, Dec 16, 2018 at 8:47 AM Jeff Reback <notifications@github.com>
wrote:

> maybe what’s useful here is to decouple the bottleneck code from nanops -
> iow make it like a plug-in that we then swap out (to another engine) might
> require some refactoring
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/pandas-dev/pandas/pull/24300#issuecomment-447653314>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/ABKS1uShgltPw0C5md2ewRGsTBs2xQ2Yks5u5mshgaJpZM4ZU_Pd>
> .
>

I am making a more general point - I think we should use numba as a hard dependency - allows lots of flexibility and quite good performance with an easier maintenance burden

and installation is well supported across the eco system