使用Python构建科学家合作社会网络

本文拟构建一个科研人员共同完成一篇论文的合作社会网络。
实验步骤如下:

  1. 提取每篇论文中作者
  2. 去除非法字符
  3. 构建图的结点和权重(合作论文的篇数,其中两个结点相同是表示该作者总共发表的论文数量)
  4. 保存文件
  5. 将文件处理成Gephi可识别的格式
import csv
import pandas as pd

row_count = 0
authors_set = set()
# 合作关系与权重(合作的次数)
authors_graph = {}
with open(r'./data/author.csv', 'r') as f:
    authors_reader = csv.reader(f)
    for row in authors_reader:
        row_count += 1
        print(f'读取到第:{row_count}行')
        authors_row = []
        for author in row:
            if len(author) == 0:
                continue
            # 去除空字符串和前后空格
            author = author.strip()
            authors_row.append(author)
        authors_row_num = len(authors_row)
        for i in range(authors_row_num):
            for j in range(i, authors_row_num):
                # 因为是无向图所以只记录了一个
                if f'{authors_row[i]}, {authors_row[j]}' in authors_graph.keys():
                    authors_graph[f'{authors_row[i]}, {authors_row[j]}'] += 1
                elif f'{authors_row[i]}, {authors_row[j]}' in authors_graph.keys():
                    authors_graph[f'{authors_row[i]}, {authors_row[j]}'] += 1
                else:
                    authors_graph[f'{authors_row[i]}, {authors_row[j]}'] = 1
    # 将结果写入excel

key = list(authors_graph.keys())
value = list(authors_graph.values())
result_excel = pd.DataFrame()
result_excel["结点"] = key
result_excel["权重"] = value
writer = pd.ExcelWriter(r'./data/author_graph.xlsx', mode="w+")
result_excel.to_excel(writer, index=False)
writer.save()
print('success!!!')

原始数据

原始数据

保存的数据

保存的数据

最终数据

最终数据
存在的问题:

  • 数据量太庞大(相当于Gephi),约21万条数据,Gephi处理有点慢。(希望同志们多多努力!)
  • 如果需要数据私聊!免费给!!
  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值