Cythonized GroupBy any
State: closed


- [X] closes #15435
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry

```bash

       before           after         ratio
     [2fdf1e25]       [a2223dbf]
-           1.21s          956±3ms     0.79  groupby.GroupByMethods.time_method('float', 'mad')
-         141±2ms       57.8±0.9μs     0.00  groupby.GroupByMethods.time_method('int', 'any')
-         213±7ms         56.6±1μs     0.00  groupby.GroupByMethods.time_method('float', 'any')

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

Labels:
name: Groupby
name: Performance
description: Memory or execution speed performance

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=h1) Report
> Merging [#19722](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/9bdc5c8d48e506d00326702b997babe70f941a26?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `85.71%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/19722/graphs/tree.svg?width=650&height=150&src=pr&token=eZ4WkYLtcO)](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #19722      +/-   ##
==========================================
+ Coverage   91.66%   91.68%   +0.01%     
==========================================
  Files         150      150              
  Lines       48976    49020      +44     
==========================================
+ Hits        44896    44945      +49     
+ Misses       4080     4075       -5
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.06% <85.71%> (+0.01%)` | :arrow_up: |
| #single | `41.83% <16.32%> (-0.03%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/groupby.py](https://codecov.io/gh/pandas-dev/pandas/pull/19722/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ3JvdXBieS5weQ==) | `92.14% <85.71%> (-0.18%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/19722/diff?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `66.95% <0%> (+1.73%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=footer). Last update [9bdc5c8...ee4d0bd](https://codecov.io/gh/pandas-dev/pandas/pull/19722?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Travis failures on latest commit do not appear related to change
Latest ASVs:

```bash
       before           after         ratio
     [1e4c50a5]       [200c485a]
-         145±4ms         80.6±2μs     0.00  groupby.GroupByMethods.time_method('int', 'all')
-       135±0.9ms       74.1±0.3μs     0.00  groupby.GroupByMethods.time_method('int', 'any')
-       209±0.2ms       73.4±0.4μs     0.00  groupby.GroupByMethods.time_method('float', 'all')
-       208±0.3ms       72.6±0.5μs     0.00  groupby.GroupByMethods.time_method('float', 'any')
```
Hello @WillAyd! Thanks for updating the PR.







Cheers ! There are no PEP8 issues in this Pull Request. :beers: 

##### Comment last updated on February 28, 2018 at 07:31 Hours UTC
Benchmarks including object changes:

```bash
  [9bdc5c8d] [3cd500fe]
+  312.71μs   361.15μs      1.15  groupby.GroupByMethods.time_method('int', 'head')
+  292.04μs   332.35μs      1.14  groupby.GroupByMethods.time_method('float', 'head')
+  128.44μs   143.97μs      1.12  groupby.GroupByMethods.time_method('int', 'shift')
+  309.96μs   344.88μs      1.11  groupby.GroupByMethods.time_method('float', 'mean')
-  421.70μs    72.55μs      0.17  groupby.GroupByMethods.time_method('object', 'any')
-  426.03μs    71.82μs      0.17  groupby.GroupByMethods.time_method('object', 'all')
-  138.73ms    75.87μs      0.00  groupby.GroupByMethods.time_method('int', 'any')
-  149.07ms    81.30μs      0.00  groupby.GroupByMethods.time_method('int', 'all')
-  201.74ms    72.41μs      0.00  groupby.GroupByMethods.time_method('float', 'all')
-  206.24ms    73.34μs      0.00  groupby.GroupByMethods.time_method('float', 'any')
```
thanks @WillAyd as always, very much appreciated.

happy to take PR's to clean up benchmarks, re-factor the whole cython access pattern in groupy and additional perf improvements!
ok to open an issue about the groupby function rendering 
Just checked the built documentation on GitHub and it looks like the link is rendering there, so I don't think there is a real issue. Must have just been something with the build on my computer (perhaps needed to completely clean?)