金融统计分析与挖掘实战8.3-8.4
第八章 上市公司综合评价
# 设置工作路径和导入基本数据分析包
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相关推荐
- 金融统计分析与挖掘实战6.1-6.3
# 6.1 关联规则 import numpy as np import pandas as pd import os os.chdir("C:\\Users\\Administrator\ ...
- 金融统计分析与挖掘实战5.1-5.2
# 第5章 机器学习包 # 5.2.1 缺失值处理 import numpy as np import pandas as pd import os os.chdir("C:\\Users\ ...
- 金融统计分析与挖掘实战3.3.1-3.3.3
# 3.3 数据框 # 特征:多个序列按照相同的索引组成的二维表 # 3.3.1 数据框的创建 import pandas as pd import numpy as np # 先导入两个最常用的数据 ...
- 金融统计分析与挖掘实战3.1-3.2
# 第三章 数据处理包 pandas # 3.2序列 #3.2.1 序列的创建与访问 import pandas as pd import numpy as np # 数据分析前先导入两个最常见的包 ...
- 金融统计分析与挖掘实战7.6-7.7
7.6 沪深300指数走势预测 import os os.chdir("C:\\Users\\Administrator\\Desktop") #设置路径 import panda ...
- 金融统计分析与挖掘实战7.3-7.5
# 7.3 上市公式净利润增长率计算 import os os.chdir("C:\\Users\\Administrator\\Desktop") import pandas a ...
- 金融数据分析与挖掘实战 4.2 Matplotlib(二)
Matplotlib常用图形绘制 Matplotlib绘制的常用图形包括散点图.线性图.柱状图.直方图.饼图.箱线图和子图. 1.散点图 散点图又称为散点分布图,是以利用坐标点(散点)的分布形态反映特 ...
- 金融数据分析余挖掘实战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) # ...
- 金融数据分析与挖掘实战练习2.10
# 2.10矩阵及线性代数的运算 # 2.10.1 创建矩阵 import numpy as np mat1 = np.mat("1 2 3 ; 4 5 6 ; 7 8 9") p ...
最新文章
- React学习笔记2:React面向组件编程
- 26个Jquery使用小技巧
- nginx 的upstream流程是怎样在CONTENT阶段执行的
- go标准命令详解0.2 go install
- 例子:倒计时按钮可用
- boost::merge相关的测试程序
- Spring Boot JWT 快速入门
- 安装nginx、drizzle和lua
- 学习笔记(06):MySQL数据库运维与管理-01-用户创建及授权
- 吴恩达机器学习练习4:神经网络学习(损失函数和正则化)
- Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4
- 数据挖掘实战—基于水色图像的水质评价
- Python笔记 :科赫雪花曲线(计算思维训练1)
- Mac双开微信客户端方法
- Windows渗透与提权:技巧总结篇
- html页面字体美化,网页字体的美化-网页设计,HTML/CSS
- 求助:mysql中可以正常启动项目,local:8080可以正常打开,但项目网页local:8080/zwsl没办法打开
- 提高RM-MEDA局部学习(IRM-MEDA)
- EPICS -- pyDevice
- springMVC + Dubbo + zooKeeper超详细 步骤
热门文章
- CISCO PVST+配置和结果验证
- Mac OSX 安装MongoDB
- ASP.NET MVC3与ExtJS结合建站笔记(要点)
- mysql select源码分析_MYSQL源码分析(三)--Select语句
- vue动态添加路由之避坑指南
- 应用统计学大数据方向报名自述_应用统计学专业大数据方向人才培养办法
- call()、delegatecall()
- 瑶镶富资深用户给大家分享现在自媒体普遍的运营模式
- tensorflow 出现“cannot identify image file ‘/Users//.DS_Store‘”问题解决的办法
- 带你走进“呆呆”——纪念软件工程team project的beta版本发布