合作网络建模(1)

如上图,是我们在处理联合风投数据时常遇到的格式,但是可能我们更习惯于处理投资方放在同一行内的格式,为此我我写了一个简易的转换函数:
点击查看代码
def type_change( df1):
'''
用于转换数据格式类型,输入为dataframe格式,输出为list
dataframe要求第一列是受资者,第二列是投资者
投资者从分行格式的转为同一行
'''
a=[]
x=[]
i=0
while i<len(df1)-1:
if (df1.loc[i][0]==df1.loc[i+1][0]):
x.append(df1.loc[i][1])
elif (df1.loc[i][0]==df1.loc[i-1][0])&(df1.loc[i][0]!=df1.loc[i+1][0]):
x.append(df1.loc[i][1])
a.append(x)
x=[]
else:
a.append([df1.loc[i][1]])
i=i+1
return a
节点列表:
点击查看代码
def get_nodes(co_list): #节点列表
nodes_list = []
for authors in co_list:
auths = authors[0].split(",") # 分隔符
for auth in auths:
if auth not in nodes_list: # 去除重复
nodes_list.append(auth)
return nodes_list
边列表
点击查看代码
def get_edges(co_list,col=0):
''' (Newest)co_list: 二维列表/一维列表
col: 节点所在列数,默认为第一列(仅二维列表用到此参数)
返回值:边列表,[[企业1,企业2],...]
'''
edge_list = []
num = 1
for authors in co_list:
length = len(authors)
for i in range(length-1):
for j in range(i+1,length):
edge_list.append([authors[i],authors[j]])
return edge_list
其实得到这两个表以后就足够建模了,个人认为算是最基础的网络建模,当然如果你的数据是处于一行内的话可以直接参考后面两个函数就OK,注意分隔符的差别进行改用

浙公网安备 33010602011771号