智慧金融-数据可视化

智慧金融-数据可视化

导入所需的库

python 复制代码
import numpy as np
import numpy_financial as npf
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['FangSong']
mpl.rcParams['axes.unicode_minus']=False

单图曲线图

python 复制代码
r = 0.05  # 贷款的年利率
n = 30 # 贷款的期限(年)
principle = 8e6 # 贷款的本金
pay_month=npf.pmt(rate=r/12, nper=n*12, pv=principle, fv=0, when='end') # 计算每月支付的本息之和
print('每月偿还的金额',round(pay_month,2)) 

每月偿还的金额 -42945.73

python 复制代码
T_list=np.arange(n*12)+1 # 生成一个包含每次还款期限的数组

prin_month=npf.ppmt(rate=r/12,per=T_list,nper=n*12,pv=principle,fv=0,when='end') # 计算每月偿还的本金金额
inte_month=npf.ipmt(rate=r/12,per=T_list,nper=n*12,pv=principle,fv=0,when='end') # 计算每月偿还的本金金额

pay_month_list=pay_month*np.ones_like(prin_month) # 创建每月偿还金额的数组

plt.figure(figsize=(9,6),frameon=False)
plt.plot(T_list,-pay_month_list,'r-',label=u'每月偿还金额',lw=2.5)
plt.plot(T_list,-prin_month,'m--',label=u'每月偿还本金金额',lw=2.5)
plt.plot(T_list,-inte_month,'b--',label=u'每月偿还利息金额',lw=2.5)
plt.xlabel(u'逐次偿还的期限(月)', fontsize=14)
plt.yticks(fontsize=13)
plt.ylabel(u'金额',fontsize=13)
plt.title(u'等额本息还款规则下每月偿还的金额以及本金利息', fontsize=14)
plt.legend(loc=0, fontsize=13)
plt.grid()
plt.show()

多图曲线图

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt

SZ_Index = pd.read_excel('data/深证成指每日价格数据(2018-2020年).xlsx',sheet_name='Sheet1',header=0,index_col=0)
SZ_Index.index # 显示行索引的格式

Index(['2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-08',

'2018-01-09', '2018-01-10', '2018-01-11', '2018-01-12', '2018-01-15',

...

'2020-12-18', '2020-12-21', '2020-12-22', '2020-12-23', '2020-12-24',

'2020-12-25', '2020-12-28', '2020-12-29', '2020-12-30', '2020-12-31'],

dtype='object', name='日期', length=730)

python 复制代码
SZ_Index.index=pd.DatetimeIndex(SZ_Index.index) # 将数据框的行索引转换为 Datatime 格式
SZ_Index.index # 显示更新后的行索引的格式,由原来的 object 格式转换为了 datatime 格式

DatetimeIndex(['2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05',

'2018-01-08', '2018-01-09', '2018-01-10', '2018-01-11',

'2018-01-12', '2018-01-15',

...

'2020-12-18', '2020-12-21', '2020-12-22', '2020-12-23',

'2020-12-24', '2020-12-25', '2020-12-28', '2020-12-29',

'2020-12-30', '2020-12-31'],

dtype='datetime64[ns]', name='日期', length=730, freq=None)

python 复制代码
plt.figure(figsize=(11,9))
plt.subplot(2,2,1)
plt.plot(SZ_Index['开盘价'],'r-',label=u'深证成指开盘价',lw=2.0)
plt.xticks(fontsize=13,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'价格',fontsize=13)
plt.legend(loc=0,fontsize=13)
plt.grid()

plt.subplot(2,2,2)
plt.plot(SZ_Index['最高价'],'b-',label=u'深证成指最高价',lw=2.0)
plt.xticks(fontsize=13,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'价格',fontsize=13)
plt.legend(loc=0,fontsize=13)
plt.grid()

plt.subplot(2,2,3)
plt.plot(SZ_Index['最低价'],'c-',label=u'深证成指最低价',lw=2.0)
plt.xticks(fontsize=13,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'价格',fontsize=13)
plt.legend(loc=0,fontsize=13)
plt.grid()

plt.subplot(2,2,4)
plt.plot(SZ_Index['收盘价'],'k-',label=u'深证成指收盘价',lw=2.0)
plt.xticks(fontsize=13,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'价格',fontsize=13)
plt.legend(loc=0,fontsize=13)
plt.grid()

plt.show()

堆叠直方图与并排直方图

python 复制代码
SH_SZ_Index = pd.read_excel('data/上证综指和深证成指的日涨跌幅数据(2019-2020年).xlsx',sheet_name='Sheet1',header=0,index_col=0)
SH_SZ_Index # 显示行索引的格式
python 复制代码
SH_SZ_Index = np.array(SH_SZ_Index) # 将数据框格式转换为数组格式
SH_SZ_Index
python 复制代码
plt.figure(figsize=(9,6))
plt.hist(SH_SZ_Index,label=[u'上证综指日涨跌幅',u'深证成指日涨跌幅'],stacked=True,edgecolor='k',bins=30)
plt.xticks(fontsize=13)
plt.xlabel(u'日涨跌幅',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13)
plt.title(u'上证综指和深证成指日涨跌幅堆叠直方图')
plt.legend
plt.grid()
plt.show()
python 复制代码
plt.figure(figsize=(9,6))
plt.hist(SH_SZ_Index,label=[u'上证综指日涨跌幅',u'深证成指日涨跌幅'],edgecolor='k',bins=30)
plt.xticks(fontsize=13)
plt.xlabel(u'日涨跌幅',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13)
plt.title(u'上证综指和深证成指日涨跌幅并排直方图')
plt.legend
plt.grid()
plt.show()

综合条形图与折线图的双轴图

python 复制代码
M2 = pd.read_excel('data/我国广义货币供应量M2的数据(2019-2020年).xlsx',sheet_name='Sheet1',header=0,index_col=0)
M2 # 显示行索引的格式
python 复制代码
fig, ax1 = plt.subplots(figsize=(9,6)) # 运用左侧纵坐标绘制图形
plt.bar(x=M2.index,height=M2.iloc[:,0],color='y',label=u'M2 每月余额')
plt.xticks(fontsize=13,rotation=90)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylim(0,250)
plt.ylabel(u'金额(万亿元)',fontsize=13)
plt.legend(loc=2,fontsize=13)

ax2 = ax1.twinx()
plt.plot(M2.iloc[:,-1],lw=2.5)
plt.yticks(fontsize=13)
plt.ylim(0,0.13)
plt.ylabel(u'增长率',fontsize=13)
plt.title(u'广义货币供应量 M2 每月余额和每月同比增长率',fontsize=13)
plt.legend(loc=1,fontsize=13)
plt.grid()
plt.show()

散点图

python 复制代码
ICBC_CCB = pd.read_excel('data/工商银行与建设银行A股周涨跌幅数据(2016-2020年).xlsx',sheet_name='Sheet1',header=0,index_col=0)
ICBC_CCB.describe()
python 复制代码
ICBC_CCB.corr()
python 复制代码
plt.figure(figsize=(9,6))
plt.scatter(x=ICBC_CCB['工商银行'],y=ICBC_CCB['建设银行'],c='r',marker='o')
plt.xticks(fontsize=13)
plt.xlabel(u'工商银行周涨跌幅',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'建设银行周涨跌幅',fontsize=13)
plt.title(u'工商银行与建设银行周涨跌幅的散点图',fontsize=13)
plt.grid()
plt.show()

饼图

python 复制代码
currency = ['美元','欧元','人民币','日元','英镑']
perc = [0.4173,0.3093,0.1092,0.0833,0.0809]
plt.figure(figsize=(9,7))
plt.pie(x=perc,labels=currency,textprops={'fontsize':13})
plt.axis('equal')
plt.title(u'特别提款全中不同币种的权重',fontsize=13)
plt.legend(loc=2,fontsize=13)
plt.show()

雷达图

python 复制代码
company = ['中国人寿','中国人保','中国太保','中国平安','新华保险']
indicator=['营业收入增长率','净利润增长率','净资产收益率','偿付能力充足率']
ranking = np.array([5,4,3,2])
N_company=len(company)
N_indicator=len(indicator)

ranking_new=np.concatenate([ranking, [ranking[0]]]) # 在中国太保各项指标排名的数组末尾增加一个该数组的首位数字,以实现绘图的闭合
angles = np.linspace(0, 2*np.pi, N_indicator, endpoint=False)
angles_new = np.concatenate([angles,[angles[0]]])

plt.figure(figsize=(8,8))
plt.polar(angles_new,ranking_new,'--')
plt.thetagrids(angles*180/np.pi,indicator,fontsize=13)
plt.ylim(0,5)
plt.yticks(range(N_company+1),fontsize=13)
plt.fill(angles_new, ranking_new, facecolor='r',alpha=0.3)
plt.title(u'中国太保各项指标在 5 家A股上市保险公司中的排名',fontsize=13)
plt.show()

K 线图

python 复制代码
import pandas as pd
import mplfinance as mpf

SH_Index=pd.read_excel('data/2020年第3季度上证综指的日交易数据.xlsx', sheet_name="Sheet1", header=0,index_col=0)
SH_Index.index = pd.DatetimeIndex(SH_Index.index) # 数据框的行索引转换为 Datatime 格式

SH_Index.columns # 显示列名

Index(['开盘价', '最高价', '最低价', '收盘价', '成交额(万亿元)'], dtype='object')

python 复制代码
SH_Index=SH_Index.rename(columns={'开盘价':'Open','最高价':'High','最低价':'Low','收盘价':'Close','成交额(万亿元)':'Volume'})
mpf.plot(data=SH_Index,type='candle',mav=5,volume=True,figratio=(9,7),style='classic',ylabel='price',ylabel_lower='Volume(trillion)')
python 复制代码
color=mpf.make_marketcolors(up='r',down='g')
style_color=mpf.make_mpf_style(marketcolors=color)
mpf.plot(data=SH_Index,type='candle',mav=(5,10),volume=True,figratio=(9,6),style=style_color,ylabel='price',ylabel_lower='Volume(trillion)')
相关推荐
小鹿( ﹡ˆoˆ﹡ )几秒前
深入探索 Seaborn:高级绘图的艺术与实践
python·信息可视化
工业3D_大熊15 分钟前
【虚拟仿真】CEETRON SDK在船舶流体与结构仿真中的应用解读
java·python·科技·信息可视化·c#·制造·虚拟现实
IT铺子20 分钟前
Excel和微软小冰的结合应用
信息可视化
ckboss14 小时前
金融小白两周完成一个量化系统 (三)项目进度以及结构框架
金融
非凸科技15 小时前
非凸科技助力第49届ICPC亚洲区域赛(成都)成功举办
科技·金融·非凸科技
电报号dapp1191 天前
DeFi 4.0峥嵘初现:主权金融时代的来临
金融·区块链
fgl1001 天前
富格林:安全步骤交易稳健出金
金融
布说在见1 天前
魅力标签云,奇幻词云图 —— 数据可视化新境界
信息可视化·数据挖掘·数据分析
千汇数据的老司机1 天前
webGIS在可视化大屏中的应用场景有哪些,有哪些类库
信息可视化·webgis·#web
小华同学ai1 天前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源