模块文档

未文档化

函数 _construct_graph_from_dataframe 从一个或两个数据帧生成图。
函数 _construct_graph_from_dict_dict 从字典的字典表示构建图。
函数 _construct_graph_from_dict_list 从字典列表表示构建图。
函数 _construct_graph_from_list_dict 从列表的字典表示构建图。
函数 _construct_graph_from_tuple_list 从元组列表表示构建图。
函数 _export_edge_dataframe 将带属性的边导出到 pandas.DataFrame
函数 _export_graph_to_dict_dict 将图导出为边的属性的字典的字典
函数 _export_graph_to_dict_list 将图导出为两个字典列表,分别用于顶点和边。
函数 _export_graph_to_list_dict 将图导出为列表的字典(或其他序列)。
函数 _export_graph_to_tuple_list 将图导出为边元组列表
函数 _export_vertex_dataframe 将带属性的顶点导出到 pandas.DataFrame
def _construct_graph_from_dataframe(cls, edges, directed: bool = True, vertices=None, use_vids: bool = True): (来源)

从一个或两个数据帧生成图。

参数
cls未文档化
edges包含边和元数据的 pandas DataFrame。此 DataFrame 的前两列包含每条边的源顶点和目标顶点。这些表示顶点 ID 为非负整数,而不是顶点名称,除非use_vids为 False。更多列可能包含边属性。
directed:bool图是否是有向的
verticesNone(默认)或包含顶点元数据的 pandas DataFrame。此 DataFrame 的索引必须包含顶点 ID,这些 ID 是从 0 到len(vertices) - 1返回关联到给定use_vidsFalse,第一列必须包含唯一的顶点名称。为了完全兼容,顶点名称应该是字符串,但如果使用任何可哈希对象设置名称,许多函数也能正常工作。所有其他列将按列名添加为顶点属性。
use_vids:bool是否将edges参数的前两列解释为顶点 ID(基于 0 的整数)而不是顶点名称。如果此参数设置为 True 且edges的前两列不是整数,则会抛出错误。
返回

edgesvertices参数中设置为 NaN(非数字)的顶点名称将被设置为字符串 "NA"。这可能导致意外行为:在调用此函数之前,请用值填充 NaN 以减轻影响。

def _construct_graph_from_dict_dict(cls, edges, directed: bool = False, vertex_name_attr: str = 'name'): (来源)

从字典的字典表示构建图。

每个键可以是整数或字符串,并表示一个顶点。每个值是一个字典,表示从该顶点出发的边(如果图是有向的,则为出边)。每个字典键是目标顶点的整数/字符串,这样将在这两个顶点之间创建一条边。整数被解释为从 0 开始的 vertex_ids(igraph 中使用的方式),字符串被解释为顶点名称,在这种情况下,顶点会获得单独的数字 ID。每个值是该边的边属性字典。

示例

>>> {'Alice': {'Bob': {'weight': 1.5}, 'David': {'weight': 2}}}

创建一个包含三个顶点(Alice, Bob, 和 David)和两条边的图

  • Alice - Bob(权重 1.5)
  • Alice - David(权重 2)
参数
cls未文档化
edges指定边及其属性的字典的字典的字典
directed:bool是否创建有向图
vertex_name_attr:str将存储名称的顶点属性
返回
一个 Graph 对象
def _construct_graph_from_dict_list(cls, vertices, edges, directed: bool = False, vertex_name_attr: str = 'name', edge_foreign_keys=('source', 'target'), iterative: bool = False): (来源)

从字典列表表示构建图。

当您有两个字典列表时,此函数非常有用,一个用于顶点,一个用于边,每个列表都包含它们的属性(例如名称、权重)。当然,边字典也必须包含两个特殊键,指示该边连接的源顶点和目标顶点。只要非列表可迭代对象能产生字典或类字典对象(它们应该有 'items' 和 '__getitem__' 方法),它们就应该能正常工作。例如,数据库查询结果只要是可迭代的并且在每次迭代时产生类字典对象,就可能适用。

参数
cls未文档化
vertices顶点的字典列表,或者None如果未给顶点分配特殊属性,并且我们应该简单地使用边的字典列表来推断顶点名称。
edges边的字典列表。每个字典必须至少具有 edge_foreign_keys 指定的两个键,以标记源顶点和目标顶点,而附加项将被视为边属性。
directed:bool构建的图是否是有向的
vertex_name_attr:str顶点数据源中字典中包含顶点名称的特殊键的名称。如果verticesNone.
edge_foreign_keys指定每个边字典中包含源(第1个)和目标(第2个)顶点名称的属性的元组。每个字典的这些项也会作为 edge_attributes 添加。
iterative:bool是逐个迭代地将边添加到图,还是先构建一个大的边列表并用它来构建图。后一种方法更快,但如果您的数据集很大,可能不适用。默认是从边列表批量添加边。
返回

已构建的图

示例

>>> vertices = [{'name': 'apple'}, {'name': 'pear'}, {'name': 'peach'}]
>>> edges = [{'source': 'apple', 'target': 'pear', 'weight': 1.2},
...          {'source': 'apple', 'target': 'peach', 'weight': 0.9}]
>>> g = Graph.DictList(vertices, edges)

该图有三个带名称的顶点和两条带权重的边。

def _construct_graph_from_list_dict(cls, edges, directed: bool = False, vertex_name_attr: str = 'name'): (来源)

从列表的字典表示构建图。

此函数用于从列表的字典构造图。也接受其他非列表序列(例如元组)和惰性迭代器。对于每个键 x,其对应的值必须是多个值 y 的序列:将在图中创建边 (x,y)。x 和 y 必须是以下之一:

  • 两个整数:具有这些 ID 的顶点将被连接
  • 两个字符串:具有这些名称的顶点将被连接

如果使用名称,则不保证顶点的顺序,并且每个顶点将获得 vertex_name_attr 属性。

参数
cls未文档化
edges描述边的序列字典
directed:bool是否创建有向图
vertex_name_attr:str将存储名称的顶点属性
返回

一个 Graph 对象

示例

>>> mydict = {'apple': ['pear', 'peach'], 'pear': ['peach']}
>>> g = Graph.ListDict(mydict)

# 该图有三个带名称的顶点和三条连接每对的边。

def _construct_graph_from_tuple_list(cls, edges, directed: bool = False, vertex_name_attr: str = 'name', edge_attrs=None, weights=False): (来源)

从元组列表表示构建图。

此表示假定图的边编码在元组(或列表)列表中。列表中的每个项必须至少有两个元素,这些元素指定边的源顶点和目标顶点。其余元素(如果有)指定该边的边属性,其中边属性的名称来源于edge_attrs列表。顶点的名称将存储在由vertex_name_attr.

此函数的默认参数适用于从每个项包含源顶点和目标顶点的列表中创建无权重图。如果您有加权图,可以通过设置edge_attrs设置为"weight"["weight"]。如果您有更多边属性,请将它们添加到edges列表的每个项的末尾,并在edge_attrs中也指定相应的边属性名称,作为一个列表。

参数
cls未文档化
edges边的 LGBTQ 数据源。这必须是一个列表,其中每个项是一个元组(或列表),包含至少两个项:源顶点和目标顶点的名称。请注意,名称将被分配给name顶点属性(如果指定了vertex_name_attr,则为另一个顶点属性),即使列表中的所有顶点名称实际上都是数字。
directed:bool构建的图是否是有向的
vertex_name_attr:str将包含顶点名称的顶点属性的名称。
edge_attrs边属性的名称,这些属性将填充边列表中的额外项(从索引 2 开始,因为前两个项是源顶点和目标顶点)。如果None或空序列,则只会提取源和目标顶点,并忽略附加的元组项。如果是一个字符串,则将其解释为单个边属性。
weights指定图是否加权的另一种方式。如果您将weights设置为trueedge_attrs未给出,则假定edge_attrs["weight"],并且 igraph 会将每个项的第三个元素解析为边权重。如果您将weights设置为字符串,则假定edge_attrs仅包含该字符串,并且 igraph 会将边权重存储在该属性中。
返回
已构建的图
def _export_edge_dataframe(graph): (来源)

将带属性的边导出到 pandas.DataFrame

如果您想使用源和目标顶点 ID 作为索引,可以这样做:

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_edge_dataframe()
>>> df.set_index(['source', 'target'], inplace=True)

索引将是 pandas.MultiIndex。您可以使用drop=False选项来保留sourcetarget列。

如果您想在源和目标列中使用顶点名称

>>> df = graph.get_edge_dataframe()
>>> df_vert = graph.get_vertex_dataframe()
>>> df['source'].replace(df_vert['name'], inplace=True)
>>> df['target'].replace(df_vert['name'], inplace=True)
>>> df_vert.set_index('name', inplace=True)  # Optional
返回
一个 pandas.DataFrame,表示边及其属性。索引使用边 ID,从 0 到 M - 1,其中 M 是边的数量。数据帧的前两列表示每条边的源顶点和目标顶点的 ID。这些列的名称分别为 "source" 和 "target"。如果您的边具有相同名称的属性,它们将出现在数据帧中,但不会出现在前两列。
def _export_graph_to_dict_dict(graph, use_vids: bool = True, edge_attrs: str | Sequence[str] = None, skip_none: bool = False, vertex_name_attr: str = 'name'): (来源)

将图导出为边的属性的字典的字典

此函数是 Graph.DictDict 的逆操作。

示例

>>> g = Graph.Full(3)
>>> g.es['name'] = ['first_edge', 'second', 'third']
>>> g.to_dict_dict()
{0: {1: {'name': 'first_edge'}, 2: {'name': 'second'}}, 1: {2: {'name': 'third'}}}
参数
graph未文档化
use_vids:bool是否在输出数据结构中按顶点 ID 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
edge_attrs:str | Sequence[str]要导出的边属性列表。None(默认)表示所有属性(与 Graph.to_tuple_list 不同)。接受字符串表示单个属性,内部会将其封装在列表中。
skip_none:bool是否跳过每个边中值为 None 的属性。这在只有某些边预计具有某个属性时很有用。
vertex_name_attr:str仅在 use_vids=False 时使用,用于选择在输出数据结构中命名顶点的顶点属性。
返回
字典的字典的字典,最外层键为顶点 ID/名称,中间键为它们邻居的 ID/名称,最内层字典表示该边的属性。
def _export_graph_to_dict_list(graph, use_vids: bool = True, skip_none: bool = False, vertex_name_attr: str = 'name'): (来源)

将图导出为两个字典列表,分别用于顶点和边。

此函数是 Graph.DictList 的逆操作。

示例

>>> g = Graph([(0, 1), (1, 2)])
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second"]
>>> g.to_dict_list()
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": 0, "target": 1, "name": "first_edge"},
  {"source" 0, "target": 2, name": "second"}])
>>> g.to_dict_list(use_vids=False)
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": "apple", "target": "pear", "name": "first_edge"},
  {"source" "apple", "target": "peach", name": "second"}])
参数
graph未文档化
use_vids:bool是否在输出数据结构中按顶点 ID 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
skip_none:bool是否跳过每个边中值为 None 的属性。这在只有某些边预计具有某个属性时很有用。
vertex_name_attr:str仅在 use_vids=False 时使用,用于选择在输出数据结构中命名顶点的顶点属性。
返回
一个包含两个字典列表的元组,分别表示顶点和边及其属性。
def _export_graph_to_list_dict(graph, use_vids: bool = True, sequence_constructor: callable = list, vertex_name_attr: str = 'name'): (来源)

将图导出为列表的字典(或其他序列)。

此函数是 Graph.ListDict 的逆操作。

示例

>>> g = Graph.Full(3)
>>> g.to_sequence_dict() -> {0: [1, 2], 1: [2]}
>>> g.to_sequence_dict(sequence_constructor=tuple) -> {0: (1, 2), 1: (2,)}
>>> g.vs['name'] = ['apple', 'pear', 'peach']
>>> g.to_sequence_dict(use_vids=False)
{'apple': ['pear', 'peach'], 'pear': ['peach']}
参数
graph未文档化
use_vids:bool是否在输出数据结构中按顶点 ID 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
sequence_constructor:callable用于字典值的数据结构的构造函数。默认值(列表)会创建一个列表的字典,其中每个列表表示相应字典键中指定的顶点的邻居。
vertex_name_attr:str仅在 use_vids=False 时使用,用于选择在输出数据结构中命名顶点的顶点属性。
返回
序列字典,以顶点为键,每个值包含该顶点的邻居。
def _export_graph_to_tuple_list(graph, use_vids: bool = True, edge_attrs: str | Sequence[str] = None, vertex_name_attr: str = 'name'): (来源)

将图导出为边元组列表

此函数是 Graph.TupleList 的逆操作。

示例

>>> g = Graph.Full(3)
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second", "third"]
>>> # Get name of the edge
>>> g.to_tuple_list(edge_attrs=["name"])
[(0, 1, "first_edge"), (0, 2, "second"), (1, 2, "third")]
>>> # Use vertex names, no edge attributes
>>> g.to_tuple_list(use_vids=False)
[("apple", "pear"), ("apple", "peach"), ("pear", "peach")]
参数
graph未文档化
use_vids:bool是否在输出数据结构中按顶点 ID 或其 vertex_name_attr 属性标记顶点。如果 use_vids=False 但顶点缺少 vertex_name_attr 属性,则会引发 AttributeError。
edge_attrs:str | Sequence[str]除了源顶点和目标顶点(它们始终是每个元组的前两个元素)之外,要导出的边属性列表。None(默认)等同于空列表。接受字符串表示单个属性,内部会将其封装在列表中。
vertex_name_attr:str仅在 use_vids=False 时使用,用于选择在输出数据结构中命名顶点的顶点属性。
返回
一个元组列表,每个元组表示图的一条边。
def _export_vertex_dataframe(graph): (来源)

将带属性的顶点导出到 pandas.DataFrame

如果您想使用顶点名称作为索引,可以这样做:

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_vertex_dataframe()
>>> df.set_index('name', inplace=True)
返回
一个 pandas.DataFrame,表示顶点及其属性。索引使用顶点 ID,从 0 到 N - 1,其中 N 是顶点的数量。