code: def process(self):
      edges = pd.read_csv("./graph_edges.csv")
      properties = pd.read_csv("./graph_properties.csv")
      self.graphs = []
      self.labels = []
  
      # Create a graph for each graph ID from the edges table.
      # First process the properties table into two dictionaries with graph IDs as keys.
      # The label and number of nodes are values.
      label_dict = {}
      num_nodes_dict = {}
      for _, row in properties.iterrows():
          label_dict[row["graph_id"]] = row["label"]
          num_nodes_dict[row["graph_id"]] = row["num_nodes"]
  
      # For the edges, first group the table by graph IDs.
      edges_group = edges.groupby("graph_id")
  
      # For each graph ID...
      for graph_id in edges_group.groups:
          # Find the edges as well as the number of nodes and its label.
          edges_of_id = edges_group.get_group(graph_id)
          src = edges_of_id["src"].to_numpy()
          dst = edges_of_id["dst"].to_numpy()
          num_nodes = num_nodes_dict[graph_id]
          label = label_dict[graph_id]
  
          # Create a graph and add it to the list of graphs and labels.
          g = dgl.graph((src, dst), num_nodes=num_nodes)
          self.graphs.append(g)
          self.labels.append(label)
  
      # Convert the label list to tensor for saving.
      self.labels = torch.LongTensor(self.labels)
  
file_path: dgl/tutorials/blitz/6_load_data.py
imports: import urllib.request
  import pandas
  import os
  import dgl
  import torch
  from dgl.data import DGLDataset
label_desc: Use image node_id 2 for calling the SyntheticDataset obj's underlying member method code with example usage: obj.process() without return types