Skip to content

Instantly share code, notes, and snippets.

@Msender98
Last active August 3, 2020 02:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Msender98/1a0b422d9fdb421a0800be99a3b9a045 to your computer and use it in GitHub Desktop.
Save Msender98/1a0b422d9fdb421a0800be99a3b9a045 to your computer and use it in GitHub Desktop.
Venmo Graph Analysis
import networkx as nx
import pickle
import pandas as pd
#Load Data
user_df = pickle.load(open('user_data.p','rb'))
transaction_df = pickle.load(open('transaction_data.p','rb'))
G_venmo = nx.MultiGraph()
G_venmo.add_nodes_from(user_df['user_id'])
G_venmo.add_edges_from(list(zip(transaction_df['actor_id'], transaction_df['target_id'])))
def user_rank(users, G, num_friends = 5):
'''
Inputs are a list of user_ids and a graph of Venmo transactions. Returns N (set by num_friends) highest ranked users to the given user.
'''
if type(users == str):
personalization = {users : 1}
else:
prob = 1/len(users)
personalization = {user : prob for user in users}
page_rank_users = nx.pagerank_scipy(G, personalization = personalization)
page_rank_users = {u : v for u,v in sorted(page_rank_users.items(), key=lambda item: item[1], reverse = True)}
friends = list(page_rank_users)[0:num_friends+1]
return friends
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment