Посчитайте частоту и участок - PullRequest
1 голос
/ 02 апреля 2020

Мне нужно было бы построить частоту пунктов по дате. Мой CSV содержит три столбца: один для Date, один для Name & Surname и другой для Birthday. Я заинтересован в графике частоты людей, записанных на дату. Мой ожидаемый результат будет:

         Date  Count
0   01/01/2018      9
1   01/02/2018     12
2   01/03/2018      6
3   01/04/2018      4
4   01/05/2018      5
..         ...    ...
..  02/27/2020    122
..  02/28/2020     84

Таблица выше была найдена следующим образом:

by_date = df.groupby(df['Date']).size().reset_index(name='Count')

Date - это столбец в моем CSV-файле, но не Count. Это объясняет причину, по которой у меня возникают трудности при рисовании линейного сюжета.

Как отобразить частоту в виде списка чисел / столбца?

1 Ответ

2 голосов
/ 02 апреля 2020

Хотя это и не обязательно, вам следует преобразовать столбец Date в Timestamp для упрощения анализа на следующих этапах:

df['Date'] = pd.to_datetime(df['Date'])

Теперь к вашему вопросу. Для подсчета многих рождений в день вы можете использовать value_counts:

births = df['Date'].value_counts()

Но вам даже не нужно делать это для построения гистограммы! Используйте hist:

import matplotlib.dates as mdates
year = mdates.YearLocator()
month = mdates.MonthLocator()
formatter = mdates.ConciseDateFormatter(year)

ax = df['Date'].hist()
ax.set_title('# of births')
ax.xaxis.set_major_locator(year)
ax.xaxis.set_minor_locator(month)
ax.xaxis.set_major_formatter(formatter)

Результат (из случайных данных):

Histogram of birth

...