Pandas中Series和DataFrame与Panel的区别

5

pandas.Series 由多个 pandas.DataFrame 组成,是否与 pandas.Panel 相似?乍一看,它们似乎是非常相似的数据结构。什么时候决定使用一系列数据帧,什么时候使用面板?

1个回答

1
一个Panel通常会更加节省内存和计算资源 - 一系列DataFrames与一系列任意Python对象的Series并没有太大不同 - 此外,Panel API应该使操作更容易。
In [18]: dfs = {i:pd.DataFrame({'a':np.linspace(0,100, 10000), 
                                'b':np.linspace(0,100, 10000)}) 
                for i in range(1000)}

In [19]: s = pd.Series(dfs)

In [20]: pnl = pd.Panel(dfs)

In [21]: pnl.sum()
Out[21]: 
      0       1       2       3       4       5       6       7       8    \
a  500000  500000  500000  500000  500000  500000  500000  500000  500000   
b  500000  500000  500000  500000  500000  500000  500000  500000  500000   

      9     ...       990     991     992     993     994     995     996  \
a  500000   ...    500000  500000  500000  500000  500000  500000  500000   
b  500000   ...    500000  500000  500000  500000  500000  500000  500000   

      997     998     999  
a  500000  500000  500000  
b  500000  500000  500000  

# equivalent with a series of frames
In [24]: s.apply(lambda x: x.sum()).T

In [22]: %timeit pnl.sum()
10 loops, best of 3: 23.4 ms per loop

In [25]: %timeit s.apply(lambda x: x.sum()).T
10 loops, best of 3: 123 ms per loop

请注意,Panel相对于pandas的其余api而言使用较少 - 根据您想要实现的目标,您可能会更容易使用带有MultiIndexDataFrame或者针对多维数据更专业的xray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接