跳转到主要内容

使用Pandas DataFrames轻量级表示网络。

项目描述

networkframe

pypi python build status dev docs Downloads

使用Pandas DataFrames轻量级表示网络。

networkframe 使用Pandas DataFrames以轻量级方式表示网络。一个 NetworkFrame 对象只是一个表示节点和表示边的表,并提供各种方法来轻松查询和操作这些数据。

警告networkframe 仍在早期开发阶段,因此可能存在错误和缺失功能。请报告您发现的任何问题!

示例

从头开始创建 NetworkFrame

import pandas as pd

from networkframe import NetworkFrame

nodes = pd.DataFrame(
    {
        "name": ["A", "B", "C", "D", "E"],
        "color": ["red", "blue", "blue", "red", "blue"],
    },
    index=[0, 1, 2, 3, 4],
)
edges = pd.DataFrame(
    {
        "source": [0, 1, 2, 2, 3],
        "target": [1, 2, 3, 1, 0],
        "weight": [1, 2, 3, 4, 5],
    }
)

nf = NetworkFrame(nodes, edges)
print(nf)
NetworkFrame(nodes=(5, 2), edges=(5, 3))

通过节点颜色选择子图

red_nodes = nf.query_nodes("color == 'red'")
print(red_nodes.nodes)
  name color
0    A   red
3    D   red

通过边权重选择子图

strong_nf = nf.query_edges("weight > 2")
print(strong_nf.edges)
   source  target  weight
2       2       3       3
3       2       1       4
4       3       0       5

按节点颜色迭代子图

for color, subgraph in nf.groupby_nodes("color", axis="both"):
    print(color)
    print(subgraph.edges)
('blue', 'blue')
   source  target  weight
1       1       2       2
3       2       1       4
('blue', 'red')
   source  target  weight
2       2       3       3
('red', 'blue')
   source  target  weight
0       0       1       1
('red', 'red')
   source  target  weight
4       3       0       5

将节点信息应用到边上

nf.apply_node_features("color", inplace=True)
print(nf.edges)
   source  target  weight source_color target_color
0       0       1       1          red         blue
1       1       2       2         blue         blue
2       2       3       3         blue          red
3       2       1       4         blue         blue
4       3       0       5          red          red

是否 networkframe 适合您?

优点

  • 轻量级: NetworkFrame 对象只是两个DataFrame,因此它们易于操作和与其他工具集成。
  • 互操作性:可以输出到 NetworkXnumpy 数组和 scipy 稀疏数组。
  • 灵活:可以表示有向、无向和多图。
  • 熟悉:如果你熟悉 Pandas DataFrames,那就是了。尽可能多的,networkframe 使用与 Pandas 相同的语法,同时也仅仅为你提供对底层表格的访问。
  • 可扩展:将 NetworkFrame 作为基础图使用非常容易——例如,你可以创建一个 SpatialNetworkFrame,为节点和边添加空间信息。

缺点

  • 无保证:由于 networkframe 允许你访问底层 DataFrames,它对数据的验证并不多。这是出于设计考虑,以保持轻量级和灵活,但这也意味着如果你不小心,也可能弄乱一个 NetworkFrame(例如,你可能会删除用于将边映射到节点的索引)。
  • 未针对图计算优化:由于 networkframe 将数据存储为简单的节点和边表格,它没有针对在这些图上执行实际计算(例如,如搜索最短路径)进行优化。典型的流程是使用 networkframe 加载数据并进行操作,然后将其转换为更适合图计算的格式,如 scipy 稀疏矩阵或 NetworkX

改进空间

  • 早期开发:可能存在错误和缺失功能。请报告你发现的任何问题!
  • 更多互操作性:目前 networkframe 可以输出到 NetworkXnumpyscipy 稀疏数组。能够以更方便的方式从这些格式读取,并输出到其他格式(如 igraphgraph-tool)将会很好。
  • 图类型处理:networkframe 主要针对有向图进行测试,对于无向图和多图则相对较少。

致谢

此软件包是用 Cookiecutterbdpedigo/cookiecutter-pypackage 项目模板创建的(它基于几个先前的版本)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

networkframe-0.5.1.tar.gz (13.9 kB 查看哈希)

上传时间:

构建分布

networkframe-0.5.1-py3-none-any.whl (12.7 kB 查看哈希)

上传时间: Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面