[CentralOH] My Python Learning Path
pybokeh at gmail.com
Sun Nov 23 05:42:32 CET 2014
A few of us were asked at the last meet-up how they learned Python. So I
like to share how I learned. Although I did learn Java before learning
Python, so I wasn't completely new to programming. But mind you, I've been
only using Python for about 4 or 5 years and mostly around data analysis.
I mostly learned from books. The popular ones seem to be:
Learning Python by Mark Lutz (very in-depth)
Learning Python the Hard Way by Zed Shaw
Python Cookbook by David Beazley and Brian K. Jones
Writing Idiomatic Python by Jeff Knupp
I have read these and they are really good.
But my first book and most favorite was "Python Power!: The Comprehensive
Guide", but it is sort of old and newer editions for it hasn't been made.
So it is just for Python 2. It is my favorite because it showed wide range
of practical examples and had just the right amount of depth to get you
Some Python books can be found here:
I also have learned from videos, but not too often. My favorite youtube
channel is by this guy:
To reinforce what I've learned or to see if I really understood the
concepts, I'll try some puzzles at www.codingbat.com/python and recently
I've been checking out www.checkio.org. If you're very mathy, people seem
to like https://projecteuler.net
Oh, I have to put in a word about MATPLOTLIB. Great plotting library, but
the official documentation is not great IMO because on some of their
examples they show MATLAB-style API usage and on others they show OOP
(object oriented programming) style API usage. This really confused the
heck out of me. Not until I ran into this awesome tutorial did it really
sink in for me:
If you don't like the default color or style of MATPLOTLIB, check out style
But a plotting library that I hope will really take off in popularity is
Yhat's ggplot. It isn't quite ready for Python 3 (Python 2 works ok with
it), but should be within a few weeks. They finally fixed it in their
github repository, but just not yet in production. But creating charts in
ggplot is so much more convenient and intuitive in my opinion compared to
MATPLOTLIB. But you should still learn MATPLOTLIB since it is so flexible
in that you can pretty much control or customize any component or part of a
chart. These are non web-based plotting libraries. There are some really
neat looking web-based plotting libraries, but as for starting off, they
are more complicated to use or setup.
After I reached around intermediate level, I then learned about making
virtual environments. I won't talk any more further about it, but let's
just say you'll eventually want to invest in learning about making virtual
environments using pyvenv or Anaconda conda package management system.
Finally, in last couple of years I've been learning and using IPython
notebooks. They are great and sort of hard to explain to others.
Basically, it allows you to run Python code within a browser and share it.
It is great for when you want to maintain reproduceability of how you went
about running your Python code and explaining it in a nice bloggish/HTML
looking format. So you can also embed multimedia format like images or
videos. You can create your own IPython notebook server which can be
tricky to install by yourself or you can try out cloud-based/3rd
party-supplied servers like https://wakari.io or https://cloud.sagemath.com.
If you just want to temporarily check out an IPython notebook, you can
visit https://tmpnb.org There are some limitations with it, such as you
can't grab data from the web that you want to plot. Instead, you'll have
to randomly generate your own data locally. Otherwise, it is great for
playing around with it.
As for getting help, I've gotten help from other Python meet-up members,
googled, searched stackoverflow, posted on google groups, and as last
resort, used IRC. Of course if you can find a mentor, that'll be the best.
I wish I could find one.
Well, that's pretty much has been my path to learning Python.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the CentralOH