EdgesTable API Reference¶
Type: groggy.EdgesTable
Overview¶
Tabular view of edge data with columns for edge attributes.
Primary Use Cases: - Analyzing edge attributes in tabular form - Aggregating edge data - Exporting edge information
Related Objects:
- GraphTable
- BaseTable
- EdgesAccessor
Complete Method Reference¶
The following methods are available on EdgesTable objects. This reference is generated from comprehensive API testing and shows all empirically validated methods.
| Method | Returns | Status |
|---|---|---|
as_tuples() |
list |
✓ |
auto_assign_edge_ids() |
EdgesTable |
✓ |
base_table() |
BaseTable |
✓ |
drop_columns() |
EdgesTable |
✓ |
edge_ids() |
NumArray |
✓ |
filter() |
? |
✗ |
filter_by_attr() |
? |
✗ |
filter_by_sources() |
? |
✗ |
filter_by_targets() |
? |
✗ |
from_csv() |
? |
✗ |
from_dict() |
? |
✗ |
from_json() |
? |
✗ |
from_parquet() |
? |
✗ |
group_by() |
EdgesTableArray |
✓ |
head() |
EdgesTable |
✓ |
interactive() |
str |
✓ |
interactive_embed() |
str |
✓ |
interactive_viz() |
VizAccessor |
✓ |
into_base_table() |
BaseTable |
✓ |
iter() |
EdgesTableRowIterator |
✓ |
ncols() |
int |
✓ |
nrows() |
int |
✓ |
rich_display() |
str |
✓ |
select() |
EdgesTable |
✓ |
shape() |
tuple |
✓ |
slice() |
? |
✗ |
sort_by() |
EdgesTable |
✓ |
sort_values() |
EdgesTable |
✓ |
sources() |
NumArray |
✓ |
tail() |
EdgesTable |
✓ |
targets() |
NumArray |
✓ |
to_csv() |
? |
✗ |
to_json() |
? |
✗ |
to_pandas() |
DataFrame |
✓ |
to_parquet() |
? |
✗ |
unique_attr_values() |
? |
✗ |
viz() |
VizAccessor |
✓ |
Legend:
- ✓ = Method tested and working
- ✗ = Method failed in testing or not yet validated
- ? = Return type not yet determined
Detailed Method Reference¶
Creating EdgesTable¶
EdgesTable is accessed from GraphTable or directly from graph/subgraph:
import groggy as gr
g = gr.generators.karate_club()
# From graph
edges_table = g.edges.table()
# From GraphTable
table = g.table()
edges_table = table.edges
# From subgraph
strong = g.edges[g.edges["weight"] > 5.0]
strong_edges = strong.table().edges
Core Methods¶
edge_ids()¶
Get array of edge IDs.
Returns:
- NumArray: Edge IDs
Example:
sources()¶
Get source node IDs for all edges.
Returns:
- NumArray: Source node IDs
Example:
Notes: - For directed graphs: actual source nodes - For undirected: arbitrary endpoint designation
targets()¶
Get target node IDs for all edges.
Returns:
- NumArray: Target node IDs
Example:
edges_table = g.edges.table()
tgts = edges_table.targets()
# Build edge list
import pandas as pd
edge_list = pd.DataFrame({
'source': edges_table.sources().to_list(),
'target': edges_table.targets().to_list()
})
shape()¶
Get table dimensions.
Returns:
- tuple[int, int]: (rows, columns)
Example:
edges_table = g.edges.table()
rows, cols = edges_table.shape()
print(f"{rows} edges, {cols} attributes")
nrows() / ncols()¶
Get number of rows or columns.
Returns:
- int: Row or column count
Example:
as_tuples()¶
Get edges as list of tuples.
Returns:
- list[tuple]: List of (source, target) tuples
Example:
edges_table = g.edges.table()
edge_list = edges_table.as_tuples()
print(edge_list[:5]) # [(0, 1), (0, 2), (1, 3), ...]
Performance: O(m) where m is edge count
Display & Inspection¶
head(n=5) / tail(n=5)¶
Show first/last n rows.
Returns:
- EdgesTable: Subset table
Example:
iter()¶
Iterate over rows.
Returns: - Iterator over rows
Example:
Selection & Filtering¶
select(columns)¶
Select specific columns.
Parameters:
- columns (list[str]): Column names to keep
Returns:
- EdgesTable: Table with selected columns
Example:
# Select subset of attributes
weight_type = edges_table.select(["weight", "type"])
print(weight_type.head())
# Just topology
topology = edges_table.select(["source", "target"])
drop_columns(columns)¶
Remove specific columns.
Parameters:
- columns (list[str]): Columns to drop
Returns:
- EdgesTable: Table without specified columns
Example:
Sorting¶
sort_by(column) / sort_values(column)¶
Sort by column values.
Parameters:
- column (str): Column name to sort by
Returns:
- EdgesTable: Sorted table
Example:
# Sort by weight
by_weight = edges_table.sort_by("weight")
print(by_weight.head())
# Heaviest edges first (if descending supported)
# by_weight_desc = edges_table.sort_by("weight", ascending=False)
Notes: Both methods are aliases
Grouping¶
group_by(column)¶
Group rows by column value.
Parameters:
- column (str): Column to group by
Returns:
- EdgesTableArray: Array of grouped tables
Example:
# Group by edge type
by_type = edges_table.group_by("type")
for type_table in by_type:
print(f"Type: {type_table.nrows()} edges")
# Group by weight threshold
# (First create categorical column)
Export¶
to_pandas()¶
Convert to pandas DataFrame.
Returns:
- pandas.DataFrame: DataFrame
Example:
df = edges_table.to_pandas()
print(df.head())
print(df.describe())
# Edge weight distribution
import matplotlib.pyplot as plt
df['weight'].hist()
plt.show()
to_csv(path) / to_parquet(path) / to_json(path)¶
Export to file formats.
Parameters:
- path (str): File path
Example:
edges_table.to_csv("edges.csv")
edges_table.to_parquet("edges.parquet")
edges_table.to_json("edges.json")
Utility Methods¶
auto_assign_edge_ids()¶
Automatically assign IDs to edges if missing.
Returns:
- EdgesTable: Table with edge IDs assigned
Example:
Conversion¶
base_table() / into_base_table()¶
Convert to BaseTable.
Returns:
- BaseTable: Generic table
Example:
Notes: Both methods are aliases
Usage Patterns¶
Pattern 1: Basic Edge Export¶
edges_table = g.edges.table()
# To pandas
df = edges_table.to_pandas()
print(df.info())
# To CSV with edge list
edges_table.to_csv("edges.csv", index=False)
Pattern 2: Edge List Construction¶
edges_table = g.edges.table()
# Get edge list with attributes
edge_data = []
for src, tgt, eid in zip(
edges_table.sources().to_list(),
edges_table.targets().to_list(),
edges_table.edge_ids().to_list()
):
edge_data.append((src, tgt, eid))
# Or use as_tuples for basic edge list
edge_list = edges_table.as_tuples()
Pattern 3: Weight Analysis¶
# Sort by weight
by_weight = edges_table.sort_by("weight")
# Heaviest edges
print("Heaviest edges:")
heavy_df = by_weight.tail(10).to_pandas()
print(heavy_df[['source', 'target', 'weight']])
# Lightest edges
print("\nLightest edges:")
light_df = by_weight.head(10).to_pandas()
print(light_df[['source', 'target', 'weight']])
Pattern 4: Edge Type Grouping¶
# Group by type
by_type = edges_table.group_by("type")
# Analyze each type
for type_table in by_type:
df = type_table.to_pandas()
print(f"Edge type: {df['type'].iloc[0]}")
print(f" Count: {len(df)}")
print(f" Avg weight: {df['weight'].mean():.2f}")
print(f" Total weight: {df['weight'].sum():.2f}")
Pattern 5: Network Flow Analysis¶
import pandas as pd
# Get edge data
df = edges_table.to_pandas()
# Out-flow by source
out_flow = df.groupby('source')['weight'].agg(['sum', 'count', 'mean'])
print("Out-flow by node:")
print(out_flow.sort_values('sum', ascending=False).head())
# In-flow by target
in_flow = df.groupby('target')['weight'].agg(['sum', 'count', 'mean'])
print("\nIn-flow by node:")
print(in_flow.sort_values('sum', ascending=False).head())
Pattern 6: Selective Export¶
# Export only specific attributes
subset = edges_table.select(["source", "target", "weight"])
subset.to_csv("edge_list.csv")
# Remove metadata before export
public = edges_table.drop_columns(["internal_id", "timestamp"])
public.to_parquet("edges_public.parquet")
Quick Reference¶
| Method | Returns | Description |
|---|---|---|
edge_ids() |
NumArray |
Get edge IDs |
sources() |
NumArray |
Source node IDs |
targets() |
NumArray |
Target node IDs |
as_tuples() |
list |
(source, target) pairs |
shape() |
tuple |
(rows, cols) |
nrows() |
int |
Number of rows |
ncols() |
int |
Number of columns |
head(n) |
EdgesTable |
First n rows |
tail(n) |
EdgesTable |
Last n rows |
select(cols) |
EdgesTable |
Select columns |
drop_columns(cols) |
EdgesTable |
Remove columns |
sort_by(col) |
EdgesTable |
Sort by column |
group_by(col) |
EdgesTableArray |
Group by column |
to_pandas() |
DataFrame |
Export to pandas |
to_csv(path) |
None | Export to CSV |
Object Transformations¶
EdgesTable can transform into:
- EdgesTable → BaseArray:
edges_table["column"] - EdgesTable → DataFrame:
edges_table.to_pandas() - EdgesTable → AggregationResult:
edges_table.agg({"weight": "sum"})
See Object Transformation Graph for complete delegation chains.
See Also¶
- User Guide: Comprehensive tutorial and patterns
- Architecture: How EdgesTable works internally
- Object Transformations: Delegation chains
Additional Methods¶
filter(predicate)¶
Filter.
Parameters:
- predicate: predicate
Returns:
- None: Return value
Example:
filter_by_attr(value)¶
Filter By Attr.
Parameters:
- value: value
Returns:
- None: Return value
Example:
filter_by_sources(source_nodes)¶
Filter By Sources.
Parameters:
- source_nodes: source nodes
Returns:
- None: Return value
Example:
filter_by_targets(target_nodes)¶
Filter By Targets.
Parameters:
- target_nodes: target nodes
Returns:
- None: Return value
Example:
from_csv(path)¶
From Csv.
Parameters:
- path: path
Returns:
- None: Return value
Example:
from_dict(data)¶
From Dict.
Parameters:
- data: data
Returns:
- None: Return value
Example:
from_json(path)¶
From Json.
Parameters:
- path: path
Returns:
- None: Return value
Example:
from_parquet(path)¶
From Parquet.
Parameters:
- path: path
Returns:
- None: Return value
Example:
interactive()¶
Interactive.
Returns:
- str: Return value
Example:
interactive_embed()¶
Interactive Embed.
Returns:
- str: Return value
Example:
interactive_viz()¶
Interactive Viz.
Returns:
- VizAccessor: Return value
Example:
into_base_table()¶
Into Base Table.
Returns:
- BaseTable: Return value
Example:
ncols()¶
Ncols.
Returns:
- int: Return value
Example:
rich_display()¶
Rich Display.
Returns:
- str: Return value
Example:
slice(start, end)¶
Slice.
Parameters:
- start: start
- end: end
Returns:
- None: Return value
Example:
sort_values()¶
Sort Values.
Returns:
- EdgesTable: Return value
Example:
tail()¶
Tail.
Returns:
- EdgesTable: Return value
Example:
to_json(path)¶
To Json.
Parameters:
- path: path
Returns:
- None: Return value
Example:
to_parquet(path)¶
To Parquet.
Parameters:
- path: path
Returns:
- None: Return value
Example:
unique_attr_values()¶
Unique Attr Values.
Returns:
- None: Return value
Example:
viz()¶
Viz.
Returns:
- VizAccessor: Return value
Example: