Also Consider pd.pivot_table() Crosstab Or Pivot Table (In Pandas) Deciding When to Use Which Two-way tabulation with col option that normalizes by column tab year race, col pd.crosstab(exfile['year'], exfile['race']).apply(lambda r: r/r.sum(), axis=0) Three-way tabulation table ...