运算符从记录列表构造嵌套汇总。

nesting的Python项目详细描述


此模块是 nest operator来自迈克·博斯托克的d3.js

嵌套允许将数组中的元素分组为层次树结构; 把它想象成SQL中的GROUPBY运算符,除了可以有多个级别的 分组,结果输出是一个树而不是一个平面表。中的级别 树由键函数指定。树的叶节点可以按 值,而内部节点可以按键排序。可选的汇总函数将 使用摘要函数折叠每个叶节点中的元素。嵌套运算符 (由d3.nest返回的对象)是可重用的,并且不保留对 嵌套的数据。

例如,考虑以下大麦产量的表格数据结构,从 1931-1932年间明尼苏达州的各个地点:

>>> yields = [
    {"yield": 27.00, "variety": "Manchuria", "year": 1931, "site": "University Farm"},
    {"yield": 48.87, "variety": "Manchuria", "year": 1931, "site": "Waseca"},
    {"yield": 27.43, "variety": "Manchuria", "year": 1931, "site": "Morris"},
    {"yield": 43.07, "variety": "Glabron",   "year": 1931, "site": "University Farm"},
    {"yield": 55.20, "variety": "Glabron",   "year": 1931, "site": "Waseca"},
    {"yield": 16.18, "variety": "Glabron",   "year": 1932, "site": "University Farm"},
]

为了便于可视化,可以先按年份嵌套元素,然后按种类嵌套元素,如下所示:

>>> from nesting import Nest
>>> (Nest()
...     .key( lambda d: d['year'] )
...     .key( lambda d: d['variety'] )
...     .entries(yields))

或更简洁:

>>> (Nest()
...     .key('year')
...     .key('variety')
...     .entries(yields))

…由于属性函数都会在非调用项要查找时解释它们。

这将返回一个嵌套数组。外部数组的每个元素都是键值对,列出每个不同键的值:

[   {"key": 1931, "values": [
        {"key": "Manchuria", "values": [
            {"yield": 27.00, "variety": "Manchuria", "year": 1931, "site": "University Farm"},
            {"yield": 48.87, "variety": "Manchuria", "year": 1931, "site": "Waseca"},
            {"yield": 27.43, "variety": "Manchuria", "year": 1931, "site": "Morris"}, ]},
        {"key": "Glabron", "values": [
            {"yield": 43.07, "variety": "Glabron", "year": 1931, "site": "University Farm"},
            {"yield": 55.20, "variety": "Glabron", "year": 1931, "site": "Waseca"}, ]},
    ]},
    {"key": 1932, "values": [
        {"key": "Glabron", "values": [
            {"yield": 16.18, "variety": "Glabron", "year": 1932, "site": "University Farm"}, ]},
    ]},
]

嵌套表单允许在svg或html中轻松迭代和生成层次结构。

这个端口是开源的,在MIT License下免费授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
找不到足够的连续内存会导致OOM吗?   java如何计算一个矩形可以放入另一个矩形的次数?   谷歌地图api java   java Autowired批注在AuthenticationSuccessHandler中返回null   Java电话号码格式正则表达式   eclipse我希望能够同时选择多个复选框?Java SWT   java j2objc可以用于生成不适用于iOS的目标C代码吗?   使用cUrl将PHP post数组转换为java servlet   java playpac4j和Play 2.5:@requireAuthentication注释导致stacktrace   java为什么在Javamail中连接超时?   java使用SwingUtilities。main方法中的invokeLater()   如何在名为from Unity的Java插件中创建Android处理程序