IPython is an improved Python shell than the one you get from running
$ python in the command-line. It has many cool functions (running Unix commands from the Python shell, easy copy & paste, creating Matplotlib charts in-line etc.). You can find all functions in the documentation.
IPython is a kernel for Jupyter Notebook. If you are confused IPython with Jupyter, refer to the Jupyter documentation
$ pip install ipython
If you want a more fine grained command you can try the following:
For zsh ->
$ pip install 'ipython[zmq,qtconsole,notebook,test]'
For bash ->
$ pip install ipython[zmq,qtconsole,notebook,test]