具有多索引和大容量操作的数据类容器
dataclassframe的Python项目详细描述
数据类帧
具有多索引和批量操作的数据类容器。 提供数据类的类型化优点和人体工程学,同时具有Pandas dataframes的效率。在
容器基于data-oriented design,通过优化存储数据的内存布局,提供快速 大容量操作和较小的内存占用用于大型集合。 批量操作是通过Pandas实现的,Pandas有一套丰富的用于数值和字符串的矢量化方法 数据类型。在
多重索引提供了使用多个字段作为索引记录的键的能力。 这适用于双向和反向字典键。在
DataClassFrame为生产代码提供了良好的人机工程学,因为列是不可变的 列/数据类型由dataclass定义良好。 这使得用户更容易理解大型项目中数据的“形状”,并在必要时进行重构。在
安装
使用pip/PyPi获取最新版本
pip install dataclassframe
特征比较
Container | Positional indexing | Key indexing | Multi-key indexing | Data-oriented design | Column-wise opperations | Type hints | Use in prod |
---|---|---|---|---|---|---|---|
DataClassFrame | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
List | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ |
Dictionary | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
MIDict | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
Pandas DataFrame | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
以身作则
数据类的容器数据类型。。。在
^{pr2}$它就像一个有多个索引的有序字典。。。在
# Obtain record `ExampleDC('b', 2)`row_idx=dcf.iat[1]# Using positional indexrow_f1=dcf.at['b']# Using index of `field1`row_f2=dcf.at[:,2]# Using index of `field2`assertrow_idx==row_f1==row_f2
对列执行批量操作。。在
assertdcf.cols.field2.sum()==6
可以很好地与python3类型提示配合使用。。。在
dcf:DataClassFrame[ExampleDC]dcf.iat[1]:ExampleDC
设计
众所周知,DataClassFrames在幕后使用Pandas DataFrames来存储数据。 数据在可能的情况下被转换成Pandas系列,而Pandas系列又使用Numpy数组。当用户访问一个记录时,数据被转换回初始化时提供的数据类。在
与使用简单的数据类列表或类似的方法(如更好的内存)相比,Pandas提供了许多优势 占地面积和快速矢量化操作。然而,在生产代码中直接使用Pandas数据帧是considered by the author and others as an anti-pattern。 特别是由于数据帧是按列可变的,因此很难在代码时确定哪些列 数据帧包含即其形状。它也不提供任何类型的暗示好处。在
托多
- []用于访问数据和设置数据的切片和dataclassframe视图
- []追加和插入
- []面向数据的Numpy字段设计
变更日志
本项目的所有显著变化都将记录在这里。在
格式基于Keep a Changelog 这个项目遵循Semantic Versioning。在
[0.1.0]-2020年10月22日
已添加
dataclassframe
的初始版本
许可证
©乔希·克莱维,2020年。dataclassframe是在MIT许可下发布的。在
- 项目
标签: