Я взял свою серию и привел ее к столбцу datetime dtype = datetime64[ns]
(хотя требуется только дневное разрешение ... не знаю, как это изменить).
import pandas as pd
df = pd.read_csv('somefile.csv')
column = df['date']
column = pd.to_datetime(column, coerce=True)
но построение графика не работает:
ipdb> column.plot(kind='hist')
*** TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64')
Я хотел бы построить гистограмму, которая просто показывает количество дат по неделям, месяцам или годам. .
Неужто есть способ сделать это pandas
?
Ответы:
Учитывая этот df:
и, если это еще не так:
Чтобы показать количество дат по месяцам:
.dt
позволяет получить доступ к свойствам datetime.Что даст вам:
Вы можете заменить месяц на год, день и т. Д.
Например, если вы хотите различать год и месяц, просто выполните:
Который дает:
Вы этого хотели? Это понятно ?
Надеюсь это поможет !
источник
date
илиDate
вот имена столбцов, поэтому, если ваш столбец с датами называется foo, это будет:df.foo.dt.month
groupby
сочетания двух атрибутов данных столбца (например, года и даты)?Я думаю, что ресамплинг может быть тем, что вы ищете. В вашем случае сделайте:
Это только подсчет, а не сюжет, поэтому вам нужно будет создать свои собственные сюжеты.
См. Этот пост для получения более подробной информации о документации resample pandas resample documentation
Я столкнулся с аналогичными проблемами, как и вы. Надеюсь это поможет.
источник
how
устарела. Новый синтаксисdf.resample('1M').count()
Визуализированный пример
Пример кода
источник
Мне удалось обойти это, (1) построив график с помощью matplotlib вместо прямого использования фрейма данных и (2) используя
values
атрибут. См. Пример:Это не работает, если я не использую
values
, но я не знаю, почему это работает.источник
Вот решение, когда вы просто хотите получить гистограмму, как вы ожидаете. Это не использует groupby, но преобразует значения datetime в целые числа и изменяет метки на графике. Можно было бы сделать некоторые улучшения, чтобы переместить метки галочки в ровные места. Также с подходом возможен график оценки плотности ядра (и любой другой график).
источник
Я думаю, что для решения этой проблемы вы можете использовать этот код, он преобразует тип даты в типы int:
только для получения даты вы можете добавить этот код:
источник
У меня просто были проблемы с этим. Я полагаю, что, поскольку вы работаете с датами, вы хотите сохранить хронологический порядок (как это сделал я).
Обходной путь тогда
Пожалуйста, если кто-нибудь знает способ получше, сообщите об этом.
РЕДАКТИРОВАТЬ: для Джин выше, вот образец данных [я произвольно выбрал из полного набора данных, следовательно, тривиальные данные гистограммы.]
Вывод:
источник
Все эти ответы кажутся слишком сложными, по крайней мере, с «современными» пандами это две строчки.
источник
DataFrame
, но не если все, что у вас есть, этоSeries
. Не могли бы вы добавить примечание по этому делу?