首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分析数据集的增减

分析数据集的增减
EN

Stack Overflow用户
提问于 2019-04-06 03:44:49
回答 2查看 37关注 0票数 1

我有一个以下形式的数据集:

代码语言:javascript
复制
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个产品和4个月的数据。我想了解产品集是如何随着时间的推移而变化的。这显然很容易计算每天的计数,看到我在1月2日失去了一个产品,并在Jan4th上获得了一个产品,但随后我不知道它是什么产品。

有没有更系统的方法来解决这个问题?理想情况下,输出将向我显示日期列表以及当天丢弃/添加了哪些产品,即:

代码语言:javascript
复制
Date        |   Product   |   Type
2019-01-02  |   456       |   Out
2019-01-03  |   456       |   In
2019-01-04  |   789       |   In

我以前考虑过产品的min(日期),max(日期),但产品可以删除和重复添加,我不会以这种方式来回捕获。

可用的环境包括Python、SQL和Excel。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-06 03:56:09

要生成缺少条目的列表,您可以使用CROSS JOIN生成products和dates的笛卡尔积,并使用它通过LEFT JOIN反模式来检测表中的间隙,例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
| product | date       |
| ------- | ---------- |
| 789     | 2019-01-01 |
| 456     | 2019-01-02 |
| 789     | 2019-01-02 |
| 789     | 2019-01-03 |
票数 0
EN

Stack Overflow用户

发布于 2019-04-06 03:59:06

这是一个Python解决方案。按日期对产品进行分组,并将其转换为集合。然后,计算两种方式的运行集差异。

代码语言:javascript
复制
as_set = df.groupby('Date')['Product'].apply(set)
changes = pd.concat([as_set - as_set.shift(),
                     as_set.shift() - as_set], axis=1).dropna()
changes.columns = "In", "Out"
#               In    Out
#Date                    
#2019-01-02     {}  {456}
#2019-01-03  {456}     {}
#2019-01-04  {789}     {}

您可以进一步消除null条目:

代码语言:javascript
复制
#import numpy as np
#changes.replace(set(), np.nan).stack()
#Date           
#2019-01-02  Out    {456}
#2019-01-03  In     {456}
#2019-01-04  In     {789}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55542399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档