金融大数据分析-练习五

金融大数据分析-练习五

一、要求

今有2017-2018年每个季度的每股指标数据,共22720条数据记录,数据全部来源于国泰安CSMAR数据库,部分数据记录及表结构如表右所示:

其中Stkcd-股票代码、Accper-截止日期、F090301B-归属于母公司每股收益、F090601B-每股营业收入、F091001A-每股净资产、F091301A-每股资本公积、F091501A-每股未分配利润、F091801B-每股经营活动产生的现金流量净额。问题如下:

1.对每个股票代码,计算每个季度每股收益同比增长率,并找出连续4个季度每股收益同比增长率大于20%的股票代码。

2.取2018年度的数据,对以上6个指标作主成分分析,要求提取信息占比在95%以上,并写出每个主成分的表达式和说明其主成分的意义。

3.基于第2步提取的主成分进行K-均值聚类分析,并获取其聚类中心。

二、代码(仅供参考)

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# 读取Excel文件中的数据
df = pd.read_excel('E:/金融大数据分析/data.xlsx')
# 数据预处理
# 将表示缺失值的字符串"NULL"替换为NaN
df.replace('NULL', np.nan, inplace=True)
# 删除含有任何NaN值的行
df = df.dropna()
# 删除所有列值全为0的行
df = df[(df != 0).all(1)]
# 1.对每个股票代码,计算每个季度每股收益同比增长率
# 根据股票代码('Stkcd')进行分组 pct_change(4)来计算每股收益的四季度同比增长率,* 100是为了转换成百分比形式
df['cagr'] = df.groupby('Stkcd')['F090301B'].pct_change(4) * 100
# 筛选出连续4个季度每股收益同比增长率大于20%的股票代码
# 筛选出每股收益同比增长率大于20%的数据行,然后根据股票代码进行分组,并通过filter方法筛选出连续4个季度每股收益同比增长率大于20%的股票代码。最后使用unique()方法获取唯一的股票代码。
stkcd_20 = df[df['cagr'] > 20].groupby('Stkcd').filter(lambda x: len(x) >= 4)['Stkcd'].unique()
# 输出连续4个季度每股收益同比增长率大于20%的股票代码
print("连续4个季度每股收益同比增长率大于20%的股票代码:\n", stkcd_20)
# 2.取2018年度的数据
# 使用字符串的startswith方法筛选出Accper列以'2018'开头的行
data_2018 = df[df['Accper'].str.startswith('2018')]
# 提取6个指标数据
features = data_2018[['F090301B', 'F090601B', 'F091001A', 'F091301A', 'F091501A', 'F091801B']]
# 数据标准化
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)
# 进行主成分分析PCA
# 要求提取信息占比在95%以上
pca = PCA(n_components=0.95)
principal_components = pca.fit_transform(features_scaled)
# 输出每个主成分的表达式
print("主成分表达式:\n", pca.components_)
# 输出每个主成分的意义
print("主成分意义:\n", pca.explained_variance_ratio_)
# 3.基于主成分进行K-均值聚类分析
# 设置聚类类别数为3
kmeans = KMeans(n_clusters=3)
kmeans.fit(principal_components)
# 获取聚类中心
# 取到每个簇的中心点坐标,即聚类中心
cluster_centers = kmeans.cluster_centers_
print("聚类中心:\n", cluster_centers)

Stkcd [股票代码] ShortName [股票简称] Accper [统计截止日期] Typrep [报表类型编码] Indcd [行业代码] Indnme [行业名称] Source [公告来源] F090101B [每股收益1] F090101C [每股收益TTM1] F090102B [每股收益2] F090102C [每股收益TTM2] F090103B [每股收益3] F090103C [每股收益TTM3] F090104B [每股收益4] F090104C [每股收益TTM4] F090201B [每股综合收益1] F090201C [每股综合收益TTM1] F090202B [每股综合收益2] F090202C [每股综合收益TTM2] F090301B [归属于母公司每股收益1] F090301C [归属于母公司每股收益TTM1] F090401B [归属于母公司每股综合收益1] F090401C [归属于母公司每股综合收益TTM1] F090501B [每股营业总收入1] F090501C [每股营业总收入TTM1] F090601B [每股营业收入1] F090601C [每股营业收入TTM1] F090701B [息税前每股收益1] F090701C [息税前每股收益TTM1] F090801B [息税折旧摊销前每股收益1] F090801C [息税折旧摊销前每股收益TTM1] F090901B [每股营业利润1] F090901C [每股营业利润TTM1] F091001A [每股净资产1] F091101A [每股有形资产1] F091201A [每股负债1] F091301A [每股资本公积1] F091401A [每股盈余公积1] F091501A [每股未分配利润1] F091601A [每股留存收益1] F091701A [归属于母公司每股净资产1] F091801B [每股经营活动产生的现金流量净额1] F091801C [每股经营活动产生的现金流量净额TTM1] F091901B [每股投资活动现金净流量1] F091901C [每股投资活动现金净流量TTM1] F092001B [每股筹资活动现金净流量1] F092001C [每股筹资活动现金净流量TTM1] F092101B [每股企业自由现金流量1] F092101C [每股企业自由现金流量TTM1] F092201B [每股股东自由现金流量1] F092201C [每股股东自由现金流量TTM1] F092301B [每股折旧和摊销1] F092301C [每股折旧和摊销TTM1] F092401B [每股企业自由现金流(原有)] F092501B [每股股权自由现金流(原有)] F092601B [每股现金净流量1] F092601C [每股现金净流量TTM1] F092602B [每股现金净流量2] F092602C [每股现金净流量TTM2] F090302B [归属于母公司每股收益2] F090302C [归属于母公司每股收益TTM2] F090402B [归属于母公司每股综合收益2] F090402C [归属于公司每股综合收益TTM2] F090502B [每股营业总收入2] F090502C [每股营业总收入TTM2] F090602B [每股营业收入2] F090602C [每股营业收入TTM2] F090702B [息税前每股收益2] F090702C [息税前每股收益TTM2] F090802B [息税折旧摊销前每股收益2] F090802C [息税折旧摊销前每股收益TTM2] F090902B [每股营业利润2] F090902C [每股营业利润TTM2] F091002A [每股净资产2] F091102A [每股有形资产2] F091202A [每股负债2] F091302A [每股资本公积2] F091402A [每股盈余公积2] F091502A [每股未分配利润2] F091602A [每股留存收益2] F091702A [归属于母公司每股净资产2] F091802B [每股经营活动产生的现金流量净额2] F091802C [每股经营活动产生的现金流量净额T 季度数据,所有沪深北上市公司的 分别包含excel、dta数据文件格式及其说明,便于不同软件工具对数据的分析应用 数据来源:基于上市公司年报及公告数据整理,或相关证券交易所、各部委、省、市数据 数据范围:基于沪深北证上市公司 A股(主板、中小企业板、创业板、科创板等)数据整理计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值