i want you to look at this code below and see if  this code address these issues now 
 "For example, community 7 in HTTML is a 'nan community In addition, I can not find the total number of nodes in the whole graph to compare it with the number of unique edges The Eigenvector Centrality is given for nodes not in the main list (100 users) while it is my target
below is the code 
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
import community as community_louvain

data = pd.read_csv("cleaned_data.csv")

# Select the first 15 users as main users
main_users = data["User"][:15]

G = nx.DiGraph()
for user in main_users:
    G.add_node(user, main_user=True)

for i in range(len(data)):
    user = data.iloc[i]["User"]
    followers = data.iloc[i]["Followers"].split(",")
    following = data.iloc[i]["Following"].split(",")

    if followers[0] != 'nan' and followers[0] != '':
        for follower in followers:
            G.add_edge(follower, user)
            if not G.has_node(follower):
                G.add_node(follower, main_user=False)
    else:
        G.add_node(f"user_{i}", main_user=False)

    if following[0] != 'nan' and following[0] != '':
        for follow in following:
            G.add_edge(user, follow)
            if not G.has_node(follow):
                G.add_node(follow, main_user=False)
    else:
        G.add_node(f"user_{i+len(data)}", main_user=False)

# Check if 'nan' node exists before removing
if 'nan' in G:
    G.remove_node('nan')

# Create a PNG visualization of the main graph
plt.figure(figsize=(30, 20))
pos = nx.circular_layout(G)
node_colors = ['red' if 'main_user' in G.nodes[node] and G.nodes[node]['main_user'] else 'skyblue' for node in G.nodes]
nx.draw_networkx(G, pos, with_labels=True, node_color=node_colors, edge_color='gray', node_size=24000, font_size=12)
plt.tight_layout()
plt.savefig("graph.png")
plt.close()

# Calculate Eigenvector Centrality for the main users
eigenvector_centrality = nx.eigenvector_centrality(G)

# Remove the temporary nodes and edges
for i in range(len(data)):
    if G.has_node(f"user_{i}"):
        G.remove_node(f"user_{i}")
    if G.has_node(f"user_{i+len(data)}"):
        G.remove_node(f"user_{i+len(data)}")

# Perform community detection using Louvain algorithm
partition = community_louvain.best_partition(G.to_undirected())
main_user_communities = set(partition[user] for user in main_users)

# Visualize subgraphs by community
graphs_data = []
for community_num in main_user_communities:
    subgraph_nodes = [node for node in G.nodes if partition[node] == community_num]
    subgraph = G.subgraph(subgraph_nodes)

    plt.figure(figsize=(25, 15))
    pos = nx.kamada_kawai_layout(subgraph)
    node_colors = ['red' if 'main_user' in subgraph.nodes[node] and subgraph.nodes[node]['main_user'] else 'skyblue' for node in subgraph.nodes]
    nx.draw_networkx(subgraph, pos, with_labels=True, node_color=node_colors, edge_color='gray', node_size=19000, font_size=11)
    plt.tight_layout()
    plt.savefig(f"graph_community_{community_num}.png")
    plt.close()
    graph_data = {
        'Community': community_num,
        'Nodes': subgraph.number_of_nodes(),
        'Edges': subgraph.number_of_edges(),
        'Density': nx.density(subgraph),
    }
    graphs_data.append(graph_data)

# Calculate graph metrics
total_nodes = G.number_of_nodes()
number_of_edges = G.number_of_edges()
unique_edges = G.size(weight="weight")
eigenvector_centrality_main_users = {node: centrality for node, centrality in eigenvector_centrality.items() if node in main_users}

# Print graph metrics
print("Total Number of Nodes:", total_nodes)
print("Number of Edges:", number_of_edges)
print("Unique Edges:", unique_edges)
print("Eigenvector Centrality (Main Users):", eigenvector_centrality_main_users)

# Save graphs and metrics data to CSV files
graphs_df = pd.DataFrame(graphs_data)
graphs_df.to_csv('graphs_data.csv', index=False)

metrics_data = {
    'Total Number of Nodes': total_nodes,
    'Number of Edges': number_of_edges,
    'Unique Edges': unique_edges,
    'Eigenvector Centrality (Main Users)': eigenvector_centrality_main_users,
}

metrics_df = pd.DataFrame([metrics_data])
metrics_df.to_csv('metrics_data.csv', index=False)