Сводные данные за день по месяцам и дополнительный столбец - PullRequest
0 голосов
/ 24 мая 2019

У меня есть DataFrame для хранения ежедневных данных, как показано ниже:

   Date        Product Number  Description        Revenue
2010-01-04       4219-057       Product A        39.299999    
2010-01-04       4219-056       Product A        39.520000
2010-01-04       4219-100       Product B        39.520000
2010-01-04       4219-056       Product A        39.520000
2010-01-05       4219-059       Product A        39.520000
2010-01-05       4219-056       Product A        39.520000
2010-01-05       4219-056       Product B        39.520000
2010-02-08       4219-123       Product A        39.520000
2010-02-08       4219-345       Product A        39.520000
2010-02-08       4219-456       Product B        39.520000
2010-02-08       4219-567       Product C        39.520000
2010-02-08       4219-789       Product D        39.520000

(Номер продукта просто для того, чтобы дать представление) То, что я собираюсь сделать, это объединить их с ежемесячными данными. Что-то вроде:

Date        Description        Revenue
2010-01-01    Product A        157.85000 (Sum of all Product A in Month 01)    
              Product B        79.040000
              Product C        00.000000
              Product D        00.000000
2010-02-01    Product A        39.299999 (Sum of all Product A in Month 02)   
              Product B        39.520000
              Product C        39.520000
              Product D        39.520000  

Проблема в том, что у меня 500+ продуктов на каждый месяц

Я новичок в python и не знаю, как это реализовать. В настоящее время я использую

import pandas as pd
import numpy as np
import matplotlib
%matplotlib inline

data.groupby(['DATE','REVENUE']).sum().unstack()

, но не группируйте его с продуктами.

Как я могу это реализовать?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Преобразовать «Дата» в datetime, затем использовать groupby и sum:

# Do this first, if necessary.
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

(df.groupby([pd.Grouper(key='Date', freq='MS'), 'Description'])['Revenue']
   .sum()
   .reset_index())

        Date Description     Revenue
0 2010-01-01           A  197.379999
1 2010-01-01           B   79.040000
2 2010-02-01           A   79.040000
3 2010-02-01           B   39.520000
4 2010-02-01           C   39.520000
5 2010-02-01           D   39.520000

Частота «MS» указывает группировать по датам и устанавливать смещение на начало каждогомесяц.

0 голосов
/ 24 мая 2019

Используйте следующий код:

data.groupby ([ 'Дата', 'Описание']) [ 'Доход']. Сумма ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...