0

Networkx python パッケージと Gaphi で関係グラフを作成してデータを視覚化しようとして、Twitter アカウントとフォロワー情報をダウンロードしようとしています。

    import networkx as nx
    import MySQLdb

    conn = MySQLdb.connect(host="localhost", # your host, usually localhost
                 user="root", # your username
                  passwd="123456", # your password
                  db="twitterbank") # name of the data base
    cur = conn.cursor()

    def get_user_info(m):
        cur.execute("SELECT tweeter_name FROM tweets_fetch where tweeter_id=%s" %m)

    g=nx.Graph()

    def add_node_tw(n,weight=None,time=None,location=None):
        if not g.has_node(n):
            screen_name=get_user_info(n)
            g.add_node(n)
            g.node[n]['weight']=1
            g.node[n]["screen_name"]=screen_name
        else:
            g.node[n]['weight']+=1

    def add_edge_tw(n1,n2,weight=None):
        if not g.has_edge(n1,n2):
            g.add_edge(n1,n2)
            g[n1][n2]['weight']=1
        else:
            g[n1][n2]['weight']+=1

    #generate set of users

     users=set()
     cur.execute("SELECT distinct tweeter_id FROM tweets_fetch")
     cur.fetchall() 
     for row in cur:  
          users.add(row[0])


    g=nx.DiGraph()

    for u_id in users:
        add_node_tw(u_id)
        cur.execute("select * from tweeter_followers where tweeter_id=%s" %u_id)
        cur.fetchall()
        for row1 in cur:
            if row1[0] in users:
                add_node_tw(row1[0])
                add_edge_tw(row1[0],row1[1])
    nx.write_graphml(g,'relationship_graphml')  

ダウンロードしたデータで作成した 2 つのテーブルは次のとおりです。
tweets_fetch: with columns (tweeter_id, tweeter_name, tweet_content, datetime...)
tweeter_followers: with columns (tweeter_id, follower_id)

上記のコードを実行すると、次のようにエラーが表示されます。

    Traceback (most recent call last):
    File "D:\Sepups\eclipse-SDK-3.7.1-win32-    x86_64\eclipse\plugins\org.python.pydev_2.7.3.2013031601\pysrc\pydevd.py", line 1397, in <module>
    debugger.run(setup['file'], None, None)
    File "D:\Sepups\eclipse-SDK-3.7.1-win32-x86_64\eclipse\plugins\org.python.pydev_2.7.3.2013031601\pysrc\pydevd.py", line 1090, in run
    pydev_imports.execfile(file, globals, locals) #execute the script
    File "D:\java\python\workspace\tweetsHarvest\src\tweet_graph.py", line 47, in <module>
    add_node_tw(u_id)
    File "D:\java\python\workspace\tweetsHarvest\src\tweet_graph.py", line 24, in add_node_tw
    g.node[n]['weight']+=1
    KeyError: 'weight'

誰でもそれを修正する方法を知っていますか? 私はPythonとGephiの初心者です。コードを作成するときに参照したブログはhttp://giladlotan.com/blog/mapping-twitters-python-data-science-communities/です

4

1 に答える 1

0

同じコードに基づいてスクリプトを作成しましたが、特に 1 つのデータ セットを使用して同じエラーが発生しました。私と同じ問題を抱えている場合は、データのいくつかの行に問題があります。私にとっては、数千のエッジのうちのほんの一握りでした。どこに問題があるかを診断するには、add_edge_tw ステートメントの直前に各行を出力し、add_edge_tw の前に try/except 句を追加します。

Python と NetworkX に詳しい他の人がより良い答えを出すことができると確信していますが、診断中にこれが迅速な修正に役立つことを願っています.

于 2014-02-13T17:58:44.530 に答える