У меня есть список ежедневных транзакционных данных в следующем формате:Трансформации сделок Numpy массива
люди, Артикул, transDate, количество
Я хотел бы суммировать столбец суммы лица и Артикулом и преобразуйте мои результаты в массив numpy. Я отбрасываю поле даты. У меня есть 1,5 ГБ данных, поэтому более эффективно, я могу сделать это, тем лучше ...
Вот небольшой пример того, как я хотел бы алгоритм, чтобы пойти:
print input
A, 1, 2013-10-10, .5
A, 1, 2013-10-18, .75
A, 2, 2013-10-20, 2.5
B, 1, 2013-10-09, .25
B, 2, 2014-10-20, .8
myArray = transform(input)
print myArray
[[1.25,2.5],[.25,.8]]
Любые мысли о том, как эффективно суммировать эти записи, будем очень благодарны!
EDIT: Вот мой код до сих пор:
from collections import defaultdict
dictObj = {}
rawData = 'subset.txt'
with open(rawData) as infile:
for line in infile:
parts = line.split(',')
key = (parts[0],parts[1])
val = float(parts[3])
if key in dictObj:
dictObj[key] += val
else:
dictObj[key] = val
print dictObj
Вы, привязано к 'numpy'? Я нахожу, что ['pandas'] (http://pandas.pydata.org) имеет тенденцию быть более удобным для такого рода операций с групповой суммой. – DSM
Пожалуйста, покажите, что вы пробовали до сих пор и как оно недостаточно эффективно. Обратите внимание: если у вас есть файл размером 1,5 ГБ, это не очень большой объем данных, поэтому даже субоптимальное решение будет работать в разумные сроки. – leeladam
Да, пойдите для Pandas или бросьте его в базу данных и используйте какой-то хороший старомодный SQL – YXD