Счет может иметь смысл только для некоторых корзин. Насколько я знаю, distplot от Seaborn может показывать гистограмму с количеством отсчетов, но как только вам также понадобится kde, и гистограмма, и kde уменьшаются, чтобы получить общую площадь 1.
Чтобы получить график, аналогичный заданному, стандартный matplotlib может нарисовать kde, рассчитанное с помощью Scipy. Чтобы получить счетчик, нужно решить, каким образом данные будут сгруппированы, так как счетчик зависит от размера бина связанной гистограммы. Простейшим способом было бы иметь одну ячейку на единицу по оси X (то есть по одной на год).
Вот пример кода. Сначала генерируются случайные данные теста. Затем составляются две гистограммы с ячейками в год. На втором графике kde для тех же данных строятся и масштабируются в соответствии с размером набора данных.
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
cdmx_edad = np.random.chisquare(15, 10000)+10
ed_sup_edad = np.random.chisquare(20, 5000)+10
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
bins = np.arange(10,61,1)
ax1.hist(cdmx_edad, bins=bins, color='r', alpha=0.4, label='CDMX edad')
ax1.hist(ed_sup_edad, bins=bins, color='b', alpha=0.4, label='Educación superior edad')
ax1.legend()
cdmx_kde = stats.gaussian_kde(cdmx_edad)
ed_sup_kde = stats.gaussian_kde(ed_sup_edad)
x = np.linspace(10,61,500)
cdmx_curve = cdmx_kde(x)*cdmx_edad.shape[0]
ed_sup_curve = ed_sup_kde(x)*ed_sup_edad.shape[0]
# ax2.plot(x, cdmx_curve, color='r')
ax2.fill_between(x, 0, cdmx_curve, color='r', alpha=0.4, label='CDMX edad')
# ax2.plot(x, ed_sup_curve, color='b')
ax2.fill_between(x, 0, ed_sup_curve, color='b', alpha=0.4, label='Educación superior edad')
ax2.legend()
plt.show()