Pandas 面板(Panel)

Pandas 面板(Panel)是3维数据的存储结构,面板数据一词来源于计量经济学,部分源于名称:Pandaspan(el)-da(ta)-s
Panel 相当于一个存储 DataFrame 的字典,3个轴(axis)分别代表意义如下:

axis 0 items item 对应一个内部的数据帧(DataFrame)
axis 1 major_axis 每个数据帧(DataFrame)的索引行
axis 2 minor_axis 每个数据帧(DataFrame)的索引列

Pandas 面板(Panel)

pandas.Panel()

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

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

构造函数的参数说明如下:

参数 说明
data 支持多种数据类型,如:ndarrayseriesmaplistsdictconstant和其他数据帧(DataFrame)
items axis=0
major_axis axis=1
minor_axis axis=2
dtype 每列的数据类型
copy 是否复制数据,默认为false

创建 Panel

可以使用多种方式创建面板,如:从 ndarrays 创建,或从 DataFrames 字典创建

创建一个空 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

从3D ndarray创建 Panel

# 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

从 DataFrame 字典创建 Panel

#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)

执行结果如下:

<class 'pandas.core.panel.Panel'>
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 中读取数据,可以使用以下方式:

  • 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.986684 -0.220708 -0.485787
1 -0.164544  0.412970  1.088492
2 -0.344780  0.977971  2.520853
3  0.009898  0.573343  0.232600

上面示例有两个数据项(Item1Item2),这里只检索Item1,结果获得4行和3列的数据帧(DataFrame)。

使用 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  1.152541  0.581985
1  1.139998 -0.253684
2  0.637131       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.854895  0.904276
1 -0.492248 -0.386763
2  0.487797 -1.398289
3  1.224335 -0.300087

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程