基于共现矩阵计算Dis值并输出CSV文件
基于共现矩阵计算Dis值并输出CSV文件
本程序根据202305CHErefRA.dta文件中pubyearn信息,从COS-SCbased文件中提取相应的共现矩阵数据,计算Dis值,并输出到CSV文件中。
步骤:
- 读取pubid文件: 从202305CHErefRA.dta文件中获取每个pubid对应的pubyearn信息,并保存为列表。
- 选择对应表格: 根据pubyearn信息,选择COS-SCbased文件夹中对应年份的表格 (1925、1955或1985)。
- 提取共现矩阵数据: 提取每个pubid对应的共现矩阵数据,构建pandas DataFrame。
- 计算Dis值: 对于每个pubid,根据提取的共现矩阵数据,使用如下公式计算Dis值:
Dis = (∑(1 - Sij)) / (n*(n-1)/2)
其中:
- Sij:共现矩阵中第i行第j列的值(i≠j)。
- n:共现矩阵的维度。
- 输出结果: 将所有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 著作权归作者所有。请勿转载和采集!