In [3]:
import networkx as nx
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pylab

G = nx.DiGraph()

In [4]:
Scores = pd.read_csv("scores.csv")
Scores[:10]


Out[4]:
ES LS RX A8 A6 3series 5series 7series XJ Sclass
0 NaN NaN 4.0 3.0 NaN NaN NaN 5.0 2.0 1.0
1 NaN NaN 3.0 2.0 2.0 2.0 2.0 2.0 NaN NaN
2 NaN 4.0 NaN NaN NaN 3.0 NaN 3.0 NaN 3.0
3 NaN 2.0 NaN 2.0 NaN NaN NaN 2.0 4.0 2.0
4 NaN 3.0 3.0 NaN NaN NaN 2.0 NaN NaN 3.0
5 NaN NaN NaN 1.0 NaN NaN NaN 3.0 4.0 3.0
6 NaN 2.0 NaN 3.0 NaN NaN NaN 4.0 -1.0 3.0
7 NaN NaN NaN 3.0 NaN NaN NaN 1.0 4.0 2.0
8 NaN 2.0 NaN 4.0 3.0 -2.0 NaN NaN NaN 3.0
9 NaN 4.0 NaN 2.0 NaN NaN NaN 2.0 NaN 2.0

Page Rank


In [5]:
G = nx.DiGraph()
for i in range(len(Scores)):
    for x in Scores.columns.values:
        if Scores.ix[i][x] > 0:
            for y in Scores.columns.values:
                if Scores.ix[i][y] > 0:
                    if Scores.ix[i][x] > Scores.ix[i][y]:
                        if (x,y) not in G.edges():
                            G.add_edges_from([(x,y)])

In [6]:
pos=nx.spring_layout(G)
nx.draw(G,pos,node_color = 'blue', node_size=2000)
node_labels = {node:node for node in G.nodes()}
nx.draw_networkx_labels(G, pos, labels=node_labels)
pylab.show()

In [7]:
nx.pagerank(G)


Out[7]:
{'3series': 0.07910322957982689,
 '5series': 0.09573750117209036,
 '7series': 0.1216537730762872,
 'A6': 0.05892813273464103,
 'A8': 0.09662922372038388,
 'ES': 0.09559802761764902,
 'LS': 0.1645243436346072,
 'RX': 0.076621128657151,
 'Sclass': 0.12734701517178246,
 'XJ': 0.08385762463558098}

In [8]:
sorted(list(nx.pagerank(G)), key=lambda tup: tup[1])


Out[8]:
['A6', 'A8', 'XJ', 'ES', 'LS', 'RX', 'Sclass', '7series', '5series', '3series']

Weighted Page Rank


In [9]:
W = nx.DiGraph()
for i in range(len(Scores)):
    for x in Scores.columns.values:
        if Scores.ix[i][x] > 0:
            for y in Scores.columns.values:
                if Scores.ix[i][y] > 0:
                    if Scores.ix[i][x] > Scores.ix[i][y]:
                        W.add_edges_from([(x,y)])

In [10]:
nx.pagerank(W)


Out[10]:
{'3series': 0.07910322957982689,
 '5series': 0.09573750117209036,
 '7series': 0.1216537730762872,
 'A6': 0.05892813273464103,
 'A8': 0.09662922372038388,
 'ES': 0.09559802761764902,
 'LS': 0.1645243436346072,
 'RX': 0.076621128657151,
 'Sclass': 0.12734701517178246,
 'XJ': 0.08385762463558098}

In [11]:
sales = {
    "A6": 20,
    "A8": 12,
    "3series": 220,
    "5series": 60,
    "7series": 14,
    "XJ": 6.6,
    "ES": 135,
    "LS": 30,
    "RX": 120,
    "Sclass": 25
}

In [13]:
test = pd.DataFrame({"Sales": sales, "Weighted": nx.pagerank(W), "Unweighted": nx.pagerank(G)})

In [ ]: