我有一个以下形式的数据集:
Product | Date
123 | 2019-01-01
456 | 2019-01-01
123 | 2019-01-02
123 | 2019-01-03
456 | 2019-01-03
123 | 2019-01-04
456 | 2019-01-04
789 | 2019-01-04
这只是一个简化版本。全套有约 300 个产品和四个月的数据。我想了解产品集如何随着时间的推移而变化。计算每天的数量显然很容易,可以看到我在 1 月 2 日损失了一件产品,在 1 月 4 日获得了一件产品,但随后我不知道那是什么产品。
有没有更系统的方法来解决这个问题?理想情况下,输出会向我显示日期列表以及当天删除/添加的产品,即:
Date | Product | Type
2019-01-02 | 456 | Out
2019-01-03 | 456 | In
2019-01-04 | 789 | In
我之前考虑过产品的最小(日期)、最大(日期),但产品可能会重复删除和添加,我不会以这种方式来回捕获它。
可用环境包括 Python、SQL 和 Excel。
谢谢
最佳答案
要生成缺失条目的列表,您可以使用 CROSS JOIN
生成 product
和 date
的笛卡尔积,然后使用它使用 LEFT JOIN
反模式检测表中的间隙,例如:
SELECT p.product, d.date
FROM
(SELECT DISTINCT product FROM mytable) p
CROSS JOIN (SELECT DISTINCT date from mytable) d
LEFT JOIN mytable t ON t.product = p.product AND t.date = d.date
WHERE t.product IS NULL
| product | date |
| ------- | ---------- |
| 789 | 2019-01-01 |
| 456 | 2019-01-02 |
| 789 | 2019-01-02 |
| 789 | 2019-01-03 |
关于python - 分析数据集的增减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542399/