Группировка по гистограмме дня недели

#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() :

введите описание изображения здесь