透视表数据结构

Dav*_*542 0 c c++ java pivot-table data-structures

可以使用什么类型的数据结构(或数据结构?)来存储可以访问数据的二维数据透视表?例如,让我们从 Excel 复制以下内容:

在此处输入图片说明

如果数据都在一维层次结构中——也就是说,它是组 > 产品 > 年份 > 价值,我们可以按照以下方式做一些事情:

{
    "Electronics": {
        "(all)": {
            "Year": {
                "2018": 2,
                "2019": 1,
                "Grand Total": 3
            }
        },
        "Computer": {
            "Year": {
                "2018": 1,
                "2019": 0,
                "Grand Total": 1
            }
        },
        "Phone": {
            "Year": {
                "2018": 1,
                "2019": 1,
                "Grand Total": 2
            }
        }
    }
}
        
Run Code Online (Sandbox Code Playgroud)

然后我可以通过执行以下操作访问电子 > 计算机 > 2018 的价值:

{
    "Electronics": {
        "(all)": {
            "Year": {
                "2018": 2,
                "2019": 1,
                "Grand Total": 3
            }
        },
        "Computer": {
            "Year": {
                "2018": 1,
                "2019": 0,
                "Grand Total": 1
            }
        },
        "Phone": {
            "Year": {
                "2018": 1,
                "2019": 1,
                "Grand Total": 2
            }
        }
    }
}
        
Run Code Online (Sandbox Code Playgroud)

但是我想不出如何将其放入二维多维数组之外的二维数据结构中,除了能够在某个位置检索值(和我需要存储大量元数据才能知道存储在哪个位置)。

什么是合适的数据结构?我已经标记了这个 Java、C、C++——任何语言都可以,我对实际的数据结构更感兴趣。

ral*_*htp 5

在 python 中,分层索引用于实现数据透视表。例如在 python pandas 数据透视表中是多索引数据帧。数据帧的实现在https://github.com/pandas-dev/pandas/blob/v0.22.0/pandas/core/frame.py#L236-L6142MultiIndex实施于pandas.core.indexes.multi.py

( https://github.com/pandas-dev/pandas/blob/8dbb593d0c94107ec8b91a4723c40af537807ca4/pandas/core/indexes/multi.py#L179 )

对于 C++ 和 Java,也有分层索引库,即boost::multi_index,在 stackoverflow 中multi-index有它自己的标记。

也许检查boost::multi_index示例:https : //www.boost.org/doc/libs/1_62_0/libs/multi_index/doc/examples.html

Java 中的多索引:在某处是否有Java的 boost::multi_index 等价物?

https://www.scss.tcd.ie/Owen.Conlan/4d2/4D2-9&10_Multi-Level_Indexes_v1.02.pdf 中https://www.cs.uct.ac.za/mit_notes/database/htmls/chp11 .html#multilevel-indexeshttp://theteacher.info/index.php/architecture-data-comms-and-applications-unit-5/4-organisation-and-structure-of-data/all-topics/3940 -multi-level-indexes是对文件中的多索引(文件系统结构)和搜索算法的分析

python中用于处理多级索引的命令是 iestackunstack

https://nikgrozev.com/2015/07/01/reshaping-in-pandas-pivot-pivot-table-stack-and-unstack-explained-with-pictures/https://www.xplenty.com/glossary /什么是分层索引/