Pandas Panel的使用

Panel

Panel是Pandas中的3D数据容器
它有3个轴(axis),分别是:

  • items - axis 0 , 每个item对应一个DataFrame
  • major_axis - axis 1,代表每个DataFrame的索引
  • minor_axis - axis 2, 代表每个DataFrame的列

构造函数

用以下函数构造一个Panel:

pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)
参数 描述
data 数据,可以采用各种格式:ndarray, series,map,list,dict,constant和另一个DataFrame
items axis = 0
major_axis axis = 1
minor_axis axis = 2
dtype 每列的数据类型
copy 复制数据,默认 - false

创建Panel

从warning信息可知,该方法已经废弃,建议用MultiIndex on a DataFrame来处理3D信息。

从3D ndarray创建

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

结果

<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对象的dict创建Panel

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

结果:

<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

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

结果是具有4行和3列的DataFrame,是原Panel的Major_axis和Minor_axis维。

          0         1         2
0 -0.605993 -1.160744  0.107200
1 -1.529605 -0.156281 -0.572260
2 -0.521251 -0.084024 -0.094236
3  1.261669 -1.397361  0.843103

从Major_axis维
用panel.major_xs(index)方法访问数据:

print(p.major_xs(1))

结果:

      Item1     Item2
0 -1.529605  0.406339
1 -0.156281  0.826073
2 -0.572260       NaN

从Minor_axis维
用panel.minor_xs()方法访问数据

print(p.minor_xs(p.minor_axis[0]))

结果:

      Item1     Item2
0 -0.605993  0.711947
1 -1.529605  0.406339
2 -0.521251 -0.721333
3  1.261669 -0.807349

原文链接:Pandas-4. Panel

你可能感兴趣的:(Python)