Considering the criteria listed below, which of Python, Groovy or Ruby would you use?

Criteria (Importance out of 10, 10 being most important)
Richness of API/libraries available (eg. maths, plotting, networking) (9)
Ability to embed in desktop (java/c++) applications (8)
Ease of deployment (8)
Ability to interface with DLLs/Shared Libraries (7)
Ability to generate GUIs (7)
Community/User support (6)
Portability (6)
Database manipulation (3)
Language/Semantics (2)
I think it's going to be difficult to get an objective comparison.  I personally prefer Python.  To address one of your criteria, Python was designed from the start to be an embeddable language.  It has a very rich C API, and the interpreter is modularized to make it easy to call from C.  If Java is your host environment, you should look at Jython, an implementation of Python inside the Java environment (VM and libs).
Python vs Groovy vs Ruby? (based on criteria listed in question)