基于共现矩阵计算Dis值并输出CSV文件

本程序根据202305CHErefRA.dta文件中pubyearn信息,从COS-SCbased文件中提取相应的共现矩阵数据,计算Dis值,并输出到CSV文件中。

步骤:

  1. 读取pubid文件: 从202305CHErefRA.dta文件中获取每个pubid对应的pubyearn信息,并保存为列表。
  2. 选择对应表格: 根据pubyearn信息,选择COS-SCbased文件夹中对应年份的表格 (1925、1955或1985)。
  3. 提取共现矩阵数据: 提取每个pubid对应的共现矩阵数据,构建pandas DataFrame。
  4. 计算Dis值: 对于每个pubid,根据提取的共现矩阵数据,使用如下公式计算Dis值:
Dis = (∑(1 - Sij)) / (n*(n-1)/2)

其中:

  • Sij:共现矩阵中第i行第j列的值(i≠j)。
  • n:共现矩阵的维度。
  1. 输出结果: 将所有pubid对应的Dis值保存到CSV文件中,并输出。

代码框架:

import pandas as pd

# 定义函数用于计算Dis值
def calculate_dis(matrix):
    n = matrix.shape[0]
    s = 0
    for i in range(n):
        for j in range(i+1, n):
            s += 1 - matrix.iloc[i,j]
    return s / (n*(n-1)/2)

# 读取共现矩阵文件,根据pubid对应的pubyearn选择相应的表格
def read_matrix(pubid, pubyearn):
    if pubyearn < 1950:
        filename = '1925.csv'
    elif pubyearn < 1980:
        filename = '1955.csv'
    else:
        filename = '1985.csv'
    matrix = pd.read_csv('COS-SCbased/' + filename, index_col=0)
    return matrix.loc[pubid]

# 读取pubid文件,逐行计算Dis值并输出到csv文件
with open('pubid.txt', 'r') as f:
    pubid_list = f.read().splitlines()

dis_list = []
for pubid in pubid_list:
    matrix = read_matrix(pubid, pubyearn)
    dis = calculate_dis(matrix)
    dis_list.append(dis)

result = pd.DataFrame({'pubid': pubid_list, 'Dis': dis_list})
result.to_csv('result.csv', index=False)

注意:

  • 代码框架仅供参考,需要根据具体的数据文件和文件夹路径进行修改。
  • 请确保已安装pandas库。
  • 为了方便理解,代码中已将所有双引号改为单引号。

原文地址: https://www.cveoy.top/t/topic/n39b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录