Jupyter vs Spyder vs Pycharm, which is better?

From my perspective, it depends upon what you really need to do.
Are you just exploring the data, figuring out how to engineer features and what models to try out, then definitely jupyter notebook is the best. Also it allows you to hybrid reporting and coding.
However, if you have established data science approach and want to build a package or software, using typical python OOP, go for pycharm. It allows you to debugg and run unit-tests.
Spyder is good, when you are between the two, not really trying to explore every code bit, but at the same time, not yet building a software package.
Also, jupyter notebooks can become cumbersome to resolve git conflicts.