Фильтровать и сортировать края и веса на основе даты? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть вопрос. Предоставленный набор данных имеет 4 столбца

< source node, dest. node, call duration (in mins), timestamp (date)>

Я использовал networkx для отображения ребер и пар весов в следующем формате (см. Рисунок). Мне нужно отсортировать их на основе каждого дня в заголовке отметки времени файла CSV. Networkx не распознает отметку времени независимо. Я использую DiGraph. Код прилагается. Входы и помощь приветствуются.

В наборе данных есть 4 столбца

< source node, dest. node, call duration (in mins), timestamp (date)>

Я использовал networkx для отображения ребер и пар весов в следующем формате (см. Рисунок). Мне нужно отсортировать их на основе каждого дня в заголовке отметки времени файла CSV. Networkx не распознает отметку времени независимо. Я использую DiGraph. Код прилагается. Входы и помощь приветствуются.

import networkx as nx 
import math
import matplotlib.pyplot as plt
import numpy as np
from __future__ import division
import csv
import pandas as pd
filename = "path/Calls.csv" 
Data  = open(filename, "r", encoding='utf8')
read = csv.reader(Data)
Graphtype=nx.DiGraph()  
G = nx.parse_edgelist(Data, delimiter=',', create_using=Graphtype,
              nodetype=int, data=(('weight', int),))
# this gives the node info, associate #degree, in degree, out degree and Social Score(?)
o1 = open ("part1.csv", "w")
fields = ["Source Node", "Total Degree", "In_degree", "Out_degree", "Social Score"]
writer = csv.DictWriter(o1, fieldnames=fields)
writer.writeheader()
for x in G.nodes():
    print ("Node:", x, "has total #degree:",G.degree(x), " , In_degree: ", G.out_degree(x)," and out_degree: ", G.in_degree(x))
    ss= ((G.out_degree(x))**0.5 * (G.in_degree(x))**0.2) ** G.degree(x)
    print("Social Score for", x, "is", ss)
    tempDict = {}
    tempDict ["Source Node"] = x
    tempDict["Total Degree"] = G.degree(x)
    tempDict["In_degree"] = G.out_degree(x)
    tempDict["Out_degree"] = G.in_degree(x)
    tempDict['Social Score'] = ss
    writer.writerow (tempDict)

#print(tempDict)

#This gives the edge weights for pairwise nodes
o2 = open ("part2.csv", "w")
fields = ["E1", "E2", "Weight"]
writer = csv.DictWriter(o2, fieldnames=fields)
writer.writeheader()

for u, v in G.edges():
      print ("Weight of Edge ("+str(u)+","+str(v)+")", G.get_edge_data(u,v))
      tempDict = {}
      tempDict ["E1"] = u
      tempDict ["E2"] = v
      tempDict["Weight"] = G.get_edge_data(u,v)
      writer.writerow (tempDict)

Выходной формат, ожидаемый так: Пример:

Date | Source | Destination | Weight
19-01-2008 | 01 | 23 | 45
20-01-2008 | 02 | 24 | 21
20-01-2008 | 09 | 31 | 92

... и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...