We discuss the Fisher von-Mises distribution, including generating random deviates and fitting parameters. This distribution has better support in R than in python. One possible class project would be to write a python package to implement some of the functionality currently only available in R.
## generate data on 2-d circle, plot
import numpy as np
n = 1000
mu, kappa = 1.0, 3.0 # mean and dispersion
s = np.random.vonmises(mu, kappa, n)
import matplotlib.pyplot as plt
from scipy.special import i0
plt.hist(s, 50, normed=True)
x = np.linspace(-np.pi, np.pi, num=51)
y = np.exp(kappa*np.cos(x-mu))/(2*np.pi*i0(kappa))
plt.plot(x, y, linewidth=2, color='r')
plt.show()
## normal jitter is added only for plotting purposes
a = np.cos(s) + np.random.normal(scale=0.05,size=n)
b = np.sin(s) + np.random.normal(scale=0.05,size=n)
plt.plot(a, b,'o', color='black',alpha=0.3)
plt.show()