Я работаю над набором данных Kaggle E-Commerce .Чтобы подготовить данные для нейронной сети для прогноза будущих продаж, мне нужно агрегировать количество продаж определенного продукта за каждый день.Мой код сейчас выглядит следующим образом ...
import pandas as pd
df = pd.read_csv('data_date.csv', encoding='cp1252')
df = df.drop(df.columns[[0,3,7,8]], axis=1)
print(df.head(5))
это выдает следующее ...
InvoiceNo StockCode Quantity InvoiceDate UnitPrice
0 536365 85123A 6 2010-12-01 2.55
1 536365 71053 6 2010-12-01 3.39
2 536365 84406B 8 2010-12-01 2.75
3 536365 84029G 6 2010-12-01 3.39
4 536365 84029E 6 2010-12-01 3.39
Теперь моя цель - агрегировать, например, Quantity
из StockCode
Пункт 71053 InvoideDate
2010-12-01.Но это всего лишь пример, мне нужен обзор, сколько позиций каждого StockCode было продано каждый день.
Я перепробовал множество операций groupy
и нашел ответ на SO, который принеся довольно близок к желаемому выводу ...
df["Quantity"] = df.groupby(["InvoiceDate", "StockCode"])["Quantity"].transform(sum)
print(df.head(5))
это дает мне следующий вывод ...
InvoiceNo StockCode Quantity InvoiceDate UnitPrice
0 536365 85123A 454 2010-12-01 2.55
1 536365 71053 33 2010-12-01 3.39
2 536365 84406B 40 2010-12-01 2.75
3 536365 84029G 59 2010-12-01 3.39
4 536365 84029E 551 2010-12-01 3.39
уже выглядит хорошо, но когда я сделал тест с определеннымStockCode
, он по-прежнему помещает один и тот же Quantity
в разные строки и не объединяет его.См. Пример ниже ...
print(df.loc[df['StockCode']=='22632'])
output ...
InvoiceNo StockCode Quantity InvoiceDate UnitPrice
8 536366 22632 233 2010-12-01 1.85
47 536372 22632 233 2010-12-01 1.85
84 536377 22632 233 2010-12-01 1.85
257 536394 22632 233 2010-12-01 1.85
304 536398 22632 233 2010-12-01 2.10
315 536399 22632 233 2010-12-01 1.85
433 536407 22632 233 2010-12-01 1.85
664 536415 22632 233 2010-12-01 2.10
704 536423 22632 233 2010-12-01 2.10
879 536477 22632 233 2010-12-01 2.10
952 536520 22632 233 2010-12-01 2.10
1029 536522 22632 233 2010-12-01 2.10
1066 536522 22632 233 2010-12-01 2.10
1260 536532 22632 233 2010-12-01 2.10
1399 536539 22632 233 2010-12-01 2.10
1441 C536543 22632 233 2010-12-01 2.10
1628 536544 22632 233 2010-12-01 4.21
2139 536561 22632 233 2010-12-01 2.10
2183 536567 22632 233 2010-12-01 2.10
2776 536592 22632 233 2010-12-01 4.21
3130 536601 22632 169 2010-12-02 1.85
Итак, как мне манипулировать данными, чтобы они отображали количество 233 в одной строке, независимо от UnitPrice
и InvoiceNo
?
как это?
InvoiceNo StockCode Quantity InvoiceDate UnitPrice
8 536366 22632 233 2010-12-01 1.85
3130 536601 22632 169 2010-12-02 1.85
также мне было бы интересно, если есть способ сгруппировать Продажи по StockCode
и InvoiceDate
И поразные UnitPrices
?
Заранее спасибо!