我试图使用python脚本从庞大的数据库中获取数据。现在我有兴趣使用交易ID通过购物篮提取数据,但我得到了非常奇怪的结果,例如9000元素的平均购物袋大小以及商店中每个购物篮的烈酒。
我有一个想法,也许在阅读数据时,pandas会出于某种原因使用错误的列,因为如果按照user_id而不是transaction_id对它们进行排序,那么篮子大小就有意义了。
这可能吗?阅读csv时会出现问题吗?
这是处理按transaction_id排序的代码部分。它适用于较小的数据集,但对巨大的数据感到疯狂。但也许我有一个愚蠢的错误,我无法看到,我真的很感谢有人指出。
dt = pd.read_csv("../data/DataMining_with_cl_nr.txt", sep=";", engine='python',usecols=['TSEKK_ID', 'BARCODE','D_INVENTSITE_ID'], chunksize=100000)
df = pd.concat(dt)
def rec_dd():
return defaultdict(rec_dd)
lengths = []
shopdic = rec_dd()
for i in range(1,48):
subset = df.loc[df['D_INVENTSITE_ID'] == i]
if not subset.empty:
transactions = list(set(subset['TSEKK_ID']))
baskets = []
for n in range(len(transactions)):
check = transactions[n]
basket = list(subset.loc[subset['TSEKK_ID'] == check]['BARCODE'])
baskets.append(basket)
length = [len(x) for x in baskets]
lengths.append(length)
shopdic[i] = baskets
else:
shopdic[i] = []