【发布时间】:2021-02-26 11:09:45
【问题描述】:
我想知道numpy 是否可用于构建最基本的立方体模型,其中存储所有交叉组合及其计算值。
我们以下面的数据为例:
AUTHOR BOOK YEAR SALES
Shakespeare Hamlet 2000 104.2
Shakespeare Hamlet 2001 99.0
Shakespeare Romeo 2000 27.0
Shakespeare Romeo 2001 19.0
Dante Inferno 2000 11.6
Dante Inferno 2001 12.6
并且能够构建类似的东西:
YEAR TOTAL
AUTHOR BOOK 2000 2001
(ALL) (ALL) 142.8 130.6 273.4
Shakespeare (ALL) 131.2 118.0 249.2
Dante (ALL) 11.6 12.6 24.2
Shakespeare Hamlet 104.2 99.0 203.2
Shakespeare Romeo 27.0 19.0 46.0
Dante Inferno 11.6 12.6 24.2
我希望使用 meshgrid 之类的东西可以让我达到 75%。基本上,我想看看是否可以使用numpy(不是pandas)构建所有预计算值的结构来构建结构,以便我可以检索所有可能组合的上述结果。为了简单起见,我们只考虑SUM 作为唯一可能的计算。也许这是一种圆滑的询问方式,但是numpy 可以成为这样做的骨干,还是我需要使用其他东西?
最后,如果在numpy 中不可能,它如何存储在 MDA 中?
【问题讨论】:
-
什么是“立方体模型”?您可以在此处链接一些参考资料吗?
-
@KarlKnechtel 很难用几句话来概括,但基本上它就像 excel 中的数据透视表,其中“维度”(例如作者、书籍和年份)用于分组数据,然后“度量”用于计算每个维度组合的某些内容。但简而言之,它是一个“数据透视表”。这是维基百科,它有一个相当不错的摘要:en.wikipedia.org/wiki/OLAP_cube。
-
numpy 旨在处理非结构化数字类型。我原以为这会自动取消它的资格
-
这看起来更像是 Pandas 的工作,它建立在 NumPy 之上。你是致力于 NumPy 还是可以选择?
-
@Timus 我敢打赌 pandas 可以很容易地做到这一点,但我希望看到一个比没有那么多抽象的级别更低的级别(pandas.pivot 是一个好的开始,我非常使用它一点)。
标签: python numpy multidimensional-array olap olap-cube