An IPython Notebook is one of the best ways I’ve seen to share data analysis.

On one end of the spectrum, you can share your code. Even if it is well commented, it can be difficult to really understand what is happening and replicate or modify it. On the other end of the spectrum, you can produce a write up. Even if it contains some code, graphs, and a clear description, it is not fully trustable without all of the code and data.

Some folks produce a write up and then link to the code. This is good. Even better, from what I have seen, is an IPython notebook. It combines the best of both worlds: descriptive text explaining what is happening, all of the code and outputs, and an environment that enables you to reproduce the analysis.