一种二维数据表格的查表方法与流程

文档序号:24985728发布日期:2021-05-07 23:03阅读:342来源:国知局
一种二维数据表格的查表方法与流程

本发明属于寿险精算技术领域,具体涉及一种行列表头为字符串数字混编的二维数据表格的查表方法。



背景技术:

寿险精算评估是指保险公司依据人口统计、经济学基本原理、相关技术标准要求以及行业普遍操作惯例,针对所考察人身保险产品进行包括准备金、偿付能力、内含价值等在内的一系列相关财务结果的计算和/或复核的一种重要的工作和技术手段。根据相关法律法规要求,寿险公司需要定期就上述财务结果进行测算,并上报特定监管机构和/或向公众发布。

寿险精算评估工作需要使用寿险精算模型进行。精算模型通常由一系列计算模块组成,而每个计算模块最重要的基本组成单元为时间序列,比如未来每个单位时间段的死亡人数、预计死亡理赔金额以及保险公司的日常管理成本等。一个精算模型通常由数十个到数百的计算模块构成,包含数千个到数万个时间序列。参数表格是评估预测模型依赖的一种重要的数据来源。模型根据用户设置的行列下标来进行查询工作,以确定参与计算的具体参数。常用参数表格的基本形态是二维的,即包括行和列两个维度。但有些应用场景的参数表格却较复杂,比如寿险精算评估中涉及的表格,其行头(行名称,用来表示行坐标)和列头(列名称,用来表示列坐标)又都包含多个不同特征字段,相当于行和列又都包含多个子维度。表1是某保险公司历史年份死亡率成熟假设因子的数据表,它的行头包含3个特征字段,分别为险种代码、被保险人性别及被保险人是否抽烟,每个特征字段又有多个取值,如险种代码有3个值,分别为abc、def和xyz;被保险人性别有2个值,分别为f和m;被保险人是否抽烟有2个值,分别为s和n,共有3*2*2=12个不同特征字段。它的列头包括2个特征字段,分别为评估目的(包括prc、res和csv)以及启保年份。由表1可知,行头和列头不仅包含多个特征字段,而且特征字段的类型也不是单一的,有的特征字段是字符串,有的特征字段是数字,还有的同一特征字段既包含字符串又包含数字,如列头的启保年份这个特征字段的“other”(所有其他年份)为字符串,“2017”为数字,“-2018”(2018年及以前)和“2019+”(2019年及以后)既包含字符串又包含数字。

表1死亡率成熟假设因子的数据表

对于这种行头和/或列头为字符串数字混编的表格,现有技术存在有两种处理方法:一种是将字符串变成特定的数字代码,然后将其统一为数字查找;一种是将该行头和/或列头中的数字改为字符串后进行查询。第一种方法的缺点是非常不直观,容易造成模型开发和设置错误,一旦这些错误导致模型需要重新运行,便得不偿失。第二种方法存在的问题是,由于字符比较速度慢于数字比较速度,且字符串的拼接也比较费时,因此查表速度较慢。而在寿险精算评估过程可能涉及到数千张这样的表格,每张表格需要被几百万个数据点的测算逐一查询,因此这种查表速度的不如意可能会严重影响寿险精算评估的效率。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提出一种二维数据表格的查表方法。

为实现上述目的,本发明采用如下技术方案:

一种二维数据表格的查表方法,包括以下步骤:

步骤1,获取表格中的行头和列头,每个行头和列头均由一个或多个特征字段串接而成,所述特征字段由字符串和/或数字组成;

步骤2,将每个字符串转换成一个由数字组成的唯一识别码,并在每个行头和列头的唯一识别码和数字前分别设置状态码,得到以数字形式表示的、兼容数字和字符运算的行头和列头,简称兼容行头和兼容列头;

步骤3,将待查数据的行头和列头按照步骤2的方法分别转换成兼容行头和兼容列头;

步骤4,将步骤3得到的兼容行头和兼容列头分别与步骤2得到的兼容行头和兼容列头进行匹配,根据匹配的兼容行头和兼容列头对应的行号和列号从表中获得待查数据。

与现有技术相比,本发明具有以下有益效果:

本发明通过将表格的行头和列头的字符串转换成一个由数字组成的唯一识别码,并在唯一识别码和数字前分别设置状态码,得到用数字表示的兼容数字和字符运算的行头和列头即兼容行头和兼容列头,将待查数据的行头和列头按照相同的方法转换成兼容行头和兼容列头,并与表格的兼容行头和兼容列头进行匹配,从而得到表格中的待查数据。由于查表时输入的是转换前包含字符串的行头和列头,因此查表不失直观性;通过将行头和列头转换成兼容行头和兼容列头,进行匹配时可以只进行数字比较,提高了查表速度。也就是说,本发明所述方法既不失查表直观性,又提高了查表速度。

附图说明

图1为本发明实施例一种二维数据表格的查表方法的流程图;

图2为字符串“abc”和“abac”的索引结构示意图。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明实施例一种二维数据表格的查表方法,流程图如图1所示,所述方法包括以下步骤:

s101、获取表格中的行头和列头,每个行头和列头均由一个或多个特征字段串接而成,所述特征字段由字符串和/或数字组成;

s102、将每个字符串转换成一个由数字组成的唯一识别码,并在每个行头和列头的唯一识别码和数字前分别设置状态码,得到以数字形式表示的、兼容数字和字符运算的行头和列头,简称兼容行头和兼容列头;

s103、将待查数据的行头和列头按照s102的方法分别转换成兼容行头和兼容列头;

s104、将s103得到的兼容行头和兼容列头分别与s102得到的兼容行头和兼容列头进行匹配,根据匹配的兼容行头和兼容列头对应的行号和列号从表中获得待查数据。

在本实施例中,步骤s101主要用于获取表格中的行头和列头。二维数据表格中的每个数据都由一个行列坐标(行号和列号)唯一确定。为了直观,行号和列号一般采用与数据内容有关的行头和列头表示。本实施例中,表格的每个行头和列头均由一个或多个特征字段串接而成,相当于把行和列又分成了多个子维度,子维数等于每个特征字段所取特征值数量的积,表1中行的子维数为3*2*2=12。所述特征字段可以是字符串,也可以是数字,还可以由字符串和数字混合而成。如表1所示,行头“abc-f-n”由“abc”、“f”、“n”3个特征字段组成,这3个特征字段均为字符串或字符;列头“res-2019+”由“res”、“2019+”2个特征字段组成,第一个为字符串,第二个包括数字和字符。

在本实施例中,步骤s102主要用于得到用数字表示的能够兼容数字和字符运算的兼容行头和兼容列头。转换方法是:将每个字符串转换成一个由数字组成的唯一识别码。为了区分是唯一识别码还是数字,在每个唯一识别码和数字前分别增加用于区分二者的状态码(最简单的态码是0和1)。设置状态码后,即使唯一识别码刚好与数字相同,因状态码不同,也不会判为相同。进行上述转换后得到的行头和列头,可视为二进制数进行运算、比较大小等,也就是说,实现了字符与数字的混合处理。

唯一识别码用来区分不同的字符串,“唯一”的含义是不同的字符串对应一个不同的识别码。字符串的唯一识别码一般是一个自然数。唯一识别码m可表示成字符串s的一个单值函数m=f(s),不同的字符串s对应不同的唯一的一个f(s);s相同,意味着不仅组成s的字符相同,各个字符的排序也相同。生成字符串的唯一识别码的方法很多,或者说,有很多不同的f(s)可以用来生成唯一识别码,而且不同的f(s)可以生成不同的唯一识别码。本实施例对生成唯一识别码的方法不做限制。下面给出一个具体的实现方法:以字符串中的每一单个字符的asiic码为其子串键值;以所述子串键值为键值,利用平衡二叉树等成熟的数据结构或算法,建立针对行头或列头所有字符串的索引结构,其中的每个节点包括键值和不同于其它节点的唯一识别码;索引结构中对应每个字符串路径的最后一个节点的唯一识别码即为该字符串的唯一识别码。举一个简单的例子,假设某行头只有两个字符串“abc”、“abac”,整个索引结构就会有4层,如图2所示。第一层一个节点a(0),a用其键值表示,即用a的asiic码65表示,括号内数字0为其唯一识别码。后面每个节点的表示方法相同,每个节点的唯一识别码在0的基础上从上到下、从左到右依次加1;第二层是a(0)下面的索引结构有一个节点b(1);第三层是b(1)下面的索引结构,包括两个节点c(2)、a(3);第四层c(2)下面的索引结构没有节点,a(3)下面的索引结构有一个节点c(4)。字符串“abc”对应的路径的最后一个节点为c(2),所以abc的唯一识别码为2;字符串“abac”对应的路径的最后一个节点为c(4),所以“abac”的唯一识别码为4。

在本实施例中,步骤s103主要用于将待查数据的行头和列头按照步骤s102的方法分别转换成用数字表示的兼容行头和兼容列头。查表实际上就是根据待查数据在表格中的行号和列号找到待查数据。为了查表时可以只进行数字形式的比较以提高查表速度,前面已将表格中的所有行头和列头转换成了兼容行头和兼容列头,因此,若想得到表中数据,还需将待查数据的行头和列头都转换成兼容行头和兼容列头。

在本实施例中,步骤s104主要用于通过行列匹配得到待查数据。将s103得到的待查数据的兼容行头和兼容列头,分别与s102得到的兼容行头和兼容列头进行匹配,得到匹配的兼容行头和兼容列头。由于表格的兼容行头和兼容列头都对应一个具体的行号和列号,因此,根据匹配的兼容行头和兼容列头即可得到待查数据的行号和列号,从而得到待查数据。由于兼容行头和兼容列头的匹配均是进行数字比较,因此,大大提高了查表速度。由于查表时输入的仍然是包含字符串的(转换前)行头和列号,因此,本实施例的查表方法既提高了查表速度又不失查表的直观性。

作为一种可选实施例,所述兼容行头和兼容列头由兼容数码q组成,q的最高位为状态码qs,其余位为数据qd;字符串的qs为0,qd为所述字符串的唯一识别码;数字的qs为1,qd为数字本身。

本实施例给出了组成兼容行头和兼容列头的兼容数码q的一种数据结构。q包含两部分:一部分是最高位的状态码,另一部分是位于状态码后的数据内容。字符串的状态位为0,数字的状态位为1。字符串的数据内容为它的唯一识别码,数字的数据内容为数字本身。由于行头或列头可以包括多个特征字段,而且即使一个特征字段也有可能由字符串和数字混合而成,因此每个兼容行头和兼容列头都可能由多个不同的兼容数码q串接而成。

作为上一实施例的一种可选实施例,两个兼容数码q1、q2按下面的规则比较大小:

若q1s<q2s,则q1<q2;

若q1s>q2s,则q1>q2;

若q1s=q2s,且q1ds<q2d,则q1<q2;

若q1s=q2s,且q1ds=q2d,则q1=q2;

若q1s=q2s,且q1ds>q2d,则q1>q2。

本实施例定义了两个兼容数码q1、q2的比较规则。上面给出的比较规则,实际上是将兼容数码当作了一般的二进制数。有了上述比较规则便可将字符串与数字混在一起以数字形式进行比较,从而提高比较速度。

作为一种可选实施例,所述s102和s103之间还包括:分别建立兼容行头、兼容列头与行号、列号的映射关系。

在本实施例中,建立兼容行头、兼容列头与行号、列号的映射关系,用于根据匹配的兼容行头、兼容列头得到待查数据的行号、列号。转换前的每个行头、列头都有与其一一对应的行号、列号,据此可方便地得到兼容行头、兼容列头与行号、列号的映射关系。

上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1