精华内容
下载资源
问答
  • 要求大家使用汽车大师提供的11万条(技师与用户的多轮对话与诊断建议报告数据)建立模型,模型需基于对话文本、用户问题、车型与车系,输出包含摘要与推断的报告文本,综合考验模型的归纳总结与推断能力。...
  • 总结报告

    2018-11-11 15:37:02
    所学知识:1.最开始的代码(最简单的程序) #include #include #include using namespace std;...2.简单c++程序的构成:第1部分:预处理命令数据类型定义或全局变量定义函数声明。 第2部分...

    所学知识:1.最开始的代码(最简单的程序)
    #include
    #include
    #include
    using namespace std;
    int main()
    {
    cout<<“Hello,World!”<<endl;//分号必须写!!(经常性因为此错误)
    return 0;
    }
    2.简单c++程序的构成:第1部分:预处理命令数据类型定义或全局变量定义函数声明。
    第2部分:主函数。
    注:一个c或c++程序不论包含多少个函数,主函数只有一个。
    第3部分:其他函数定义。
    3.模仿学习资料上的代码,在电脑上自己敲出来,还不能够独立、自我完成代码的编写。
    4.开始自己着手写程序:在了解了程序构成后,可以通过程序解决一些简单问题了。但是程序经常因简单(弱智)错误而无法运行。
    5.程序风格:在c语言与c++中,我更加喜欢c++一些,因为c++看着更加具有层次感,读起来流畅,可以清楚地看出来程序的内容。在编写时也更加方便。
    6.符号问题:在一开始的编码中,总是会在程序中出现中文字符导致程序无法运行,而且在手机上看,很难区分出中文分号与英文分好的区别。
    7.数据类型:数据有许多类型:单精度、双精度,长双精度、字符等,需要自己在平时的学习中自己记住各自的单词与代表数值范围,在做题时需注意所用和所求数据的范围是否符合自己定义的字符范围(别在做题时忽略一些隐藏条件!)
    8.简单运算:感觉这些知识点比较简单,较容易掌握,在看完例题后比着葫芦画瓢写自己的代码几次就可以学会,最重要的就是一些特殊符号以及相应的头文件(一开始有些代码始终无法运行,就是由于缺少对应的头文件。)
    9.赋值:基本赋值形式:变量=表达式或变量1=变量2=表达式
    10.数值代换:如果刚开始的输入为int a,即整数,在输出时需要输出小数或其他数值,
    需要在运算式中的a前加上所需要输出的数值形式例如b=(float)a/2,即输出的b为单浮点小数(其余输出形式与其相同)
    11.输入输出:c++中有多种输入输出形式,数值与字符之间也有着不同的输入输出形式,例如:字符输入char/getchar,数据输入cin与input。输出也有着不同的输出形式,如:cout,printf等
    12.printf表达:%c character以字符形式输出单个字符
    %s string 输出一个字符串
    %d decimal 以带符号十进制整数输出
    %f float 以小数形式输出浮点数(6位小数)
    %e exponent 以标准指数形式输出(6位小数)
    %g 选用%f,%e中输出宽度较小的一种格式
    %o octal 以八进制无符号整数输出(无前导0)
    %x hex 以十六进制无符号整数输出(无前导0x)
    %u unsigned 以十进制无符号整数输出
    13.分支条件语句:(1)if与else的分支语句:执行流程为在执行至if是根据其后面的条件,如果满足,则执行if中的语句,若不满足后面的条件。则跳过,看是否满足下一条件,直至输出。
    感悟:在编写较为复杂的if语句时,需要时刻保持清醒,在编写之前,需要想好并写出之间的逻辑关系,在if中套写if语句时,需要更加仔细认真,在一开始时没有写程序前构思的习惯,所以一开始经常会出现逻辑错误导致程序无法运行。
    (2)swich语句:用于多路选择,相当于一系列的if-else语句,被测试的表达式写在关键字后面的圆括号中,表达式只能是char型或int型,因此所谓swich语句的使用受到限制,基本形式为、
    switch (expression)
    {
    case 变量1 :
    可执行语句1;
    break;
    case 变量2 :
    可执行语句2;
    break;
    ……
    default :
    可执行语句X;
    break;
    }
    14.软件测试:白盒测试(结构测试)
    (1)在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作
    (2)主要用于测试的早期
    黑盒测试(功能测试)
    (1)把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明
    (2)主要用于测试的后期

    感悟:从一开始的对于编程的好奇到真正接触,才发现编程没有想象中的难学,但是渐渐发现,越到后面越难学,从敲成功第一个代码的喜悦到后来被代码险些逼疯,最后学会知识,知道了书上的内容必须要通过实践、自己编写代码,才能够真正的掌握,学会并运用运用所学知识敲代码。不得不承认,敲代码时枯燥而且十分费力,需要时刻想下一步怎样编写,十分费脑力。但是,真正将代码写出来,成功运行,内心的成就感是幸福与快乐的,收获的喜悦不是平时的玩乐可以比拟的,总结出一句话:编程使我快乐。

    展开全文
  • 数据挖掘---数据处理

    2017-09-23 19:47:14
    大致流程:问题分析(需求分析),数据预处理(数据清洗,数据集成,数据归约),特征选择,模型选择(方案设计),模型求解,模型评估,模型解释,写成报告形式,展示。 先撇开问题分析不说,数据预处理是数据分析...

    大致流程:问题分析(需求分析),数据预处理(数据清洗,数据集成,数据归约),特征选择,模型选择(方案设计),模型求解,模型评估,模型解释,写成报告形式,展示。
    先撇开问题分析不说,数据预处理是数据分析挖掘最重要也是最基本的步骤。因为数据的质量往往能决定结果的质量。所以本篇先不谈各种数据挖掘算法,先做好数据预处理的基本功才是最重要的。

    只做总结,不作细说

    一、认识数据
    首先对数据进行一些基本的描述性统计分析。
    1.数据基本统计描述
    关于中心趋势度量:均值,中位数,众数,中列数
    给定一个属性,看他的值大部分落在何处。
    1.1均值:
    算术平均
    调和平均
    几何平均
    截尾平均(为抵消少数极端值的影响,放弃高低极端后的均值)

    1.2中位数

    1.3众数

    2.数据的散布(离散程度)
    2.1极差
    2.2四分位数
    2.3四分位极差
    四分位极差IQR:Q3-Q1(第3个四分位数-第1个四分位数),这个指标可以用于离群点的识别。识别可以的离群点的通常规则是,挑选落在第3个四分位数以上或第1个四分位数之下至少1.5*IOR处的值
    2.4五数概括
    2.5盒子图
    注意盒子图的画法:盒子图会有两个“胡须”,这两个胡须一般是数据集的最小值和最大值,中位数用盒内的线表示;仅当最高和最低观测值超过四分位数不到1.5*IQR时,胡须扩展到它们。否则,胡须在出现在1.5*IOR之内的最极端的观测值处终止。
    2.6方差
    2.7极差

    3.简单数据可视化:
    有时候看图会比看变量的指标(如均值,极差)更快的了解数据的分布。下面介绍一些简单常见的统计图
    3.1直方图
    3.2饼图
    3.3线图
    3.4分位数图
    3.5分位数-分位数图
    3.6散点图

    4如何度量数据的相似性和相异性
    簇:组内相似,组间相异
    4.1相似性度量
    标称属性:不匹配率(两个属性之间不匹配数目占所有属性数目的比例)
    二元属性:相异性分为对称的二元属性和非对称的二元属性,对于对称的而言,每个状态都是同等重要,故相异性的度量就是用两个的差别部分数目与总数目之比来表示,而非对称的,两个状态不是同等重要,两个取值为1的状态比两个取值为0的情况更急有意义。负匹配数被认为是不重要的,不考虑在分母内,其他一样。对非对称的二元属性,相似性就用1减去相异性即可,称为Jaccard系数。

    4.2数值属性的相异性度量:明氏距离,欧氏距离,曼哈顿距离,切比雪夫距离,马氏距离
    序数属性的邻近性度量(属性有顺序优劣之分)
    余弦相似性、Tanimoto距离
    适用于稀疏性的数据(有多个0)

    二、数据预处理
    数据质量:准确性,完整性,一致性,时效性,可信性,可解释性
    上面介绍了一些初步了解数据的方法手段,下面总结下数据预处理。
    数据预处理主要分为四个步骤:数据清洗,数据集成,数据归约,数据变换
    1.数据清洗:主要为了填补缺失值,光滑噪声数据,识别或删除离群点
    1.1缺失值:
    忽略元组,人工填写,用全局常量填充,用属性的均值填充等
    1.2噪声数据(被测量的变量的随机误差或方差):
    分箱:通过考察数据的“近邻”来光滑有序数据值,有等频箱,箱均值光滑,箱边界光滑
    回归:用一个函数拟合数据来光滑数据
    1.3离群点:如何识别离群点以及如何处理离群点
    数据清洗的第一步是偏差检测,导致偏差的因素可能有很多种
    2.数据集成:数据来自多个数据源,属性在不同的数据库有不同的名字,不一致性
    2.1实体识别问题:如何判断不同的数据库的不同列名是否是同一个变量,空值,0值,缺失值等。
    2.2冗余和相关分析:若一个属性能优另一个或另一组属性导出,则这个属性可能是冗余的。属性或维命名的不一致也可能导致结果数据集中的冗余。有些冗余可被相关分析检测到。标称数据,使用卡方检验;数值属性,用相关系数,协方差,评估一个属性的值如何随另一个变化。
    3.数据归约:维归约和数值归约。
    3.1维归约
    使用数据编码方案,使原始数据压缩简化,数据压缩(小波分析,PCA,数据压缩分有损和无损的),属性子集选择(去掉不相关属性),属性构造(从原来的属性集导出更有用的小属性集)。
    3.2数值归约
    用参数模型(回归和对数线性模型)或非参数模型(直方图,聚类,抽样,数据聚集),用较小的表示取代数据
    3.2.1小波变换:略
    3.2.2主成分分析:搜索k个最能代表数据的n维正交向量,k小于n,原始数据投影到一个小得多的空间上,导致维归约。PCA通过创建一个替换的,较小的变量集“组合”属性的基本要素。
    3.3特征子集选择
    属性子集的选择【特征子集选择】:(因为漏下相关属性或留下不相关属性都是有害的,可能导致发现质量很差的模式)删除不相关或冗余的属性(维)减少数据量。目标是找出最小属性集,使得数据类的概率分布尽可能的接近使用所有属性得到的原始分布。

    3.3.1逐步向前选择:由空属性集开始,确定原属性集中最好的属性,将其加到归约集中,在之后的迭代中,将剩下的原属性集中最好的属性加到归约集中。

    3.3.2逐步向后删除:由整个属性集开始。在每一步中,删除尚在属性集中最差的属性
    逐步向前选择和逐步向后删除的组合:每一步选择一个最好的属性,并在剩余属性中删除一个最差的属性。
    3.3.3决策树归纳:由给定的数据构造决策树,不出现在树中的所有属性假定是不相关的,出现在树中的属性形成归约后的属性子集
    属性构造【特征构造】:如长乘宽得到面积
    回归:

    直方图:单个值->单值桶。如何确定桶和属性值的划分?
    等宽:每个桶的宽度区间一致
    等频(等深):使得每个桶的频率粗略的为常数(即每个桶大致包含相同个数的邻近数据样本)
    对于近似稀疏和稠密数据,以及高倾斜和均匀数据,直方图非常有效。对于存放具有高频率的离群点,单值桶是有用的
    聚类:簇和簇的质量的度量
    抽样:无放回简单随机抽样,有放回简单随机抽样,簇抽样,分层抽样
    4.数据变换:规范化,数据离散化和概念分层
    光滑:去掉数据中的噪声,分箱,回归,聚类
    属性构造:由给定的数据属性创建性的属性并添加到属性集中。
    聚集:对数据进行汇总或聚集
    规范化:把属性数据按比例缩放,使之落入一个特定的小区间。最小-最大规范化,z分位数规范化,按小数定标规范化
    分箱离散化:是一种基于指定的箱个数的自顶向下的分裂技术

    展开全文
  • 中国保险业过去五年基础数据分析

    千次阅读 2018-12-30 11:52:11
    中国保险业过去五年基础数据分析 分析报告介绍 “保险”是近两年来人们茶余饭后的热门话题,我本次的项目作业将从公开途径抓取中国保险业过去5年的基础数据,管中窥豹...分析报告总结 保险数据采集 本次报告的数据...

    中国保险业过去五年基础数据分析

    一.分析报告介绍

    “保险”是近两年来人们茶余饭后的热门话题,我本次的报告是网上学习了数据分析相关课程以后的项目结业作业。本作业将从公开途径抓取中国保险业过去5年的基础数据,管中窥豹看一看这个行业及保险产品当前的状况,过去的发展及未来的驱势。

    本次作业选取了这两年我个人比较感兴趣,自己平时比较关注的保险业进行了简单的分析,从选题,数据抓取,建模分析独立完成,历时一周,花了大量的时间。虽然这份报告对于真正业内人士来说只能算是皮毛,但是也给了我一个很好了解,体验数据挖掘/数据分析的整个过程。最大的感受是最重要的是好的,足够完备的数据,有了好的数据,后面的分析建模很多时候就是水到渠成的事情了。

    此外,对保险行业内部的相关资料和知识点查询,也感谢我个人的保险经纪人陆颖一直一来有问必答的无私帮助。

    二.用到的主要工具

    Python版本: Python3.6
    jupter notebook: Anaconda3-5.2.0-Windows-x86_64
    pandas:数据分析读取数据
    matplotlib:绘图
    rcParams:用来正常显示中文,并设置中文字体

    三.保险数据采集

    本次报告的数据是通过和讯保险页面采集自2013年1月至2018年9月的保险行业基础数据,主要是保险总保费,各险种保费,和总赔付支出,各险种赔付支出的数据。
    具体数据爬取代码这里就省略了。

    四.数据清洗和预处理

    经过数据爬取阶段,我们获得了所有的数据组成一个以月份为辨识标签的二维数组(total_data),接下来我们需要对数据进行基本的预处理,其中包括了生成Dataframe,查看数据缺失及错误状况,添加缺失并修改错误数据。

    import pandas as pd
    import numpy as np
    a = np.vstack(total_data)                     #将初始数组生成DataFrame
    columns_name = ['date','原保险保费总收入','财产险收入','人身险总收入','寿险收入','健康险收入','人身意外保险收入','原保险赔付总支出','财产险支出','人身险总支出','寿险支出','健康险支出','人身意外保险支出']
    df = pd.DataFrame(data = a,columns = columns_name)
    
    df.date = pd.to_datetime(df.date)             #将传入的日期数据转变成datatime
    df.set_index('date',inplace = True)           #将日期数据转成DatatimeIndex
    
    df1 = df.loc[:,:].astype(float)               #确保每个表项都是float型
    
    

    由于数据都是线性的,所以我们可以通过画个图来看数据采集是否完整,有无错误。
    ###############################################
    ####本段内容是为了解决画图无法显示中文字体的问题,如果可以显示中文则无需执行本段内容
    ####指定默认字体 需要先将网上下载的的SimHei.ttf 文件放入 ~\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf 中,然后敲入以下命令即可:

    import matplotlib
    matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 
    matplotlib.rcParams['font.family']='sans-serif'
    #解决负号'-'显示为方块的问题
    matplotlib.rcParams['axes.unicode_minus'] = False 
    

    ###############################################

    from matplotlib import pyplot as plt
    %matplotlib inline
    df1.plot(figsize=(16,9))                            #对初始的DataFrame进行画图
    

    在这里插入图片描述

    根据图示,我们可以看到2016年后段,17年1月份,12月份数据缺失,此外,16年7月, 18年2月和8月线条都有突变,预示数据大概率有误。这里数据的矫正只能手动输入,矫正数据源自保险监督管理委员会官网

    官网数据网页没有规律,且网页内表格不同年份的格式不一致,所以并未直接作为数据源进行采样。

    df2 = df1.replace(0,np.nan)                #先将0值全部替换成NAN值,以便后期检索是否还有未补缺数据
    
    #获取缺失的基本月份数据
    data1608 = [22958.9373,5635.0848,17323.8524,13721.4564,3098.2305,504.1655,6901.1431,2937.1279,3964.0152,3242.7249,605.3101,115.9803]
    data1609 = [25168.2615,6370.5827,18797.6788,14783.8733,3430.4069,583.3985,7750.6999,3321.5870,4429.1129,3610.5333,687.1908,131.3888]
    data1610 = [27010.3752,7018.3821,19991.9932,15703.9707,3647.7410,640.2814,8526.1670,3670.1245,4856.0425,3946.5561,763.4167,146.0697]
    data1611 = [28864.8711,7773.0544,21091.8167,16556.6817,3841.7960,693.3390,9450.0194,4131.1226,5318.8968,4287.5209,870.7195,160.6564]
    data1701 = [8553.4033,973.8127,7579.5907,6861.5894,641.1138,76.8875,1277.2914,419.6850,857.6063,729.5261,109.4866,18.5937]
    data1712 = [36581.0074,9834.6579,26746.3495,21455.5650,4389.4604,901.3241,11180.7933,5087.4496,6093.3437,4574.8907,1294.7670,223.6859]
    data1612 = [30959.1009,8724.4981,22234.6028,17442.2167,4042.4968,749.8893,10512.8900,4726.1839,5786.7061,4602.9462,1000.7522,183.0077]
    
    #将缺失月份输入dataframe中
    df2.loc['2016-08-01'] = pd.Series(data1608,index = df2.columns)
    df2.loc['2016-09-01'] = pd.Series(data1609,index = df2.columns)
    df2.loc['2016-10-01'] = pd.Series(data1610,index = df2.columns)
    df2.loc['2016-11-01'] = pd.Series(data1611,index = df2.columns)
    df2.loc['2017-01-01'] = pd.Series(data1701,index = df2.columns)
    df2.loc['2017-12-01'] = pd.Series(data1712,index = df2.columns)
    df2.loc['2016-12-01'] = pd.Series(data1612,index = df2.columns)
    
    #对数据错误表项,根据官网校验后修正
    df2.loc['2016-07-01']['原保险赔付总支出'], df2.loc['2016-07-01']['寿险收入'] = df2.loc['2016-07-01']['寿险收入'], df2.loc['2016-07-01']['原保险赔付总支出']
    df2.loc['2018-02-01'][-1],df2.loc['2018-02-01'][-3] = df2.loc['2018-02-01'][-3], df2.loc['2018-02-01'][-1]
    df2.loc['2018-08-01'][-1] = df2.loc['2018-08-01'][-4]-df2.loc['2018-08-01'][-3] - df2.loc['2018-08-01'][-2]
    
    #再次画图查看数据是否连续线性
    df2.plot(figsize=(16,9)) 
    

    在这里插入图片描述

    查看过官网以后,我们还发现,每个月的数据其实都是当年自一月份以来数据之和,而不是单个月数据,这意味着我们对除一月份以外的数据,都需要减去该月之前一个月的数据,以算出真正该月产生的保险数据。

    df_month = df2.copy()
    
    i = len(df_month)
    while i > 0:
        i -= 1                                             #从表最后行往前修正数据
        if (df_month.index[i]).to_pydatetime().month == 1: #如果当月月份是一月份,则数据不需要修改
            continue
        else:                                              #非一月份的当月数据需要减去前面一个月的数据以获取当月值
            df_month.loc[df_month.index[i]] -= df_month.loc[df_month.index[i] - pd.DateOffset(months=1)]
    
    #获取最终的月数据,画图检验
    df_month.plot(figsize=(16,9))
    

    在这里插入图片描述

    #接下来根据月数据生成季度数据和年度数据

    df_year = df_month.resample('Y').sum()
    df_quarter = df_month.resample('Q').sum()
    

    五.数据分析阶段

    数据分析阶段,我们将分成当前数据状态分析,过去统计数据分析和未来状态预测三个方面来进行。

    5.1 当前保险业状态分析

    我们将通过对2018年保险业收入和支出的饼图来进行当前保险业的状态分析。
    #2018年保费收入和赔付的饼图
    #先定义一个简单函数,使得饼图中不但可以显示百分比,还能显示具体数字显示

    def pct_number(pct, data):
        number = float(pct/100.*np.sum(data))
        return "{:.2f}%\n({:.2f} 亿元)".format(pct, number)
    
    fig, axes = plt.subplots(nrows = 1, ncols = 2,figsize = (14, 6))               #画两个饼图,一个收入,一个赔付
    axes[0].axis('equal')                                                          #两个圆都是正圆
    axes[1].axis('equal')
    
    labels0 = ['财产险收入','寿险收入','健康险收入','人身意外险收入']              #定义饼图不同部分标签
    labels1 = ['财产险赔付','寿险赔付','健康险赔付','人身意外险赔付']
    
    axes[0].set_title("2018 保险收入", fontsize = 20)                           #定义饼图title
    axes[1].set_title("2018 保险赔付", fontsize = 20)
    
    #截取2018年各单项险种数据进行展示
    axes[0].pie(df_year.iloc[-1,[1,3,4,5]], labels = labels0,autopct = lambda pct: pct_number(pct, df_year.iloc[-1,[1,3,4,5]]))     
    axes[1].pie(df_year.iloc[-1,[7,9,10,11]], labels = labels1,autopct = lambda pct: pct_number(pct, df_year.iloc[-1,[7,9,10,11]]))
    

    在这里插入图片描述
    通过2018至今年第三季度饼图中各保险占比和费用的展示,我们可以清楚的看到:

    1.在保险收入的部分,寿险占到了近六成份额,是保险公司绝对的营收大头。然而在支出部分,寿险却不是支出最多的,同时收入和支出的差额是各种险种中最大的。

    但是为什么会造成这样的数据差距呢?其实懂点商业保险的都知道单纯的人寿保险同等保额对应的保费普遍并不会比健康险更贵,所以这里的寿险是个泛指,我个人认为里面很大比例应该是所谓的年金险。由于年金险也是在被保险人身故时结束保险责任的一种人身保险,所以在划类时也被划分到了寿险类是可以理解的。

    同时年金险的缴费和赔付特点和其他所有保险都是相反的,别的保险都是短期或定期缴少量保费,出险后获取大额保额赔付,说穿了就是其他不出险人的保费都赔给出险的人了。
    但是年金险的特点则是投保人需要短期或定期缴大额保费后,被保险人每年或者退休以后才能收到约定的的少量定额赔付,但是赔付次数/年限一直延续直到被保险人去世为止。这里的赔付费用用的是投保人前期交的大量保费后,保险公司用这笔钱理财盈余所得。也就是用的就是自己的本钱,和他人保费无关。
    此外,年金险一般还会同时卖一个万能险,等同提供一个高额利率的银行储蓄账户,这又是一个吸钱的大杀器。

    年金险的这个收入高,赔付低的特点使得寿险这块必然成为保险公司争抢市场的重中之重。

    2.人身意外险和健康险收入支出占比基本相同,分别只有2%和15%左右,说明这两个险种当前并不是保险公司的营收重点。但是这两个险种收入和支出差距也很明显,显示他们也有很好的发展空间。

    3.财险收入占比不到三成却要支出四成五的赔付,使得财险在赔付占比上排名第一。财险本身分类太多太杂,从车险,房屋险,到矿山,土地,甚至各种信用责任,和人身人寿无关的都算财险。对个体财险公司而言,其所承保项目每年突发事故,天灾人祸出险的多寡可能会很大的影响该财险公司的盈利,但是对整个市场来说,财险市场算是一个比较成熟稳定的市场。

    5.2 过去统计数据分析

    对于过去统计数据,我们会从保费的收入和赔付数额以及月同比增长率两方面来分析。

    ##画两个柱状图,对应收入和赔付支出的历史数据
    my_colors = ['r','g','y','b']                                       #对四种险种定义4个颜色对应
    
    fig, axes = plt.subplots(nrows = 2, ncols = 1,sharex = True,figsize = (16, 12))  
    
    df_quarter.iloc[:,[1,3,4,5]].plot.bar(figsize = (16, 9),ax = axes[0],color = my_colors)    #四个险种的收入季度柱状图
    df_quarter.iloc[:,[7,9,10,11]].plot.bar(figsize = (16, 9),ax = axes[1],color = my_colors)  #四个险种的赔付支出季度柱状图
    
    axes[0].set_title("保险季度收入",fontsize = 15)        #定义柱状图title
    axes[1].set_title("保险季度赔付",fontsize = 15)
    
    axes[1].set_xlabel("日期")                             #定义柱状图的x,y轴label
    axes[1].set_ylabel("单位: 亿元")
    axes[0].set_ylabel("单位: 亿元")
    
    patches, labels = axes[0].get_legend_handles_labels()  #这两段代码是为了调整图中示例标签的位置
    axes[0].legend(patches, labels, loc = 2)
    

    在这里插入图片描述
    从2013年至今的保险各险种季度收入和赔付柱状图我们可以看到:

    1.从保费收入来看,整体体量寿险和财险收入要明显高于健康险和人身意外险。其中寿险在每年的第一季度总能一骑绝尘,和所有其他险种拉开巨大的差距。究其原因其实还是前面提过的年金险引起的。由于年金险强大的吸金效益,每年年末新年伊始各家保险公司都会倾尽所能卖自己的“开门红”产品,这些“开门红”基本都是年金险。这就造成了第一季度巨量的保费收入。

    2.从保费赔付支出来看,首先我们可以发现Y轴单位差了整整一个量级,说明保险业整体盈利能力还是非常巨大的。其次,虽然峰值依然是寿险的,但是平均来看显然财险总支出会更大些,这也符合我们前面饼图显示的各险种赔付比例。至于为什么第一季度寿险赔的也特别多呢?当然是因为年金险这个季度签得多,由于年金险赔付都是按年支出,自然同样的季节赔的也就多了。 有意思的是财险总是第四季度赔付最多,应该是和大家年前清账,以便进行全年盈亏统计不无关系。

    #画月同比增长率的折线图
    from matplotlib.ticker import FuncFormatter
    
    df_month_rate = df_month.pct_change(periods = 12).iloc[12:,:]  #计算月同比增长率,取值时去掉最初作为base数据的12个月
      
    fig, axes = plt.subplots(nrows = 2, ncols = 1,figsize = (16, 12))
    
    df_month_rate.iloc[:,[3,4]].plot(color=['g','y'], ax = axes[0],figsize=(16, 12),grid=True) #为避免凌乱,将4个险种两两分开显示
    df_month_rate.iloc[:,[1,5]].plot(color=['r','b'], ax = axes[1],figsize=(16, 12),grid=True) #
    
    
    def to_percent(temp, position):                             #定义一个可以在y轴将小数显示成百分数的函数
        return '%.f'%(100*temp) + '%'
    
    for i in range(0,2):                                                #定义x,y轴label和格式,多画一条y=0的基准线
        axes[i].yaxis.set_major_formatter(FuncFormatter(to_percent))
        axes[i].set_ylabel("同比增长率")
        axes[i].set_xlabel("日期")
        axes[i].axhline(y=0, color='black', lw=2)
        
    axes[1].set_title("财险/意外险月同比增长率",fontsize=15)   #定义图像title
    axes[0].set_title("寿险/健康险月同比增长率",fontsize=15)
    

    在这里插入图片描述
    从分组后的月同比增长率我们可以看到:

    1.根据Y轴的数值,总得来说各险种收入和赔付都处在高速的增长中,说明我国保险业近几年发展速度迅猛。

    2.从各险种而言,我们可以看到健康险收入的同比增长率在2017年以前明显高于其他险种,增幅最高可以超过125%。当时超高的增长率主要是由于16年底前市场有很多带理财属性的短期/定期健康险(很多都是直接银行当有保险功能的理财产品代卖),受到当时消费者的热捧。

    然而我们可以看到健康险的同比增长率自16年底开始出现急跌,17年中旬和18年开年甚至录得了负增长。其背后的原因是因为自16年中旬开始,相关监管机构和高层就开始放出“保险信保”信号,要求行业回归本源,大力发展保障型产品,而不是吸收资金只求规模,避免造成潜在金融系统风险。随之对应的是先后出台多项红头文件和措施,杜绝了健康险同年金险一样朝偏理财产品的转变。

    但是就算如此,其实健康险同比增长率也并非一蹶不振,17年后期及18年中期依旧能够录得高速的增长率,说明了健康险在更注重保障以后仍然有广阔的发展空间,这是由于75,80后的人们开始保险意识的逐步觉醒,很多人开始自发的去了解保险,主动购买保险。这种主动行为目标都是以重疾险,医疗险等健康险为主体的。

    相对于健康险的超高增长,寿险的增长率略低,且自16初后似乎就开始进入下降通道。主要原因还是“保险信保”的政策改变引起的。特别是17年10月份开始实行的著名的134号文件,对年金险很多快速返还,高额利率等有潜在风险的行业做法做了更严格的规定和限制,从而使年金险作为理财产品的吸引力大幅下降。

    3.相对于前两个险种而言,财险和人身意外险的同比增长率虽然没有超高速的增长率,但是胜在稳定,几年来都能保持在一个区间中,其中意外险的小体量也预示着更大的发展空间。

    5.3 未来状态预测

    由于保险数据非常规整的季度性,很适合用prophet工具进行时间序列的分析和预测。我们会对各保险在未来三年内进行保费收入,月同比增长率以及各险种在总保险收入中的占比进行预测。

    #如果没有,需要先安装fbprophet
    #!conda install -c conda-forge --yes fbprophet    
    from fbprophet import Prophet
    import warnings
    warnings.filterwarnings('ignore') 
    

    以下是各保险在未来三年内保费收入预测

    #定义一个调用prophet并画出相应预测图的函数
    def prophet_image(df,periods,ax):                               #传入dataframe,预测时长和子图序列信息
        df = df.reset_index()  # 重置索引
        df.columns = ['ds', 'y']
        m = Prophet()  # 创建加法模型
        m.fit(df)  # 训练
        future = m.make_future_dataframe(periods=periods, freq='M')  # 生成预测序列
        forecast = m.predict(future)  # 预测
        fig = m.plot(forecast,ax=ax)  # 绘图
    
    #绘制4中保险月收入未来三年的预测图
    fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(14, 8))          #绘制一个2X2的图,分别对应四个险种
    
    prophet_image(df_month.iloc[:,1],39,axes[0,0])                      #调用上面定义的函数进行未来3年的保费数据预测
    prophet_image(df_month.iloc[:,3],39,axes[0,1])
    prophet_image(df_month.iloc[:,4],39,axes[1,0])
    prophet_image(df_month.iloc[:,5],39,axes[1,1])
    
    for i in range(0,2):                                                   #定义个子图y轴label,加画一条x轴基准线已区分历史值和预测值
        for j in range(0,2):
            axes[i,j].set_ylabel("单位: 亿元")
            axes[i,j].axvline(x='2018-09-01',ls="--",color="y", lw=1)
    
    axes[0,0].set_xlabel("财险保费未来三年预测")                          #定义各子图的x轴label
    axes[0,1].set_xlabel("寿险保费未来三年预测")
    axes[1,0].set_xlabel("健康险保费未来三年预测")
    axes[1,1].set_xlabel("人身意外险保费未来三年预测")
    

    在这里插入图片描述
    从四种险种的未来三年保费收入预测图中我们可以看到:

    1.各个险种的保费收入依旧能够稳步增长,说明整个行业总体增长的基石依然存在,行业还是很有发展前景的。

    2.从斜率上我们也可以看出来,寿险保费预测的斜率明显低于其他三个险种,显示出寿险(年金险)由于受规模和政策的影响,发展趋缓。

    3.每个图中折线周边的蓝色阴影部分标志着此点对应日期所预测数值的离散范围。财险和意外险阴影很小,说明这两个险种过往的运营数据规律性明显,所以预测值离散很小。而寿险和健康险由于受政策影响较大,过往数据规律性较差,所以预测值的离散程度也就较高。

    我们最后再看下各险种在未来三年对于总保费的占比趋势预测。

    fig, axes = plt.subplots(nrows=2, ncols=2,figsize=(16, 8))                          #绘制一个2X2的图,分别对应四个险种
    
    prophet_image(df_month.iloc[:,1]/df_month.iloc[:,0],39,axes[0,0])                   #将单个险种保费除以总保费的数值带入函数中进行预测
    prophet_image(df_month.iloc[:,3]/df_month.iloc[:,0],39,axes[0,1])
    prophet_image(df_month.iloc[:,4]/df_month.iloc[:,0],39,axes[1,0])
    prophet_image(df_month.iloc[:,5]/df_month.iloc[:,0],39,axes[1,1])
    
    for i in range(0,2):
        for j in range(0,2):
            axes[i,j].yaxis.set_major_formatter(FuncFormatter(to_percent))              #对各子图设定y轴百分比显示
            axes[i,j].set_ylabel("占比 %")                                              #对各子图定义y轴label
            axes[i,j].axhline(y=0,ls="--",color="black", lw=1)                          #对各子图加画一条y=0基准线
            axes[i,j].axvline(x='2018-09-01',ls="--",color="y", lw=1)                   #对各子图加画一条x轴基准线已区分历史值和预测值
    

    在这里插入图片描述
    从各险种占总保费收入的比重预测图中我们可以看到,财险和寿险的份额会逐渐缩小,健康险和意外险的份额会逐渐扩大。这也预示着未来市场发展的重点和方向的转变。

    六.数据分析总结

    根据对保险业近五年基础数据的分析,我们可以知道,

    首先保险业务收入支出数额巨大,巨大的保费收入最终会通过各种投资渠道流入到整个金融市场中去,在整个金融体系中占据的不可忽视的作用和地位。

    对具体险种而言,财险市场总体稳定独立,发展良好。而在人寿险市场,在过去及可预见未来的时间内,寿险(年金险)市场仍将是每个保险公司的必争之地,体量巨大,利润丰厚。但是随着政策的扶持,国民保险意识的觉醒,健康险和人身意外险已经开始奋起直追,他们将是未来新兴的增长点。

    展开全文
  • 电商项目数据分析

    2020-03-05 16:48:00
    最近做了一个电商项目分析,觉得捋清楚分析的思路是完成一份优秀数据分析报告的前提,故在此总结一下这个项目的分析思路: step1:查看数据 读取数据并查看数据前面数行,了解包含的字段以及各个字段的类型,检查...

     最近做了一个电商项目分析,觉得捋清楚分析的思路是完成一份优秀数据分析报告的前提,故在此总结一下这个项目的分析思路:

    step1:查看数据


            读取数据并查看数据前面数行,了解包含的字段以及各个字段的类型,检查数据完整性,对数据有有一个大体了解,并根据需要对数据进行相应的预处理。

    step2:进行用户消费趋势的分析(按月)

        内容:1.每月的消费总金额

                   2.每月的消费次数

                   3.每月的产品购买量

                   4.每月的 消费人数

                   5.每月用户平均消费金额

                   6.每月用户平均消费次数

    可视化:作出相对应的折线图,体现发展趋势

    step3:用户个体消费分析

    内容:1.用户消费金额、消费次数的描述统计

               2.用户消费金额和消费商品数的散点图    

               3.用户消费金额的分布图

               4.用户消费次数的分布图

               5.用户累计消费金额占比(百分之多少的用户占了百分之多少的消费额)

    step4.用户消费行为

    内容:1.用户第一次消费(首购)——折线图

               2.用户最后一次消费  ——折线图

               3.新老客消费比

                (1)多少用户仅消费了一次?

                (2)每月新客占比

               4.用户分层(重点)

                (1)RFM

                (2)新、活跃、回流、流失/不活跃  ——  面积图

               5.用户购买周期(按订单)

                (1)用户消费周期描述

                (2)用户小分周期分布  ——  直方图

               6.用户生命周期(按第一次&最后一次消费)

                (1)用户生命周期描述

                (2)用户生命周期分布  ——  直方图

    step5.复购率和回购率分析

               复购率:自然月内,购买多次的用户占比  ——  折线图

               回购率:曾经购买过的用户在某一时期内的再次购买的占比  ——  折线图

     

    展开全文
  • 其次,针对学术界典型的开放数据挖掘工具 WEKA,进行数据挖掘测试,主要包括预处理、分类、聚类、属性选择、关联规则及可视化等,并对挖掘结果进行统计分析,指出 WEKA 系统存在的缺陷及发展前景。为了弥补 WEKA ...
  • 用书面报告总结结果 专栏积分 在这里,我将分别考虑并描述我在实现过程中如何解决每个要点。 可以在找到项目代码 数据集摘要与探索 该项目使用的数据集是,可从下载 训练示例数= 34799 有效示例数= 4410 测试例...
  • 要开车了哦全文结构:前言数据筛选数据预处理部分数据重编码与合并描述性统计部分回归建模总结这里如果算上「报告输出」是一套基本的数据分析流程,但是这都是后续工作,这里仅展示以R来进行数据处理的部分;...
  • 《网络程序设计》署名博客完成一篇署名博客,博客内容至少包括课程学习心得总结、通过commit/pr等说明自己的功劳和苦劳、提供自己的版本库URL并附上...数据预处理去均值归一化 简化读取数据方式 216 将A3集成到A2中接
  • 用书面报告总结结果 数据集摘要与探索 1.数据集的基本摘要。 我使用了基本的和<.shape>命令来计算交通标志数据集的摘要统计信息: 训练集的大小是34799 验证集的大小为4410 测试集的大小是12630 交通标志图像的...
  • 数据预处理3.解析正文4.总结 1.分析网站 分析网站目标:找到季度报告正文的网址 1.1 动态网站判断 方法1:F12 – 刷新 – network – response(这个就是爬虫下来html的内容) 方法2:选择不同页码,对应的网址却没有...
  • 用书面报告总结结果 专栏积分 在这里,我将分别考虑并描述我在实现过程中如何解决每个要点。 数据集摘要与探索 1.数据集摘要 我使用了pandas库来计算交通标志数据集的摘要统计信息: 训练集的大小是34799 验证集的...
  • 疼痛自动识别综述

    2021-05-06 12:23:44
    因此,对疼痛自动识别系统的需求日益加大,近十年来,很多研究人员在此领域取得突破性的成果,本文对疼痛自动识别系统进行综述,一方面从疼痛自动识别系统的结构组成方面进行描述,主要包括数据获取、数据预处理、...
  •  1.1.2 预处理指令   1.1.3 main函数   1.1.4 read_column_numbers函数   1.1.5 rearrange函数   1.2 补充说明   1.3 编译   1.4 总结   1.5 警告的总结   1.6 编程提示...
  • C和指针 清晰版 PDF

    热门讨论 2011-10-31 18:29:15
     1.1.2 预处理指令   1.1.3 main函数   1.1.4 read_column_numbers函数   1.1.5 rearrange函数   1.2 补充说明   1.3 编译   1.4 总结   1.5 警告的总结   1.6 编程提示的总结   1.7 ...
  • 《C陷阱与缺陷》~!~!~!

    2009-10-13 18:26:25
    1.1.2 预处理指令 1.1.3 main函数 1.1.4 read_column_numbers函数 1.1.5 rearrange函数 1.2 补充说明 1.3 编译 1.4 总结 1.5 警告的总结 1.6 编程提示的总结 1.7 问题 1.8 编程练习 第2章 基本概念 2.1 环境 2.1.1 ...
  • c和指针PDF电子书

    热门讨论 2010-05-06 13:18:58
    1.1.2 预处理指令 4 1.1.3 main函数 5 1.1.4 read_column_numbers函数 8 1.1.5 rearrange函数 12 1.2 补充说明 14 1.3 编译 14 1.4 总结 15 1.5 警告的总结 15 1.6 编程提示的总结 15 1.7 问题 16 1.8 编程练习 16 ...
  • C和指针 Pointer on C

    2015-05-08 09:25:32
    15.1 错误报告 15.2 终止执行 15.3 标准I/O函数库 15.4 ANSI I/O概念 15.4.1 流 15.4.2 文件 15.4.3 标准I/O常量 15.5 流I/O总览 15.6 打开流 15.7 关闭流 15.8 字符I/O 15.8.1 字符I/O宏 ...
  • C和指针 pdf 加上程序

    2008-11-09 01:33:59
    1.1.2 预处理指令 4 1.1.3 main函数 5 1.1.4 read_column_numbers函数 8 1.1.5 rearrange函数 12 1.2 补充说明 14 1.3 编译 14 1.4 总结 15 1.5 警告的总结 15 1.6 编程提示的总结 15 1.7 问题 16 1.8 编程练习 16 ...
  • c和指针.pdf

    热门讨论 2014-07-02 09:42:31
    1.1.2 预处理指令 1.1.3 main函数 1.1.4 read_column_numbers函数 1.1.5 rearrange函数 1.2 补充说明 1.3 编译 1.4 总结 第2章 基本概念 2.1 环境 2.1.1 翻译 2.1.2 执行 2.2 词法规则 2.2.1 字符 ...
  • 7.1.9 管理恢复进程状态报告(PS) 254 7.2 Data Guard Menu实用程序 255 7.3 审阅当前Data Guard环境 256 7.3.1 检查密码文件(PS+LS) 258 7.3.2 检查Nologging活动(PS+LS) 258 7.3.3 查看归档日志模式和目的地...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • 作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • TCP_IP详解卷1

    热门讨论 2010-12-29 10:53:54
    13.3.2 IGMP报告和查询 137 13.3.3 实现细节 137 13.3.4 生存时间字段 138 13.3.5 所有主机组 138 13.4 一个例子 138 13.5 小结 141 第14章 DNS:域名系统 142 14.1 引言 142 14.2 DNS基础 142 14.3 DNS的报文格式 ...
  • TCPIP详解卷[1].part12

    2010-12-29 11:12:15
    13.3.2 IGMP报告和查询 137 13.3.3 实现细节 137 13.3.4 生存时间字段 138 13.3.5 所有主机组 138 13.4 一个例子 138 13.5 小结 141 第14章 DNS:域名系统 142 14.1 引言 142 14.2 DNS基础 142 14.3 DNS的报文格式 ...
  • TCPIP详解卷[1].part11

    2010-12-29 11:09:56
    13.3.2 IGMP报告和查询 137 13.3.3 实现细节 137 13.3.4 生存时间字段 138 13.3.5 所有主机组 138 13.4 一个例子 138 13.5 小结 141 第14章 DNS:域名系统 142 14.1 引言 142 14.2 DNS基础 142 14.3 DNS的报文格式 ...
  • TCPIP详解卷[1].part09

    2010-12-29 11:05:16
    13.3.2 IGMP报告和查询 137 13.3.3 实现细节 137 13.3.4 生存时间字段 138 13.3.5 所有主机组 138 13.4 一个例子 138 13.5 小结 141 第14章 DNS:域名系统 142 14.1 引言 142 14.2 DNS基础 142 14.3 DNS的报文格式 ...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

数据预处理报告总结