金融数据分析——2019年证券公司经营数据分析及评级建模

本文基于2019年证券公司经营数据,进行数据预处理,包括缺失值处理,然后进行探索性分析,揭示了行业马太效应。接着通过特征工程和机器学习算法构建评级模型,并利用NLP进行战略文本分析,提取关键词。最后进行了经营指标的灰色预测。
摘要由CSDN通过智能技术生成

根据证券业协会发布的2019年证券公司经营业绩排名情况以及证券公司名单进行数据处理整合后进行分析并根据证监会公布的指标进行评级模型建模:

数据预处理

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
pd.set_option('display.max_rows', None)#显示全部行
pd.set_option('display.max_columns', None)#显示全部列
plt.rcParams['font.sans-serif']=['SimHei']#正常显示中文
plt.rcParams['axes.unicode_minus'] = False

数据导入

company = pd.read_excel('证券公司分析数据.xlsx',sheet_name='证券公司概览')
index = pd.read_excel('证券公司分析数据.xlsx',sheet_name='2019年证券公司指标对比')

重复值处理

security_company = company.copy().drop_duplicates('证券公司简称')
security_index = index.copy().drop_duplicates('证券公司简称')
security_company.info()

在这里插入图片描述

缺失值分析及处理

security_company缺失值分析:在证监会披露的证券公司名录名单中共有134家,其中包含了资管、承销保荐等公司,进行合并项统计后共有98家证券公司

security_company = security_company.dropna()
#计算缺失率
missing_percentage = []
for i in range(len(security_index)):
    missing_percentage.append(
        [security_index.iloc[i]['证券公司简称'],
        round(
            security_index.iloc[i].isnull().sum() /
            len(security_index.iloc[i]) * 100, 2)])
pd.DataFrame(missing_percentage , columns=['证券公司简称','缺失率']).sort_values(by='缺失率',ascending= False)
#摩根大通(中国)与野村东方为新成立外资券商,较多数据未披披露,故删除其数据
security_index = security_index[security_index['证券公司简称'].isin(['摩根大通','野村东方'])== False]
security_index.info()

在这里插入图片描述
security_index缺失值分析:
净资产:缺失值为网信证券,其净资产为负值,填充为0
净资产收益率:缺失值为网信证券,其净资产为负值,填充为0
公益性支出:缺失值过小,填充为0
净资本:缺失值为网信证券,填充为0
核心净资本:缺失值为网信证券,填充为0
财务杠杆倍数:缺失值为网信证券,以C,CC,CCC级的平均财务杠杆填充
客户资金余额:缺失值过小,填充为0
证券经纪业务收入:缺失值过小,填充为0
代理买卖证券业务收入(含席位租赁):缺失值过小,填充为0
交易单元席位租赁收入 :缺失值过小,填充为0,负值填充为0
代理买卖证券业务收入:该指标仅公布位于行业中位数以上公司的排名(考虑转变成离散的编号)
营业部平均代理买卖证券业务收入:缺失值过小,填充为0
代理销售金融产品收入:缺失值过小,填充为0
承销与保荐业务收入:缺失值过小,填充为0
股票主承销佣金收入:缺失值过小,填充为0
债券主承销佣金收入:缺失值过小,填充为0
担任资产证券化管理人家数:缺失值过小,填充为0
并购重组财务顾问业务收入:缺失值过小,填充为0
投资咨询业务收入:缺失值过小,填充为0
资产管理业务收入:该指标仅公布位于行业中位数以上公司的排名(考虑转变成离散的编号)
代理机构客户买卖证券交易额占代理全部客户买卖证券交易额的比例:该指标仅公布位于行业中位数以上公司的排名(考虑转变成离散的编号)
基于柜台与机构客户对手方交易业务收入:缺失值过小,填充为0
境外子公司证券业务收入占营业收入比例:境外子公司业务仅有部分券商有,其余填充为0
融资类业务利息收入:缺失值过小,填充为0
融资融券业务利息收入:缺失值过小,填充为0
约定购回业务利息收入:缺失值过小,填充为0
股票质押业务利息收入:缺失值过小,填充为0
股权投资收入:没有数据的认为没有进行股权投资活动,填充为0

#缺失值填充及处理
security_index['财务杠杆倍数'] = security_index['财务杠杆倍数'].fillna(round(
    pd.merge(security_company[security_company['2020年评级'].isin(['C','CC','CCC']) == True],security_index[['证券公司简称', '财务杠杆倍数']],how='left',on='证券公司简称')['财务杠杆倍数'].mean()))      
security_index = security_index.fillna(0)
security_index_copy = security_index.copy() 
security_index = security_index.drop(['代理买卖证券业务收入', '资产管理业务收入', '代理机构客户买卖证券交易额占代理全部客户买卖证券交易额的比例'], axis=1) 
security_data = pd.merge(security_company,security_index,how='right',on='证券公司简称')
security_data.info()            

探索性分析

#描述性统计
security_data.describe().round(0)
security_data.shape
#(96, 43)
#相关性热力图
def correlation_heatmap(df):
    _ , ax = plt.subplots(figsize =(20, 16))
    colormap = sns.diverging_palette(220, 10, as_cmap = True)
    
    _ = sns.heatmap(
        df.corr(), 
        cmap = colormap,
        square=True, 
        cbar_kws={
   'shrink':.9 }, 
        ax=ax,
        annot=True, 
        linewidths=0.1,vmax=1.0, linecolor='white',
        annot_kws={
   'fontsize':10 }
    )
    
    plt.title('Pearson Correlation of Features', y=1.05, size=15)

correlation_heatmap(security_data.iloc[:,8:])

在这里插入图片描述

fig, ax = plt.subplots(2, 3,figsize=(16,12))
sns.boxplot(x = '2020年评级', y = '总资产', data=security_data, ax = ax[0,0],order=['AA','A','BBB','BB','B','CCC','CC','C'])
ax[0,0].set_title('总资产')
                  
sns.boxplot(x = '2020年评级', y = '净资产', data=security_data, ax = ax[0,1],order=['AA','A','BBB','BB','B','CCC','CC','C'])
ax[0,1].set_title('净资产') 

sns.boxplot(x = '2020年评级', y = '营业收入', data=security_data, ax = ax[0,2],order=['AA','A','BBB','BB','B','CCC','CC','C'])
ax[0,2].set_title('营业收入') 

sns.boxplot(x = '2020年评级', y = '净利润', data=security_data, ax = ax[1,0],order=['AA','A','BBB','BB','B','CCC','CC','C']) 
ax[1,0].set_title('净利润')  

sns.boxplot(x = '2020年评级', y = '净资本', data=security_data, ax = ax[1,1],order=['AA','A','BBB','BB','B','CCC','CC','C']) 
ax[1,1].set_title('净资本')  

sns.boxplot(x = '2020年评级', y = '核心净资本', data=security_data, ax = ax[1,2],order=['AA','A','BBB','BB','B','CCC','CC','C']) 
ax[1,2].set_title('核心净资本')          

在这里插入图片描述

security_data[security_data['2020年评级'] == 'BBB'].sort_values(by='总资产',ascending=False) 
#最高为广发证券
security_data[security_data['2020年评级'] == 'A'].sort_values(by='净资产',ascending=False) 
#最高为东方证券

总资产、净资产、营业收入、净利润、净资本、核心净资本之间高度相关,AA级的券商在这几项指标明显远高于其他级别的券商,其中BBB级中的广发证券和A级中的东方证券指标接近于AA级(两家券商在2018年都为AA级),且随着级别的上升,相同级别当中的证券公司之间的差距增大

security_percentage = security_data.groupby(
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值