1.
# -*- coding: utf-8 -*-
# 读取反映上市公司透明度相关指标数据"data.xlsx",字段如下:
# 股票代码、会计期间、收益率、负债率、增长率、两权分离度、实际控制人性质、
# 高管持股数量、股东总数、兼任情况 、董事人数(规模)、独立董事人数
# 读取上市公司股票基本信息表"TRD_Co.xlsx",字段如下:
# 股票代码(Stkcd)、股票简称(Stknme)
# 任务如下:
# 1.对指标数据进行均值-方差标准化、主成分分析(累计贡献率在95%以上)并提取主成分
# 2.基于提取的主成分计算综合得分,综合得分=提取的主成分与其累计贡献率乘积之和、
# 3.返回综合排名,用序列Fscore2来表示,index为股票简称、值为综合得分
def return_values():
import pandas as pd
data=pd.read_excel('data.xlsx')
data2=data.iloc[:,[0,2,3,4,5,6,7,8,9,10,11]]
#data2=data2[data2>0]
data2=data2.dropna()
from sklearn.preprocessing import StandardScaler
X=data2.iloc[:,1:]
scaler = StandardScaler()
scaler.fit(X)
X=scaler.transform(X)
from sklearn.decomposition import PCA
pca=PCA(n_components=0.95) #累计贡献率为95%
Y=pca.fit_transform(X) #满足累计贡献率为95%的主成分数据
gxl=pca.explained_variance_ratio_ #贡献率
import numpy as np
F=np.zeros((len(Y)))
for i in range(len(gxl)):
f=Y[:,i]*gxl[i]
F=F+f
co=pd.read_excel('TRD_Co.xlsx')
Co=pd.Series(co['Stknme'].values,index=co['Stkcd'].values)
Co1=Co[data2['股票代码'].values]
fs2=pd.Series(F,index=Co1.values)
Fscore2=fs2.sort_values(ascending=False) #降序,True为升序
return Fscore2