ENH: better error message when trying to do improper aggregation on dataframe
#### Is your feature request related to a problem?

I have an automated pipeline at work that does some data processing, and this morning I woke up to many notifications that the pipeline had failed. I checked the logs and the stack trace, and found that the script was throwing the exception `pandas.core.base.DataError: No numeric types to aggregate` when trying to take the mean of a column over a groupby. Due to this error message, I assumed that the problem was due to data being coerced to the wrong data type somewhere else, so I tried to hunt down the source of that. After being unable to find any error, I tried force-coercing the data to `float` type, but this still did not fix the issue. So I finally went to inspect the actual data in the dataframe, and it turns out it was empty! So there was no aggregation to be done. I think if the error message had been a bit more descriptive, I might have been able to identify the actual problem a bit quicker.

#### Describe the solution you'd like

I think it would be great if the error message could be a bit more informative. In the case I ran into, rather than saying that there are `No numeric types to aggregate`, perhaps it could have said something like `Unable to aggregate over empty DataFrame`. In other potential scenarios, like where the data types are actually not numeric, perhaps the error might also mention which column(s) (if you are aggregating multiple at the same time) is(are) causing the problem. Perhaps something like `No numeric types to aggregate in columns ['col1', 'col2', ...]`

#### API breaking implications

Don't think this will affect the API at all, just the error message.

#### Describe alternatives you've considered

I have added code to my pipeline to check for this edge case, which I suppose is an "alternative".

#### Additional context

This is the offending bit of code that was causing my error. `costs_df` ended up having zero rows when I pulled the data from one of my databases, so taking the mean over `cost_per_mile` threw the above exception.

```python
costs_df.groupby(["organization_cd", "route_id"])["cost_per_mile"].mean()
```
