Python Pandas Panel


Panel是一个三维数据容器。Panel data一词来自于计量经济学,部分原因是熊猫的名字--pan(el)-da(ta)-s。

3 个轴的名称旨在为描述涉及Panel data的操作提供一些语义含义。

他们是:

  • items:axis 0,每一项对应一个里面包含的DataFrame。

  • major_axis:axis 1,是每个DataFrames的索引(行)。

  • minor_axis:axis 2,是每个DataFrames的列。

pandas.Panel()


可以使用以下构造函数创建Panel:

pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)

构造函数的参数如下:

范围描述
data数据采用各种形式,如 ndarray、系列、地图、列表、字典、常量以及另一个 DataFrame
itemsaxis=0
major_axisaxis=1
minor_axisaxis=2
dtype每列的数据类型
copy复制数据,默认false

创建 Panel


可以使用多种方式创建Panel,例如:

  • ndarrays

  • DataFrames 的字典

用 3D ndarray

# creating an empty panel
import pandas as pd
import numpy as np

data = np.random.rand(2,4,5)
p = pd.Panel(data)
print p

输出如下:

<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 5 (minor_axis)
Items axis: 0 to 1
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 4

注意: 观察空Panel和上面Panel的大小,所有的item都不一样。

用 DataFrame 对象的字典

#creating an empty panel
import pandas as pd
import numpy as np

data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 
    'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p

输出如下:

Dimensions: 2 (items) x 4 (major_axis) x 3 (minor_axis)
Items axis: Item1 to Item2
Major_axis axis: 0 to 3
Minor_axis axis: 0 to 2

创建一个空 Panel

可以使用 Panel 构造函数创建一个空面板,如下所示:

#creating an empty panel
import pandas as pd
p = pd.Panel()
print p

输出如下:

<class 'pandas.core.panel.Panel'>
Dimensions: 0 (items) x 0 (major_axis) x 0 (minor_axis)
Items axis: None
Major_axis axis: None
Minor_axis axis: None

从Panel中选择数据


使用以下方法从Panel中选择数据:

  • Items

  • Major_axis

  • Minor_axis

使用Items

# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 
    'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p['Item1']

输出如下:

            0          1          2
0    0.488224  -0.128637   0.930817
1    0.417497   0.896681   0.576657
2   -2.775266   0.571668   0.290082
3   -0.400538  -0.144234   1.110535

我们有两个项目,我们检索了 item1,结果是一个 4 行 3 列的 DataFrame,它们是Major_axis和Minor_axis维度。

使用major_axis

可以使用该方法访问数据panel.major_axis(index).

# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 
    'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p.major_xs(1)

输出如下:

      Item1       Item2
0   0.417497    0.748412
1   0.896681   -0.557322
2   0.576657       NaN

使用minor_axis

可以使用该方法访问数据panel.minor_axis(index)。

# creating an empty panel
import pandas as pd
import numpy as np
data = {'Item1' : pd.DataFrame(np.random.randn(4, 3)), 
    'Item2' : pd.DataFrame(np.random.randn(4, 2))}
p = pd.Panel(data)
print p.minor_xs(1)

输出如下:

       Item1       Item2
0   -0.128637   -1.047032
1    0.896681   -0.557322
2    0.571668    0.431953
3   -0.144234    1.302466

注意: 观察大小的变化。