首页 > 解决方案 > 冗余稀疏 (3NF) 数据结构

问题描述

鉴于以下事件表:

+---------+-------------+----------+----------+-----------+
| Case ID | Activity ID | Resource | Firm     | Timestamp |
+---------+-------------+----------+----------+-----------+
| 1       | A           | Alice    | BMW      | 20:21     |
+---------+-------------+----------+----------+-----------+
| 1       | B           | Bob      | BMW      | 20:24     |
+---------+-------------+----------+----------+-----------+
| 2       | A           | Alice    | Mercedes | 10:45     |
+---------+-------------+----------+----------+-----------+
| 2       | C           | Bob      | Mercedes | 11:23     |
+---------+-------------+----------+----------+-----------+
| 3       | B           | Alice    | Mercedes | 11:00     |
+---------+-------------+----------+----------+-----------+
| 3       | C           | Bob      | Mercedes | 23:45     |
+---------+-------------+----------+----------+-----------+

我们可以观察到,如果我们按 对条目进行分组Case ID,我们最终会得到特定于每个事件的信息Case ID(例如Firm),以及特定于每个事件的信息(例如Activity IDResourceTimestamp)。

将其全部存储在当前表中,重复这些值BMW并且Mercedes至少一次。现在对于每个有很多事件的数据集Case ID,我们会有更多的冗余信息。

我想要的是这个表的一种稀疏表示,我不存储重复项,但可能只引用它们。我仍然希望保留过滤和排序功能,例如熊猫数据框等完整表格带来的功能。

我的问题是,如果有一个已经建立的内存数据结构和/或库已经实现了这样的东西。也许熊猫已经这样做了,但我还没有弄清楚。

感谢您的任何帮助或指点。

更新 1

正如@HighPerformanceMark 指出的那样,您可以将我的要求表述为类似于一组 3 个表的数据结构。一个用于特定于 的属性Case ID,另一个用于特定于事件的属性,最后一个表将键从前者映射到后者。

我最初的问题仍然存在:是否已经有我可以实现的有效数据结构,或者是否有适合我的用例的库。如果我大胆猜测一下,我可以想象 3 个 pandas 数据结构的组合,如上一段所述使用,但我不确定执行前面提到的操作(过滤)的效率如何。

标签: pythonarrayspandasdataframedata-structures

解决方案


推荐阅读