I have a data frame with categorical data:
colour direction
1 red up
2 blue up
3 green down
4 red left
5 red right
6
You might find useful mosaic plot from statsmodels. Which can also give statistical highlighting for the variances.
from statsmodels.graphics.mosaicplot import mosaic
plt.rcParams['font.size'] = 16.0
mosaic(df, ['direction', 'colour']);

But beware of the 0 sized cell - they will cause problems with labels.
See this answer for details