gpt4 book ai didi

python - panda的多索引的好处?

转载 作者:IT老高 更新时间:2023-10-28 21:53:51 27 4
gpt4 key购买 nike

所以我了解到我可以使用 DataFrame.groupby 而不需要 MultiIndex 来进行子采样/横截面。

另一方面,当我在 DataFrame 上有一个 MultiIndex 时,我仍然需要使用 DataFrame.groupby 来进行子采样/横截面。

那么,除了在打印时非常有用且漂亮地显示层次结构之外,MultiIndex 还有什么用处?

最佳答案

在 pandas 0.4 版本中引入了分层索引(也称为“多级”索引)。

这为一些非常复杂的数据分析和操作打开了大门,特别是对于处理更高维度的数据。从本质上讲,它使您能够在二维表格结构 (DataFrame) 中有效地存储和操作任意高维数据。

想象一下像这样使用 MultiIndex 构造一个数据框:-

import pandas as pd
import numpy as np

np.arrays = [['one','one','one','two','two','two'],[1,2,3,1,2,3]]

df = pd.DataFrame(np.random.randn(6,2),index=pd.MultiIndex.from_tuples(list(zip(*np.arrays))),columns=['A','B'])

df # This is the dataframe we have generated

A B
one 1 -0.732470 -0.313871
2 -0.031109 -2.068794
3 1.520652 0.471764
two 1 -0.101713 -1.204458
2 0.958008 -0.455419
3 -0.191702 -0.915983

这个df只是一个二维的数据结构

df.ndim

2

但是我们可以把它想象成一个 3 维数据结构。

  • one1 与数据 -0.732470 -0.313871
  • one2 与数据 -0.031109 -2.068794
  • one with 3 with data 1.520652 0.471764

A.k.a.:“在二维表格结构中有效地存储和操作任意高维数据”

这不仅仅是一个“漂亮的展示”。由于我们现在有一个层次索引,因此它具有易于检索数据的好处。

例如。

In [44]: df.ix["one"]
Out[44]:
A B
1 -0.732470 -0.313871
2 -0.031109 -2.068794
3 1.520652 0.471764

只会为属于“one”的数据组提供一个新的数据框。

我们可以通过这样做进一步缩小我们的数据选择范围:-

In [45]: df.ix["one"].ix[1]
Out[45]:
A -0.732470
B -0.313871
Name: 1

当然,如果我们想要一个特定的值,这里有一个例子:-

In [46]: df.ix["one"].ix[1]["A"]
Out[46]: -0.73247029752040727

因此,如果我们有更多索引(除了上面示例中显示的 2 个索引),我们基本上可以深入并选择我们真正感兴趣的数据集,而无需 groupby

我们甚至可以从数据框中获取横截面(行或列)...

按行:-

In [47]: df.xs('one')
Out[47]:
A B
1 -0.732470 -0.313871
2 -0.031109 -2.068794
3 1.520652 0.471764

按列:-

In [48]: df.xs('B', axis=1)
Out[48]:
one 1 -0.313871
2 -2.068794
3 0.471764
two 1 -1.204458
2 -0.455419
3 -0.915983
Name: B

关于python - panda的多索引的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com