First, I think its great that you are moving towards open source, flexible data analysis tools. This will really help your student's think about what they are doing and let them be more creative. However, with that comes a price: your student's need a modicum of comfort or ability to program or think like a programmer to use these tools...there are no buttons to just click on and pretty tables to view data. Its all through programming commands.
Here are the books that I've found must useful.
Note: Unless noted otherwise, all the resources below have been made freely available by their authors, but they are also available for purchase from places like Amazon.com
R Programming Language Resources
- Books by Hadley Wickham (a Core R Team member who has developed a lot of very useful utilities for R)
- R for Data Science this is focused on using R for statistics
- Advanced R this is focused on R as a programming language, not on how to do statistics.
- CRAN Task Views this is a page maintained by the R Project Team that thematically organizes the myriad of packages in R.
- Pros: Well organized and has decent descriptions and links to many packages.
- Cons: Not exhaustive...more experimental or relatively new packages are not always there (however, this may not be a bad thing)
- Cookbook for R takes a "just tell me what to do" approach to many common tasks in R.
Python Programming Resources
Note: There are currently two versions of python out there: Python 2 and Python 3. Normally, the developers try to maintain backwards compatibility, but they deviated from that principle for Python 3. The vast majority of Python 2 code will run with Python 3, but there are a few gotchas. I've included a reference that I think does a good job describing both languages. I'd recommend having your students use Python 3, as it's where the language is going.
- Official Python 3 Documentation -- Decently written, comprehensive overview of Python's standard library.
- Core External Packages for Data Analysis: Unlike R, Python's data science toolkit is comprised of a few "mega packages" as opposed to many small, focused packages. Also, these packages almost have a life of their own, with their own conferences and generally well-documented, decent looking web pages (unlike R's sparse help files).
- Scipy.org: Not a package, but the SciPy organization makes most of the packages below.
- Numpy: Convient array-like objects that are more user-friendly than Python base arrays for numerical computations.
- Scipy: The package for scientific computing...has tons of stuff from calculus to statistics to image processing and linear algebra and optimization and....
- Scikit-learn: Scippy has a nubmer of "kits" that add additional functionality. This one has a bunch of cool machine learning algorithms with generally user-friendly APIs (so they are more accessible to non-ML experts). Since machine learning is pretty hot right now, and the idea of AI and computers learning though statistics is just plain cool, even a brief foray into this area would be well received by students (e.g., lots of classification algorithms boil down to a linear model, albeit in a transformed space)
- Pandas: Major contribution is the DataFrame, which is meant to have similar functionality to R's popular DataFrame. Has lots of nice data import/export features too (e.g., Pandas.DataFrame.from_csv("filename.csv" creates a nice data from right from a local csv)
-
- Matplotlib: Emulates a lot of MATLAB's plotting functionality. again, with a generally user-friendly API.
- Seaborn: This is a package that uses matplotlib behind the scenes, but it makes a lot of the choices for you regarding formatting and display...generally good choices ;-) I use it a lot because I don't like fiddling with tons of parameters.
- (NOT FREE) Python Essential Reference by David Beasley. This is a very concise (but well written) reference manual on Python programming (note, does not have a statistics focus). However, it does a good job pointing out the quirks in the language and how it's internals work, so Python will seem less mysterious.
New(er) Data Formats
It may also be helpful for you to briefly describe how to use JSON and YAML data formats. They aren't super difficult to learn, but both R and Python can parse these files into useful data structures and they allow for expressing more complex data (like nested lists). It also helps if your students aren't tied to CSV files, useful as they may be for basic statistics.
- JSON: Less "human readable" but widely used.
- YAML: More readable and a person favorite of mine for developing configuration files and expressing complex data.
Finally: Done underestimate YouTube....lots of great stuff related to above, and its generally easier to digest a 15 minute example.
As a practicing data scientist, I regularly use all the above items, and they have helped me learn a lot of techniques.
Hope it helps you and your students.
------------------------------
Michael Beyer PE,CAP
Data Scientist