使用Pandas DataFrames轻量级表示网络。
项目描述
networkframe
使用Pandas DataFrames轻量级表示网络。
- 文档: https://bdpedigo.github.io/networkframe
- GitHub: https://github.com/bdpedigo/networkframe
- PyPI: https://pypi.ac.cn/project/networkframe/
- 自由软件:MIT
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,因此它们易于操作和与其他工具集成。 - 互操作性:可以输出到
NetworkX
、numpy
数组和scipy
稀疏数组。 - 灵活:可以表示有向、无向和多图。
- 熟悉:如果你熟悉
Pandas
DataFrames
,那就是了。尽可能多的,networkframe
使用与Pandas
相同的语法,同时也仅仅为你提供对底层表格的访问。 - 可扩展:将
NetworkFrame
作为基础图使用非常容易——例如,你可以创建一个SpatialNetworkFrame
,为节点和边添加空间信息。
缺点
- 无保证:由于
networkframe
允许你访问底层DataFrames
,它对数据的验证并不多。这是出于设计考虑,以保持轻量级和灵活,但这也意味着如果你不小心,也可能弄乱一个NetworkFrame
(例如,你可能会删除用于将边映射到节点的索引)。 - 未针对图计算优化:由于
networkframe
将数据存储为简单的节点和边表格,它没有针对在这些图上执行实际计算(例如,如搜索最短路径)进行优化。典型的流程是使用networkframe
加载数据并进行操作,然后将其转换为更适合图计算的格式,如scipy
稀疏矩阵或NetworkX
。
改进空间
- 早期开发:可能存在错误和缺失功能。请报告你发现的任何问题!
- 更多互操作性:目前
networkframe
可以输出到NetworkX
、numpy
和scipy
稀疏数组。能够以更方便的方式从这些格式读取,并输出到其他格式(如igraph
或graph-tool
)将会很好。 - 图类型处理:
networkframe
主要针对有向图进行测试,对于无向图和多图则相对较少。
致谢
此软件包是用 Cookiecutter 和 bdpedigo/cookiecutter-pypackage 项目模板创建的(它基于几个先前的版本)。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
networkframe-0.5.1.tar.gz (13.9 kB 查看哈希)
构建分布
networkframe-0.5.1-py3-none-any.whl (12.7 kB 查看哈希)