📅  最后修改于: 2023-12-03 15:18:57.898000             🧑  作者: Mango
Pandas 是一个开放源码数据分析库,提供了数据分析、数据清洗和数据可视化的高效操作工具。在 Pandas 中,面板(Panel)是一个三维数据结构,类似于一个带标签的 NumPy 数组。
要创建一个 Pandas 面板,可以使用 Pandas 的 Panel
构造函数,将 NumPy 3D 数组或 3D dict 作为参数传递进去。这里是一个简单的示例:
import pandas as pd
import numpy as np
data = np.random.rand(2, 4, 3)
p = pd.Panel(data, items=['item1', 'item2'], major_axis=[1, 2, 3, 4], minor_axis=['a', 'b', 'c'])
print(p)
该代码将创建一个 2 x 4 x 3 的面板,其项目(items)为 item1
和 item2
,其主要轴(major axis)为 1
、 2
、 3
、 4
,其次要轴(minor axis)为 a
、b
、c
。输出如下:
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 3 (minor_axis)
Items axis: item1 to item2
Major_axis axis: 1 to 4
Minor_axis axis: a to c
Pandas 中可以使用以下方式访问面板中的数据:
下面是一些示例:
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)
# 提取面板数据
print(p['Item1'])
# 使用.ix 存取器
print(p.ix[:, :, 'a'])
# 使用存取器
print(p.items)
print(p.major_axis)
print(p.minor_axis)
输出如下:
<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
0 1 2
0 0.236206 -1.350803 -1.043356
1 -0.740145 -1.175801 0.742047
2 -0.937536 -1.456460 -0.021951
3 -0.608389 -0.909488 -0.206090
Item1 Item2
0 -1.028442 NaN
1 0.276255 NaN
2 0.363232 NaN
3 0.444544 NaN
Index(['Item1', 'Item2'], dtype='object')
Int64Index([0, 1, 2, 3], dtype='int64')
Int64Index([0, 1, 2], dtype='int64')
Pandas 面板支持许多常见的 NumPy 三维数组运算,例如插入、切片和连接。
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))}
p1 = pd.Panel(data)
p2 = pd.Panel(data)
# 面板加法
p3 = p1 + p2
print(p3)
# 面板减法
p4 = p1 - p2
print(p4)
# 面板切片
print(p1.ix[:, :, 1])
输出如下:
<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
# 各项相加
<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
# 各项相减
Item1 Item2
0 -1.174750 NaN
1 -0.613719 NaN
2 1.701500 NaN
3 -1.119071 NaN
# 切片
可以使用 HDF5、Excel、CSV 等格式来存储 Pandas 面板。下面是一个简单的 CSV 存储示例:
import pandas as pd
import numpy as np
data = np.random.rand(2, 4, 3)
p = pd.Panel(data, items=['item1', 'item2'], major_axis=[1, 2, 3, 4], minor_axis=['a', 'b', 'c'])
p.to_csv('panel.csv')
p_from_csv = pd.read_csv('panel.csv', header=[0, 1, 2], index_col=[0])
print(p_from_csv)
这里使用 to_csv
将面板写入 CSV 文件,然后使用 read_csv
将其读回到 Pandas 面板中。注意设置头和索引标签。