第八章 上市公司综合评价

# 设置工作路径和导入基本数据分析包
import os
os.chdir("C:\\Users\\Administrator\\Desktop")  #设置路径
import pandas as pd
import numpy as np

8.3 基于总体规模与投资效率的综合评价

8.3.1 数据读取与处理

data=pd.read_excel('data.xlsx')  #读取数据
data2=data.iloc[data['Accper'].values=='2016-12-31',[ 0,2,3,4,5,6,7,8,9,10,11]] #选取变量
data2=data2[data2>0]  # 筛选值大于0的数据
data2=data2.dropna()  #去掉空值
from sklearn.preprocessing import StandardScaler  # 标准化处理
X=data2.iloc[:,1:]
scaler = StandardScaler()
scaler.fit(X)
X=scaler.transform(X)
print(X)  # 查看标准化后的数据
[[-0.12077184 -0.20946319 -0.21733916 ... -0.6705318  -0.43377652-0.5735834 ][ 0.69083519  0.04012502  0.31852587 ... -0.4671922   2.19794302-0.36514147][-0.00884509 -0.01754464 -0.02982446 ...  0.1218636   0.529630480.81434203]...[-0.05291601 -0.09141147 -0.10170258 ...  0.03683563  0.571234151.19270256][-0.1299293  -0.13124677 -0.14376188 ... -0.46828542 -0.379962090.53013973][-0.03878784  0.02360231  0.15033841 ...  0.54963119  1.37186741-0.28226897]]

8.3.2 主成分分析

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+ffs1=pd.Series(F,index=data2['Stkcd'].values)
Fscore1=fs1.sort_values(ascending=False)   #降序,True为升序co=pd.read_excel('TRD_Co.xlsx')  #上市公司名称
Co=pd.Series(co['Stknme'].values,index=co['Stkcd'].values)
Co1=Co[data2['Stkcd'].values]   #主成分数据对应上市公司名称
fs2=pd.Series(F,index=Co1.values)
Fscore2=fs2.sort_values(ascending=False)   #降序,True为升序
print(Fscore2)  # 展示结果
中国石化    30.563527
中国石油    24.194503
中国建筑    17.446082
上汽集团    16.703156
中国神华    13.124306...
华控赛格    -0.828231
凌云B股    -0.838433
亚太实业    -0.843052
津滨发展    -0.843923
湖南天雁    -0.844017
Length: 2632, dtype: float64

8.3.3 收益率计算

# 获取交易数据
trd=pd.read_excel('trd_'+str(2017)+'.xlsx')
# 预定义每个股票的收益率序列
r_list=[]
for i in range(30):code=Fscore1.index[i]  #获取第i个股票的代码dt=trd.iloc[trd.iloc[:,0].values==code,:]  # 获取第i个股票的交易数据I1=dt['Trddt'].values>='2017-05-01'   I2=dt['Trddt'].values<='2017-12-31'dtt=dt.iloc[I1&I2,:].sort_values('Trddt')   # 获取交易数据,并按日期升序排序if len(dtt)>1:    # 判断数据是否为空p1=dtt.iloc[0,3]   # 首个交易日的收盘价可比价p2=dtt.iloc[len(dtt)-1,3]   #最后一个交易日收盘价可比价r_list.append((p2-p1)/p1)   #计算第i个股票的收益率r_total=sum(r_list)
print(r_list)   # 输出每个股票收益率
print(r_total)   # 总收益率
[0.11848232513294617, 0.06639396173239795, -0.00957204605344639, 0.24324498700188213, 0.33375393445521223, 0.718365987273417, 0.6724152918201658, -0.25877663920161725, 0.167044365645404, -0.13941897927926225, 0.5521399919651451, -0.041227204250203285, 0.6325010784315266, 0.3862167370074773, -0.158298128127196, -0.13344885503590906, 0.3732512878750164, 0.018515265504756885, -0.33504476427681906, 0.2319943293144153, 0.06135919351588847, -0.06931526128058003, 0.42151090413976866, -0.13356645323993702, 0.6683480412877023, 0.4315378745751686, -0.15229884531475582, -0.12314705275614667]
4.542961327862418

8.4 基于成长与价值的综合评价

8.4.1 读取数据与处理

data=pd.read_excel('data1.xlsx')
data2=data.iloc[data['Accper'].values=='2014-12-31',[0,2,3,4,5,6,7,8,9]]
da=data2.values
# 消除异常值
da=da[(da[:,8]<4)&(da[:,8]>-4),:]
#反极差化处理
da[:,8]=1-(da[:,8]-min(da[:,8]))/(max(da[:,8])-min(da[:,8]))
# 保留取值大于0,剔除8倍均值外的异常值
for i in np.arange(1,8):da=da[da[:,i]>0,:]da=da[da[:,i]<8*np.mean(da[:,i]),:]
# 取净资产率大于0.06
da=da[da[:,6]>=0.06,:]
#数据标准化处理和反极差化处理,取值越大越好
from sklearn.preprocessing import MinMaxScaler
X=da[:,1:]
scaler = MinMaxScaler()
scaler.fit(X)
X=scaler.transform(X)
X[:,2]=1-X[:,2]
X[:,3]=1-X[:,3]
X[:,4]=1-X[:,4]

8.4.2 主成分分析

#整体过程同上
from sklearn.decomposition import PCA
pca=PCA(n_components=0.95)      #累计贡献率为95%
Y=pca.fit_transform(X)           #满足累计贡献率为95%的主成分数据
gxl=pca.explained_variance_ratio_ ##贡献率F=np.zeros((len(Y)))
for i in range(len(gxl)):f=Y[:,i]*gxl[i]F=F+fFs1=pd.Series(F,index=da[:,0])
Fscore1=Fs1.sort_values(ascending=False)   #降序,True为升序co=pd.read_excel('TRD_Co.xlsx')
Co=pd.Series(co['Stknme'].values,index=co['Stkcd'].values)
Co1=Co[da[:,0]]
Fs2=pd.Series(F,index=Co1.values)
Fscore2=Fs2.sort_values(ascending=False)   #降序,True为升序
print(Fscore2)
卫士通     0.368559
碧水源     0.362696
天华院     0.327474
东方财富    0.318198
卫宁健康    0.263902...
中国建筑   -0.118624
友好集团   -0.124643
中国电建   -0.138318
中国交建   -0.142683
中国铁建   -0.143686
Length: 393, dtype: float64

8.4.3 收益率计算

trd=pd.read_excel('trd_2015.xlsx')r_list=[]
for i in range(20):code=Fscore1.index[i]dt=trd.iloc[trd.iloc[:,0].values==code,:]I1=dt['Trddt'].values>='2015-05-01'I2=dt['Trddt'].values<='2015-12-31'dtt=dt.iloc[I1&I2,:].sort_values('Trddt')if len(dtt)>1:p1=dtt.iloc[0,3]p2=dtt.iloc[len(dtt)-1,3]r_list.append((p2-p1)/p1)r_total=sum(r_list)
print(r_list)
print(r_total)
[-0.29099395425856417, 0.0016465509116702908, 0.13170400063037052, -0.3234949951148852, -0.3635258329288782, 0.03491991497445836, -0.3254119292919446, 0.08069107621569863, -0.03410173778894735, -0.08281314491633895, -0.0008824897477356481, -0.22985003208399216, -0.48254381330704277, 0.13847581256734715, -0.3634755889760709, 0.30135162937699844, -0.08644292394733565, 0.49002629865897385, 0.5785515572286188, 0.8824904840499304]
0.05632088225233067

金融统计分析与挖掘实战8.3-8.4相关推荐

  1. 金融统计分析与挖掘实战6.1-6.3

    # 6.1 关联规则 import numpy as np import pandas as pd import os os.chdir("C:\\Users\\Administrator\ ...

  2. 金融统计分析与挖掘实战5.1-5.2

    # 第5章 机器学习包 # 5.2.1 缺失值处理 import numpy as np import pandas as pd import os os.chdir("C:\\Users\ ...

  3. 金融统计分析与挖掘实战3.3.1-3.3.3

    # 3.3 数据框 # 特征:多个序列按照相同的索引组成的二维表 # 3.3.1 数据框的创建 import pandas as pd import numpy as np # 先导入两个最常用的数据 ...

  4. 金融统计分析与挖掘实战3.1-3.2

    # 第三章 数据处理包 pandas # 3.2序列 #3.2.1 序列的创建与访问 import pandas as pd import numpy as np # 数据分析前先导入两个最常见的包 ...

  5. 金融统计分析与挖掘实战7.6-7.7

    7.6 沪深300指数走势预测 import os os.chdir("C:\\Users\\Administrator\\Desktop") #设置路径 import panda ...

  6. 金融统计分析与挖掘实战7.3-7.5

    # 7.3 上市公式净利润增长率计算 import os os.chdir("C:\\Users\\Administrator\\Desktop") import pandas a ...

  7. 金融数据分析与挖掘实战 4.2 Matplotlib(二)

    Matplotlib常用图形绘制 Matplotlib绘制的常用图形包括散点图.线性图.柱状图.直方图.饼图.箱线图和子图. 1.散点图 散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特 ...

  8. 金融数据分析余挖掘实战1.9-1.10补充

    # 1.9.2 有返回值的函数 def sumt(t): #求1一直加到t的和s = 0while t > 0:s = s + tt = t - 1return s s = sumt(30) # ...

  9. 金融数据分析与挖掘实战练习2.10

    # 2.10矩阵及线性代数的运算 # 2.10.1 创建矩阵 import numpy as np mat1 = np.mat("1 2 3 ; 4 5 6 ; 7 8 9") p ...

最新文章

  1. React学习笔记2:React面向组件编程
  2. 26个Jquery使用小技巧
  3. nginx 的upstream流程是怎样在CONTENT阶段执行的
  4. go标准命令详解0.2 go install
  5. 例子:倒计时按钮可用
  6. boost::merge相关的测试程序
  7. Spring Boot JWT 快速入门
  8. 安装nginx、drizzle和lua
  9. 学习笔记(06):MySQL数据库运维与管理-01-用户创建及授权
  10. 吴恩达机器学习练习4:神经网络学习(损失函数和正则化)
  11. Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4
  12. 数据挖掘实战—基于水色图像的水质评价
  13. Python笔记 :科赫雪花曲线(计算思维训练1)
  14. Mac双开微信客户端方法
  15. Windows渗透与提权:技巧总结篇
  16. html页面字体美化,网页字体的美化-网页设计,HTML/CSS
  17. 求助:mysql中可以正常启动项目,local:8080可以正常打开,但项目网页local:8080/zwsl没办法打开
  18. 提高RM-MEDA局部学习(IRM-MEDA)
  19. EPICS -- pyDevice
  20. springMVC + Dubbo + zooKeeper超详细 步骤

热门文章

  1. CISCO PVST+配置和结果验证
  2. Mac OSX 安装MongoDB
  3. ASP.NET MVC3与ExtJS结合建站笔记(要点)
  4. mysql select源码分析_MYSQL源码分析(三)--Select语句
  5. vue动态添加路由之避坑指南
  6. 应用统计学大数据方向报名自述_应用统计学专业大数据方向人才培养办法
  7. call()、delegatecall()
  8. 瑶镶富资深用户给大家分享现在自媒体普遍的运营模式
  9. tensorflow 出现“cannot identify image file ‘/Users//.DS_Store‘”问题解决的办法
  10. 带你走进“呆呆”——纪念软件工程team project的beta版本发布