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++——任何语言都可以,我对实际的数据结构更感兴趣。
在 python 中,分层索引用于实现数据透视表。例如在 python pandas 数据透视表中是多索引数据帧。数据帧的实现在https://github.com/pandas-dev/pandas/blob/v0.22.0/pandas/core/frame.py#L236-L6142。MultiIndex实施于pandas.core.indexes.multi.py
对于 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-indexes和http://theteacher.info/index.php/architecture-data-comms-and-applications-unit-5/4-organisation-and-structure-of-data/all-topics/3940 -multi-level-indexes是对文件中的多索引(文件系统结构)和搜索算法的分析
python中用于处理多级索引的命令是 iestack和unstack:
https://nikgrozev.com/2015/07/01/reshaping-in-pandas-pivot-pivot-table-stack-and-unstack-explained-with-pictures/,https://www.xplenty.com/glossary /什么是分层索引/
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |