UPDATE May 1, 2019: To keep this all in one place I’ve decided to simply modify/update this post.
Over the years students have asked me how they can get more Python skills. In the past I would copy and paste a version of what is below into an email for anyone interested. This is by no means a comprehensive list, but it’s a good place to start for anyone interested. If you know of other resources, please let me know!
Python 2 or 3
The debate is over. It’s time to learn Python 3. You can get a good overview of the differences here. Unfortunately, many of the resources below still use Python 2. You can still use them and then port over to Python 3. I’ve noted use of Python 2 vs. Python 3 is the links below where I could easily find out (i.e., without enrolling in courses/paying).
Learn the basics
There are several ways to learn Python basics. I think Google’s Python class will get you up an running pretty quick: developers.google.com/edu/python/ [Python 2]. For more from Google, go to g.co/techdevguide where there are a ton more resources including a link to Google’s Python class and a sampling of other online resources (some of which are repeated below).
MIT offers many free classes that use Python. I haven’t taken their introductory course [Python 3], but based on others I’ve taken I’d recommend this as a place to start.
If you have access, Lynda is a good place to start: https://lynda.psu.edu/ or https://www.library.georgetown.edu/lynda. Just search for Python at the top and you will find all sorts of classes for all sorts of skill levels. Other universities and some employers provide access to Lynda for free so be sure to ask. It can be expensive though, so if you don’t have free access I wouldn’t recommend paying given the free resources out there now.
If you want more structure, you can try out some online classes. My friend who has worked at Google recommends this class from Udacity. I haven’t taken it but there are few programmers I hold in higher regard than Dennis so it’s probably a great place to begin. This Coursera course also looks like it would be pretty good.
I do recommend paying the fee for Coursera courses for two reasons. First, the sunk cost fallacy is legit (at some point I’ll update you on a research project I have on this topic). You will probably finish the class because you paid even though it shouldn’t figure into your calculation once you’ve paid it. I’m a big fan of leveraging my behavioral biases to force myself into good decisions. Second, you get a cool digital certification you can put on your LinkedIn profile. Show the world your nerdy side!
If you are looking for something more interactive, you can try https://www.codecademy.com/learn/learn-python-3 or www.datacamp.com. I’ve also heard good things about www.camelot.ai but I haven’t tried it out.
Once you are familiar with Python you should learn Pandas. It will make your life a lot easier when you are manipulating data pandas.pydata.org/pandas-docs/stable/10min.html
You can get more hands-on examples here: https://programminghistorian.org/en/lessons/?topic=python (Thanks to Kyle Jones for sending this one to me.)
Start competing and learn to code smarter
N^2 gets larger much faster than N * log(N) as N increases. If you can write code that needs fewer calculations for the same outcome, your time to insight will significantly drop. Spending some time learning the basics of computer science will be very helpful. Take this course [Python 2] once you know the Python basics and you will learn many data structures and algorithms that will be unimaginably helpful in the long run.
www.hackerrank.com is a good place to fine tune your skills and compete with friends/the world. You can start learning from there as well if you’d like. They walk you through syntax in some of the easier problems.
www.leetcode.com is very similar to HackerRank. They will have questions that are very common in data science and software engineering interviews.
www.interviewbit.com is another good interview prep option. It has tutorials to help you tighten up some areas where you may need more work.
Learn advanced topics
Neural Networks basically run your life at this point. Go play with one so you can “see” a little more about what they are doing in the background. When you’re done, learn how to code them in Tensorflow [Python 3].
Getting data from the web can be tedious if you are trying to do it manually. If you know a little html you can pretty easily apply Beautiful Soup to download the underlying code and parse it. That’s not always the case because some websites are tricky, but it’s a good place to start.
Some good books
(Side note: Amazon Smile is Amazon, but better.)
https://smile.amazon.com/Data-Science-Scratch-Principles-Python/dp/149190142X [Python 2] This is a great book to teach you more about algorithms and data analytics. You’ll also cover a little bit of syntax.
https://smile.amazon.com/Data-Science-Business-Data-Analytic-Thinking/dp/1449361323 [Python 2] is a light book targeting people wanting to learn about coding for business applications.
Once you are more advanced you can step into SciPy https://smile.amazon.com/Elegant-SciPy-Art-Scientific-Python/dp/1491922877 [Python 2] and TensorFlow https://smile.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291 [Python 2]. Then you’ll be ready to run intense analyses on large datasets.
Learn by doing
Put your skills to use, even if you are a beginner. There are many ways to do this. I personally like http://www.datakind.org/ because it benefits non-profits and governmental organizations that don’t have the time/skills to do some of the work. You can also contribute to something on GitHub if you are feeling collaborative. Finally, if you want to get involved in academic research in your spare time (what is wrong with you?), just let me know and I’ll see if I can find a project for you to work on.