#python #matplotlib #seaborn #jupyter
#python #matplotlib #сиборн #jupyter
Вопрос:
У меня есть df в формате:
date number category
2014-02-02 17:00:00 4 red
2014-02-03 17:00:00 5 red
2014-02-04 17:00:00 4 blue
2014-02-05 17:00:00 4 blue
2014-02-06 17:00:00 4 red
2014-02-07 17:00:00 4 red
2014-02-08 17:00:00 4 blue
...
Как мне сгруппироваться по дням недели и получить общее количество «number» в этот день недели, Чтобы у меня был df из 7 элементов, понедельник, вторник и т. Д., И Общее количество «number» в этот день. С помощью этого я хочу создать гистограмму с числом на y и днем недели на x.
Ответ №1:
Еще раз прочитав ваш вопрос, я понимаю, почему @Quang Hoang ответил так, как он ответил. Не уверен, что это то, что вы хотели, или если ниже:
df['date'] = pd.to_datetime(df['date'], infer_datetime_format=True)
df['day'] = df['date'].apply(lambda x: x.day_name())
counts = df.groupby('day')['Number'].sum()
plt.bar(counts.index, counts)
plt.show()
Ответ №2:
Вы можете использовать dt.day_name()
для извлечения названия дня, а затем использовать pd.crosstab
для подсчета числа:
pd.crosstab(df['date'].dt.day_name(),df['number'])
Вывод:
number 4 5
date
Friday 1 0
Monday 0 1
Saturday 1 0
Sunday 1 0
Thursday 1 0
Tuesday 1 0
Wednesday 1 0
И для построения гистограммы вы можете связать приведенное выше с .plot.bar()
: