使用R语言根据财务指标对上市公司进行聚类分析

tushareID:469251

先使用python用tushare库获取几家上市公司的财务比例。我们随意选取了9家上市公司公布的20220630期的五项财务比例,分别为基本每股收益、流动比率、总资产周转率、总资产净利润、权益乘数。代码如下:

import tushare as ts
import pandas as pd
import time

pro = ts.pro_api('tushare网站的接口码')

stock_code=[]
for i in range(0,10):
    x=600000+i*100
    x='{}.SH'.format(x)
    stock_code.append(x)
print(stock_code)

fields=['eps','current_ratio',
                 'assets_turn','npta','assets_to_eqt']
bl=pd.DataFrame([fields])
bl.columns=fields
for i in stock_code:
    df = pro.fina_indicator(ts_code=i,period='20220630',
            fields=fields)
    bl=pd.concat([bl,df],axis=0,ignore_index=True)
    time.sleep(0.5)
bl=pd.DataFrame(bl)
bl.drop(index=0,inplace=True)
bl.to_excel('./balance.xlsx')

输出结果如下

eps current_ratio assets_turn npta assets_to_eqt
1 1 0.0119 0.3677 12.2588
2 -0.1196 0.8509 0.1455 -0.8449 2.882
3 -0.027 1.6939 0.2135 -0.5562 1.9234
4 0.03 1.1826 0.4094 0.9446 1.6388
5 0.02 1.4715 0.2375 1.1253 1.4928
6 0.35 0.9594 0.7095 2.4474 3.1758
7 2.1 1.5675 0.3989 6.0189 1.9791
8 -0.15 1.1642 0.4158 -3.7259 1.7705
9 0.4965 0.348 0.0765 3.4535 1.8151

使用python做一些统计分析太麻烦, 所以这里使用Rstudio进行聚类分析,聚类分析计算距离的方法有很多,这里用默认的最长距离法,最短距离法、类平均法等只需改参数method即可。

library(xlsx)
data <-read.xlsx2('balance.xlsx',sheetIndex=1)
distance <- dist(data[,1:5])  #计算距离
data.hc <- hclust(distance)   #聚类分析,默认为最长距离法
#data.hc <- hclust(distance,method="single") #最短距离法
#data.hc <- hclust(distance,method="median") #中间距离法
#data.hc <- hclust(distance,method="average") #类平均法
#data.hc <- hclust(distance,method="centroid") #重心法
#data.hc <- hclust(distance,method="ward") #离差和平均法
plot(data.hc, hang = -1,labels = data$num) #绘画系谱图 
re <- rect.hclust(data.hc, k =3) #分为3类
re

 我们把9家公司根据这几个财务指标分为3类,输出结果如下图

使用R语言根据财务指标对上市公司进行聚类分析_第1张图片

 

你可能感兴趣的:(r语言,python,金融,聚类)