Getting Fancy With Python ---------------------------------- .. warning:: You needn't do any of the following for course credit... .. tip:: ... but it might be useful down the road to take a quick peek at whats out there! When I started with Python I found software shopping to be intimidating, all this new software solving problems I didn't even know existed! My purpose in sharing them is just to give a quick sense of what's out there which might serve you in DS in the future. You can always spend the time mastering these libraries when the need comes. For now, just knowing they exist and a rough sense of what they do is a good place to be. Some of my favorite "extra" python modules ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There are plenty of useful python modules to install, here's a list of some one's which are slightly off the beaten path which I wish I knew about sooner in my own programming (in no particular order): * `nbopen `_ open an ipynb by double clicking in file browser * `tqdm `_ progress bar * `joblib `_ parallel processing (and caching) * `sortedcontainers `_ these objects can easily be an `elephant gun `_, there's a reason python doesn't offer them in the standard library * `RISE `_ turn your jupyter notebook into a slideshow * this is the one I use in class. Great for your final project presentation, if you choose to use it. I've linked to source, but they're all in `pypi `_ so you can just install via ``pip install nbopen`` or similar. But wait, there's more! Don't forget, you've always got these fun ones in the standard python library (no installation required, just ``import bisect`` and off you go!): * `bisect `_ bisect algorithm * `collections `_ lots of fun ones in there! namedTuple, defaultdict, deque and Counter are all worth a look * `itertools `_ offers some clever ways of iterating more gracefully .. To isolate distinct projects from each other on your computer, you can use multiple python environments via `venv `_ . Each environment can be used like a distinct python installation, with its own set of unique modules (with distinct versions from the same module in another environment!). Make sure to `tell Jupyter about new environments (kernels) `_ so you can easily swap between them in the "kernel" dropdown menu of Jupyter.