首页 > 编程知识 正文

python 图像拼接,python绘图turtle库详解

时间:2023-05-03 19:15:02 阅读:138597 作者:4912

0

引言

Cufflinks是将pandas和plotly无缝链接在一起的可视化库。 前者的dataframe在数据分析中无处不在,后者的交互性将可视化更进一步。 Cufflinks连接了两者,必须理解。

首先引入可能需要的包。

importosimportpandasaspdimportnumpyasnpimportseabornassnsimportmatplotlib.pyplotasplt % matplotlibinline

引入cufflinks软件包,别名为cf。

导入cuff links as cf

如果选择脱机模式并生成本地图像,则不会上载到这些系统。

cf.go_offline (

熟悉我的风格后,我就知道我喜欢的颜色。 RGB的设定如下。

color=[ RGB (220,38,36 ) ]、RGB ) 43、71、80 )、) RGB ) 69、160、162 )、RGB ) 232、122、89 )、) RGB、145 )

在Cufflinks中,曲线函数为df.iplot,虽然一手吃了好几次,但是iplot函数中参数很多,一些参数说明如下。

kind:Scatter、pie、histogram等图的类型

模式: lines、markers和lines markers。 分别表示折线、点、折线、点

colors :与轨道对应的颜色

dash )与轨道对应虚实线、solid、dash、dashdot这3种

width :轨道粗细

xTitle :横坐标名称

yTitle :纵坐标名称

title :图表标题

现在正在学习Cufflinks。 也就是说,我在学习新的东西。 我从一开始就再也看不到与之相关的所有内容了。 没有时间也没有能量。 我只是用Cufflinks处理特定的任务,然后找合适的知识点,完成任务就行了。

我们今天的任务是可视化信用组合。

样品组合

考虑包含100个不同出借人的“示例组合”(sample portfolio )。 有以下三个假设。

的总规模为1000,意味着平均每个贷款人的“开放”(exposure )为10。

实际开放根据韦伯分布(Weibull )模拟,范围从1到小于50。

贷款人的无条件违约概率(unconditionaldefaultprobability )根据卡方分布(chi-square )模拟,平均值设定为1%。

我将违约率和开放保存模拟为两个numpy格式的文件,加载到变量p和c中进行保存,n为借贷人数,100。

DP file=OS.getcwd ((defaultprobabilties.npy ' exp file=OS.getcwd ) )exposures.npy'c=NP.load

违约率分布

在Cufflinks中,我们在DataFrame中创建了一些东西,所以我们首先将p转换为DataFrame df,然后使用df.iplot ) )函数。

因为想看违约率的分布函数,所以kind设定为histogram,分成100箱。 在此基础上加上垂直线vline,发现作为p的平均值,值接近1%,非常接近以前的卡方分布的平均值。 之后,设定几个坐标名、图名、颜色和主题(ggplot美如画,据说用过)很简单,所以不再详细说明。

df=PD.dataframe(p*100 ) df.IPlot ) kind='Histogram ',histnorm='probability ',bins=100,vline=df.meame

由上图可知,违约概率的值域从0%到7%,而且向右倾斜(skew to the right )。

损失分布

用同样的方法画出损失的分布图。

df=PD.dataframe(c ) df.IPlot ) kind='Histogram ',histnorm='probability ',bins=100,vline=df.mean ) )

e',xTitle='USD',yTitle='Relative Frequency',color='rgb(220,38,36)',theme='ggplot' )

从上图可看出,损失的值域从 0 到 50,而且也向右偏斜(skew to the right)。

组合可视化

信用组合有 p 和 c 两层信息,组合成新的 DataFrame。这时我们想显示了每个借贷人的损失敞口(横轴)和其无条件违约概率(纵轴)的散点图(scatter plot),因此 kind 设置 scatter。

为了看起来更加直观,我们用每个散点的面积来代表损失敞口,面积越大损失敞口越大,那么点随着向右侧移动而变大,因此 size 设置成 c,而 c 是损失敞口的值。

df = pd.DataFrame( np.vstack((p*100,c)).T,columns=['Default Probability', 'Loss Exposure'] )df.iplot( kind='scatter',x='Loss Exposure',y='Default Probability',mode='markers',size=c,title='Loss Exposure Vs Default Probability',xTitle='USD',yTitle='Percent',color=color,theme='ggplot' )

我们可以做一些观察:

大部分大头寸的违约概率都不高,但有几个例外的点。比如有个损失敞口为 30 的违约率为 7 %。

没有其他高违约的借贷人的损失敞口超过 10。

最大的单一头寸(接近 50)的违约概率极小,几乎为 0。

接下来我们来看信用组合在不同区域的分布。广义来讲,区域可按地理,行业或者借贷人规模来分类。

在该案例中,我们将 100 个借贷人随机分配到三个虚构的区域,分别为 Alpha,Beta 和 Gamma。我们同样随机生成些区域数据并存城 regions.npy。

rgnFile = os.getcwd() + '\regions.npy'region = np.load(rgnFile)

在画图中,每个散点都以根据区域分类而用不同的颜色来显示(在代码将 category 设置为 'Region')。在实际环境中,每个散点还会包含借贷人 ID 或名称,可帮助我们能够锁定某些特定的借贷人。

df = pd.DataFrame( np.vstack((p*100,c,region)).T,columns=['Default Probability', 'Loss Exposure', 'Region'] )df.loc[df['Region']==1, 'Region'] = 'Alpha'df.loc[df['Region']==2, 'Region'] = 'Beta'df.loc[df['Region']==3, 'Region'] = 'Gamma'df.iplot( kind='scatter',x='Loss Exposure',y='Default Probability',mode='markers',categories='Region',size=20,title='Regional Distribution',xTitle='USD',yTitle='Percent',color=color,theme='ggplot' )

我们可以做一些观察:

数据按区域划分,没有显示出任何模式。

最上面那个深青色点 (30.41, 6.82) 对应的借贷人是高风险头寸(损失敞口大,违约率高)。

最右边那个深青色点 (47.80, 0.02) 对应的借贷人头寸最大,但是违约风险不大。

底部和中部有一组借贷人(1 个深青色,2 个红色,2 个青色),虽然损失敞口大,但违约率不高,约为 1%。

左上角有一组借贷人(2 个深青色,3 个红色)虽然违约率高,但是损失敞口小。

将信贷组合可视化一下,我们就可以迅速看到组合里的一些特性。下篇我们来计算该组合的一些有用指标,如预期损失(expected loss, EL),损失波动(loss volatility, LV),风险价值(value-at-risk, VaR)和期望损失(expected shortfall, ES)。

Stay Tuned!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。