Pandas - Panel(面板)

  • 简述

    panel是数据的 3D 容器。术语Panel data源自计量经济学,部分负责命名 pandas -pan(el)-da(ta)-s。
    3 个轴的名称旨在为描述涉及Panel数据的操作提供一些语义含义。他们是 -
    • items− 轴 0,每个items对应一个包含在里面的 DataFrame。
    • major_axis− 轴 1,它是每个 DataFrame 的索引(行)。
    • minor_axis− 轴 2,它是每个 DataFrame 的列。
  • pandas.Panel()

    可以使用以下构造函数创建Panel -
    
    pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
    
    构造函数的参数如下 -
    范围 描述
    数据 数据采用各种形式,如 ndarray、series、map、lists、dict、constants 以及另一个 DataFrame
    items axis=0
    major_axis axis=1
    minor_axis axis=2
    类型 每列的数据类型
    复制 复制数据。默认,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的尺寸,所有对象都不一样。

    从 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 构造函数创建一个空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
    
    我们有两个items,我们检索了 item1。结果是一个 4 行 3 列的 DataFrame,它们是Major_axisMinor_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
    
    注意− 观察尺寸的变化。