2013-03-21 45 views
0

從在網絡中被連接,我要繪製到被連接爲它們彼此間的距離的函數的兩個節點的概率。用於兩個節點的概率使用大熊貓到網絡

我有兩個熊貓系列,一個(distance)是填充有零和一每對節點的,而另一個(adjacency)之間的距離,並且如果節點連接講述。

我的想法是使用cutvalue_counts先計算其內桶的距離對數,工作正常:

factor = pandas.cut(distance, 100) 
num_bin = pandas.value_counts(factor) 

現在,如果過的num_bin同樣大小的用數字矢量每個垃圾箱內連接的節點,我會有我的概率。但如何計算這個矢量?

我的問題是如何知道當中,讓說,3對夫婦第二倉內的節點,有多少連接?

感謝

回答

3

您可以使用crosstab此:

import numpy as np 
import pandas as pd 

factor = pd.cut(distance, 100) 

# the crosstab dataframe with the value counts in each bucket 
ct = pd.crosstab(factor, adjacency, margins=True, 
       rownames=['distance'], colnames=['adjacency']) 

# from here computing the probability of nodes being adjacent is straightforward 
ct['prob'] = np.true_divide(ct[1], ct['All']) 

其中給出這種形式的數據幀:

>>> ct 

adjacency   0 1 All  prob 
distance 
(0.00685, 0.107] 7 4 11 0.363636 
(0.107, 0.205]  6 9 15 0.600000 
(0.205, 0.304]  6 6 12 0.500000 
(0.304, 0.403]  5 2 7 0.285714 
(0.403, 0.502]  4 6 10 0.600000 
(0.502, 0.6]  8 3 11 0.272727 
(0.6, 0.699]  6 2 8 0.250000 
(0.699, 0.798]  4 6 10 0.600000 
(0.798, 0.896]  4 5 9 0.555556 
(0.896, 0.995]  5 2 7 0.285714 
All    55 45 100 0.450000 
+0

真棒,非常感謝 – Mermoz 2013-03-21 15:39:10