Best practice for groupby on Parquet file
If you are doing a groupby-aggregation with a known aggregation like count or mean then your partitioning won't make that much of a difference.  This should be relatively fast regardless.
If you are doing a groupby-apply with a non-trivial apply function (like running an sklearn model on each group) then you will have a much faster experience if you store your data so that the grouping column is sorted in parquet.
Edit:
That being said, even though groupby-count doesn't especially encourage smart partitioning it's still nice to switch to Parquet.  You'll find that you can read the relevant columns much more quickly.  
As a quick disclaimer, dask.dataframe doesn't currently use the count statistics within parquet to accelerate queries, except by filtering within the read_parquet function and to help identify sorted columns.
We have a 1.5BM records spread out in several csv files. We need to groupby on several columns in order to generate a count aggregate.
Our current strategy is to:   

Load them into a dataframe (using Dask or pyspark)  
Aggregate columns in order to generate 2 columns as key:value (we are not sure if this is worthwhile)
Save file as Parquet
Read the Parquet file (Dask or pyspark) and run a groupby on the index of the dataframe.

What is the best practice for an efficient groupby on a Parquet file?
How beneficial is it to perform the groupby on the index rather then on a column (or a group of columns)?
We understand that there is a partition that can assist - but in our case we need to groupby on the entire dataset - so we don't think it is relevant.