Pandas---2.内部数据结构(Index/MultiIndex/Series/DataFrame内部结构)

(实线为普通属性,虚线为property属性或者getset_descriptor

1.Index的结构 

  1. .name为普通属性,返回Index的名字
  2. .values/._valuesproperty属性,返回Index的内部数据的视图
  3. ._data为普通属性,返回Index的内部数据
  4. .shapeproperty属性,返回内部数据的形状
  5. ._engine为标签映射管理器,它负责管理label和下标之间的映射
  6. ObjectEngine对象使用一个哈希表对象PyObjectHashTable对象(由ObjectEngine对象的.mmaping属性给出,该属性是一个getset_descriptor)将标签映射到其对应的整数下标的。

举例:

2.MultiIndex的结构

MultiIndex

  1. .name为普通属性,返回MultiIndex的名字。同Index
  2. .values/._valuesproperty属性,返回MultiIndex的内部数据的视图。同Index
    1. ._dataNone,这里是与Index不同。
  3. .shapeproperty属性,返回内部属性的形状 。同Index
  4. ._engine为标签映射管理器,它负责管理label和下标之间的映射。同Index
  5. .labelsproperty属性,它返回一个FrozenList(不可变列表),列表中存储每一级的label对应的下标(也就是创建MultiIndex时传入的labels参数),以FrozenNDArray的数据类型。
  6. .levelsproperty属性,它返回一个FrozenList(不可变列表),列表中存储每一级的label(也就是创建MultiIndex时传入的levels参数),以Index的数据类型。

举例:

3.Seris的结构

Series

  1. ._name为普通属性,返回Seris的名字;.nameproperty属性,返回的也是Seris名字
  2. .dtype/.dtypesproperty属性,返回Series的数据类型。
  3. .ftype/ftypesproperty属性,返回一个字符串,说明Series是否稀疏数据。(二者返回的字符串的值相同,但不是同一个字符串对象)
  4. .values/._valuesproperty属性,返回Series的内部数据的视图
  5. .index为普通属性,返回Series的索引
  6. .shapeproperty属性,返回Series的数据的形状
  7. ._data为普通属性,它返回的是一个SingleBlockManager对象,该对象负责管理内部数据。
  8. SingleBlockManager.shape属性为property属性,返回内部数据的形状
  9. SingleBlockManager.blocks属性为普通属性,返回一个列表,该列表只有一个元素,该元素为一个IntBlock对象(或者其他的xxxBlock对象),代表了内部数据。
  10. IntBlock.values属性为普通属性,它返回内部数据:一个ndarray
  11. IntBlock.shape属性为property属性,它返回内部数据的形状

举例:

4.DataFrame的结构

DataFrame

  1. .index/columns属性都为普通属性,它们返回的都是一个Index对象,参考Series。 
  2. .dtypes属性为property属性,给出了每列的数值类型。它返回的是一个Series。并且没有.dtype属性,这一点与Series不同。 
  3. .ftypes属性为property属性,给出了每列是否为sparse/dense的。它返回的是一个Series。并且没有.ftype属性,这一点与Series不同。 
  4. .values/._values/.shape属性都为property属性,参考Series
  5. ._data属性为普通属性,它返回的是一个BlockManager对象,该对象负责管理内部数据。该对象的.block属性(普通属性)返回一个列表,该列表里面有多个元素。 DataFrame尽量用一个数组保存类型相同的列。
  6. 每个元素都为一个xxBlock对象。如IntBlock/FloatBlock...
    1. 一个xxBlock 可能存储多个列的数据(这些列的数据都是同一个类型)
  7. xxBlock对象的.values属性(普通属性)就是存储的某个列(或者某些类型相同的列)的内部数据,一个ndarray
  8. xxBlock对象的.shape属性(property属性)就是存储的某个列(或者某些类型相同的列)的内部数据的形状 
  9. .blocks属性为property属性。该属性返回一个字典,该字典的键为不同的数值类型,该字典的值为该数值类型的数值组成的DataFrame

举例:

posted @   nxf_rabbit75  阅读(792)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2018-12-27 去掉python的警告
1.Index的结构 2.MultiIndex的结构3.Seris的结构4.DataFrame的结构
点击右上角即可分享
微信分享提示