Pandas-4. Panel

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

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

1. 构造函数

用以下函数构造一个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

2. 创建Panel

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

2.1 从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

2.2 从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

3. Panel中的数据处理

3.1 从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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java NIO-3.Buffer

    Java NIO Buffers用来和NIO Channels交互。正如前文所述,数据从通道中读到缓冲区,或者从缓冲区写到通道。 缓冲区本质上是一块能写入数据...

    悠扬前奏
  • MyBatis-3.动态SQL

    where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会...

    悠扬前奏
  • Linux问题-VitualBox虚拟机内Ubuntu和Windows之间共享文件夹

    设置共享文件夹_step1.png 2.2 添加共享文件夹 添加共享文件夹->共享文件夹路径->其他->选择Win侧需要共享的文件夹->固定...

    悠扬前奏
  • 用python画 pareto front

    DrawSky
  • 手撕numpy(五):一招帮你彻底搞懂axis=0和axis=1

    思考:给你一个三维数组,你知道如何设置axis轴的值吗?下面这张图展示的结果你知道怎么来的吗?这些疑问都会在文中给你一一解答。

    朱小五
  • 再探Numpy中的axis(也是torch中的dim)

    Aidol
  • Xilinx Floating-Point Operator IP创建与仿真

    2>Precision of Inputs 我们选择单晶浮点数(Single),指数位宽Exponent Width 8bit 尾数位宽24 bit

    FPGA开源工作室
  • Ubuntu: Linux下查看本机显示器分辨率(xrandr)

    JNingWei
  • 改进异常处理的 6 条建议

    来源:ImportNew - 唐尤华 , 合理地使用异常处理可以帮你节省数小时(甚至数天)调试时间。一个乘法异常会毁掉你的晚餐乃至周末计划。如果处置不及时,甚至...

    企鹅号小编
  • 编写 SQL 的排除联接

    有两个表,就叫源表和目标表吧。它们有一个相同的字段,通过该字段可以把源表和目标表关联在一起,我们希望从源表中检索到的记录里的关联字段的值没有存在目标表中。举个例...

    白日梦想家

扫码关注云+社区

领取腾讯云代金券