如何高效統計大型商品數據集并按總數量排序?

如何高效統計大型商品數據集并按總數量排序?

利用python高效處理大型商品數據集統計

本文介紹如何高效處理大型商品數據集,統計相同商品(標題、顏色、尺碼)的數量,并按商品總數量進行降序排列。原始數據包含商品標題、顏色、尺碼和數量,目標是生成一個新的數據集,包含商品組合數量和每個商品標題的總數量,最終結果按總數量降序排列

問題描述:

已知一個包含商品信息的列表data,其結構為(‘標題’, ‘顏色’, ‘尺碼’, ‘數量’)。我們需要將其轉換為另一個列表result,result的結構為(‘標題’, ‘顏色’, ‘尺碼’, ‘該組合數量’, ‘標題總數量’),并按標題總數量降序排列。

高效解決方案:

Python的collections.Counter對象是解決此問題的理想工具。它可以高效地統計序列中每個元素的出現次數,避免了低效的循環遍歷。

以下代碼展示了如何使用Counter實現數據轉換和排序:

from collections import Counter  data = [     ('連衣裙', '白色', 's', 1),     ('連衣裙', '白色', 's', 1),     ('連衣裙', '黑色', 'm', 1),     ('褲子', '白色', 's', 1), ]  # 使用Counter統計每個(標題, 顏色, 尺碼)組合的數量 item_counts = Counter(tuple(item[:-1]) for item in data)  # 使用Counter統計每個標題的總數量 title_counts = Counter(item[0] for item in data)  # 構建結果列表 result = [(title, color, size, item_counts[(title, color, size)], title_counts[title])           for title, color, size, _ in data]  # 按標題總數量降序排序 result.sort(key=lambda x: (-x[4], x[0], x[1], x[2]))  print(result)

這段代碼首先使用Counter分別統計商品組合和標題的出現次數。然后,它構建result列表,包含每個商品的組合數量和標題總數量。最后,它使用sort函數并自定義key函數,按照標題總數量降序排列結果。此方法即使面對數千條記錄的大型數據集也能保持高效。

輸出結果:

[('連衣裙', '白色', 's', 2, 3), ('連衣裙', '黑色', 'm', 1, 3), ('褲子', '白色', 's', 1, 1)]

該方案充分利用了Counter的高效性,避免了嵌套循環,從而能夠有效處理大型數據集的統計需求。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享