График плотности предназначен для демонстрации оценки распределения.Чтобы построить график, показывающий плотность почасового спроса, мы действительно ожидаем увидеть множество образцов спроса с отметками времени, то есть по одной строке на выборку.Тогда график плотности будет иметь смысл.
Но в типе данных здесь, где спрос ('cnt') регулярно отбирается и агрегируется за этот период выборки (час), график плотности не имеет прямого значения.Но гистограмма как гистограмма имеет смысл, используя часы в качестве корзин.
Ниже я покажу, как использовать функции панд для создания такого сюжета - очень просто.Для справки я также покажу, как мы могли бы построить график плотности посредством своего рода реконструкции «оригинальных» образцов.
df = pd.read_csv("../data/hour.csv") # load dataset, inc cols hr, cnt, no NaNs
# using the bar plotter built in to pandas objects
fig, ax = plt.subplots(1,2)
df.groupby('hr').agg({'cnt':sum}).plot.bar(ax=ax[0])
# reconstructed samples - has df.cnt.sum() rows, each one containing an hour of a rental.
samples = np.hstack([ np.repeat(h, df.cnt.iloc[i]) for i, h in enumerate(df.hr)])
# plot a density estimate
sns.kdeplot(samples, bw=0.5, lw=3, c="r", ax=ax[1])
# to make a useful comparison with a density estimate, we need to have our bar areas
# sum up to 1, so we use groupby.apply to divide by the total of all counts.
tot = float(df.cnt.sum())
df.groupby('hr').apply(lambda x: x['cnt'].sum()/tot).plot.bar(ax=ax[1], color='C0')
![distribution estimates](https://i.stack.imgur.com/XX7NE.png)
Спрос на велосипеды ночью кажется низким ... Но также очевидно, что они, вероятно, используются для поездок на работу,с пиками в часы 8 утра и 5-6 вечера.