depends on your needs.
previously i have used magento for short time. also a friend of mine has developed me a custom plugin. magento is customizable but is intended for large shops. it is much more customizable than prestashop but if you plan on working with magento it would be good to know how to code.
also have used opencart previously and am still using it. has enough bugs, for example order notes did not work for me, weird attacks happening agains admin, many bots making fake orders etc. i can't recommend it for anything serious that will handle card payments or such. the code is a bit messy.
im installing presta for the first time now, so can't comment much about it.