You just leverage the find command:

find . -name "*.csv"
Traverses all directories from your current working dir and lists the matching files

With the gzip command:

gzip -v -k -9 filename

-v = verbose
-k = keeps file (default is to zip and delete old)
-9 = compression, default 6, 9 max compression
gzips filename

And then you mix the two:

find . -name "*.csv" -exec gzip -v9 {} \;
This command finds all your files ending in ".csv" and gzips them

You should also be aware of pigz, a drop-in replacement for gzip, present in most distros, that (p)arallel gzips your files. For multicore systems, this will yield massively superior results:

find . -name "*.csv" -exec pigz -v9 {} \;
Look at all those cores humming!