import pandas as pd
import os

# 指定数据文件和输出文件路径
data_folder = '202305CHErefRA/'  # 共现矩阵数据文件夹路径
base_folder = 'COS-SCbased/'  # COS-SCbased文件夹路径
data_file = '202305CHErefRA.dta'  # 数据文件名
output_file = 'output.csv'  # 输出文件名

# 加载数据文件并提取pubyearn变量
data_df = pd.read_stata(os.path.join(data_folder, data_file))
pubyearn = data_df['pubyearn']


# 定义函数用于计算Dis并输出结果到DataFrame中
def calc_dis(base_path, dim_num):
    dis_list = []
    for pubid in range(1, len(pubyearn) + 1):
        file_name = 'che{:03}.csv'.format(pubid)
        year = int(str(pubyearn[pubid - 1]).split('.')[0])
        if year < 1950:
            base_file = '1925.xlsx'
        elif year < 1980:
            base_file = '1955.xlsx'
        else:
            base_file = '1985.xlsx'

        # 从基础文件中读取S_ij数值
        base_df = pd.read_excel(os.path.join(base_folder, base_file), sheet_name=pubid - 1, header=None)
        base_df = base_df.fillna(0)
        S_ij = (base_df.values.sum() - base_df.values.diagonal().sum()) / (dim_num * (dim_num - 1))

        # 计算Dis值
        dis_value = (1 - S_ij) / (dim_num * (dim_num - 1))
        dis_list.append(dis_value)

    return pd.DataFrame({'pubid': range(1, len(pubyearn) + 1), 'Dis': dis_list})


# 提取共现矩阵维度数
dim_num = pd.read_csv(os.path.join(data_folder, 'che001.csv')).shape[0]

# 计算Dis并输出到CSV文件
dis_df = calc_dis(base_folder, dim_num)
output_path = os.path.join(data_folder, output_file)
dis_df.to_csv(output_path, index=False)

该代码使用Python中的Pandas库来读取Stata和Excel文件,并使用自定义函数calc_dis来计算Dis值。该代码中的关键步骤如下:

  1. 加载数据文件:使用pd.read_stata读取Stata数据文件,并提取pubyearn变量。
  2. 读取基础文件:使用pd.read_excel读取Excel文件,并使用fillna(0)填充缺失值。
  3. 计算S_ij:计算共现矩阵的S_ij值,使用.values将DataFrame转换为numpy数组,以方便计算对角线元素的和。
  4. 计算Dis值:使用S_ij值计算Dis值,并将其存储在dis_list中。
  5. 输出结果:将dis_list存储到DataFrame中,并使用to_csv方法将其保存到CSV文件。

该代码可以帮助用户分析共现矩阵数据,计算每个出版物之间的差异性。

注意:

  • 该代码假设共现矩阵数据存储在data_folder文件夹中,而基础文件存储在base_folder文件夹中。
  • 该代码使用了diag函数,该函数需要一个至少两维的数组作为输入。如果共现矩阵数据只有一维,则需要将其转换为二维数组。
  • 该代码中的pubyearn变量用于区分不同的基础文件。如果数据中没有pubyearn变量,则需要使用其他方法来区分基础文件。
Python Pandas 计算Dis值:共现矩阵数据分析

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

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