• 数据特征分析


    1 分布分析

      1 极差 写个函数就行 

        def d_range(df,*args)

      2 定量用直方图

        1)直接用plot.hist()

        2)s = pd.cut()      

            return indices of half-open bins to which each value of `x` belongs. 这个方法感觉 就在手动绘制直方图会用到,可能以后类似相关的也会用到

           s_count = s.value_counts()

           s_count_df = pd.DataFrame(s_count)

           s_count_df['频率'] / [ ' 累计频率']  / [ ' 累计频数 ']

          s_count_df[''].bar

        

       3 定性 用饼图

        

    2 对比分析

      1 绝对数比较(相减),用得相对较少

        用到的知识点是 1)子图  fig = plt.figure ax = fig.add_subplot(2,1,1)

                 2)  条形图  plt.bar(x,y)  x横坐标,y对应的值

               3) plt.xticks  ax.set_xticklabels  因为plt.bar 横坐标x 只是0-50 这样的序列

    # (3)柱状图堆叠图+差值折线图比较
    
    fig3 = plt.figure(figsize=(10,6))
    plt.subplots_adjust(hspace=0.3)
    # 创建子图及间隔设置
    
    ax1 = fig3.add_subplot(2,1,1)  
    x = range(len(data))
    y1 = data['A_sale']
    y2 = -data['B_sale']
    plt.bar(x,y1,width = 1,facecolor = 'yellowgreen')
    plt.bar(x,y2,width = 1,facecolor = 'lightskyblue')
    plt.title('AB产品销量对比-堆叠图')
    plt.grid()
    plt.xticks(range(0,30,6))
    ax1.set_xticklabels(data.index[::6])
    # 创建堆叠图
    
    ax2 = fig3.add_subplot(2,1,2)  
    y3 = data['A_sale']-data['B_sale']
    plt.plot(x,y3,'--go')
    plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
    plt.grid()
    plt.title('AB产品销量对比-差值折线')
    plt.xticks(range(0,30,6))
    ax2.set_xticklabels(data.index[::6])
    # 创建差值折线图

      2 相对数比较 (相除),用的较多

        1)结构分析     

          # 在分组基础上,各组总量指标与总体的总量指标对比,计算出各组数量在总量中所占比重
          # 反映总体的内部结构

        2)比例分析

          # 在分组的基础上,将总体不同部分的指标数值进行对比,其相对指标一般称为“比例相对数”

          # 比例相对数 = 总体中某一部分数值 / 总体中另一部分数值 → “基本建设投资额中工业、农业、教育投资的比例”、“男女比例”...

          在这里用到了 s.plot.area(ylim=[ ])

        3)空间比较分析(横向对比分析,抽象的空间概念)

          # 同类现象在同一时间不同空间的指标数值进行对比,反应同类现象在不同空间上的差异程度和现象发展不平衡的状况
          # 空间比较相对数 = 甲空间某一现象的数值 / 乙空间同类现象的数值
          # 一个很现实的例子 → 绝对数来看,我国多经济总量世界第一,但从人均水平来看是另一回事

        4)动态对比分析

          # 同一现象在不同时间上的指标数值进行对比,反应现象的数量随着时间推移而发展变动的程度及趋势
          # 最基本方法,计算动态相对数 → 发展速度
          # 动态相对数(发展速度) = 某一现象的报告期数值 / 同一现象的基期数值
          # 基期:用来比较的基础时期
          # 报告期:所要研究的时期,又称计算期

    data = pd.DataFrame({'A':np.random.rand(30)*2000+1000},
                       index = pd.period_range('20170601','20170630'))
    print(data.head())
    print('------')
    # 创建数据 → 30天内A产品的销售情况
    
    data['base'] = 1000  # 假设基期销售额为1000,后面每一天都为计算期
    data['l_growth'] = data['A'] - data['base']  # 累计增长量 = 报告期水平 - 固定基期水平
    data['z_growth'] = data['A'] - data.shift(1)['A']  # 逐期增长量 = 报告期水平 - 报告期前一期水平
    data[data.isnull()] = 0  # 替换缺失值
    
    data[['l_growth','z_growth']].plot(figsize = (10,4),style = '--.',alpha = 0.8)  
    plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
    plt.legend(loc = 'lower left')
    plt.grid()
    # 通过折线图查看增长量情况
    
    data['lspeed'] = data['l_growth'] / 1000  # 定基增长速度
    data['zspeed'] = data['z_growth'] / data.shift(1)['A']  # 环比增长速度
    data[['lspeed','zspeed']].plot(figsize = (10,4),style = '--.',alpha = 0.8)  
    plt.axhline(0,hold=None,color='r',linestyle="--",alpha=0.8)  # 添加y轴参考线
    plt.grid()
    print(data.head())
    print('------')
    # 通过折线图查看发展速度

        https://wiki.mbalib.com/wiki/%E7%B4%AF%E8%AE%A1%E5%A2%9E%E9%95%BF%E9%87%8F

        https://wiki.mbalib.com/wiki/%E5%AE%9A%E5%9F%BA%E5%A2%9E%E9%95%BF%E9%80%9F%E5%BA%A6

    3 统计分析

       统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析

      1 集中趋势

        1)算术平均数

          1)简答平均数 mean()

          2)加权平均数

        2)位置平均数

          1)众数 mode()

          2)中位数 median()

      2 离中趋势

        1)方差  var() 与 标准差 std()  describe().loc['std']

        2)极差 与 四分位差 (iqr)--> 箱型图 box

        

    4 帕累托分析 二八法则

      思路:将值从大到小排序,算占比的cumsum。

      用到的方法:series.plt(secondary_y=True)。注意,这里series,的索引不能是数字,用英文字母都可以。

            plt.axvline()

            plt.text

    5 正态性检验

      1 描述统计方法

        1)直方图 hist 密度图 kde ,可以在同一张表内显示。直接看图的形状。

    data['a'].hist(bins=100)
    data['a'].plot(kind='kde',secondary_y=True)

        2)Q-Q图

    # QQ图判断
    # QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况
    
    # QQ图是一种散点图,对应于正态分布的QQ图,就是由标准正态分布的分位数为横坐标,样本值为纵坐标的散点图
    # 参考直线:四分之一分位点和四分之三分位点这两点确定,看散点是否落在这条线的附近
    
    # 绘制思路
    # ① 在做好数据清洗后,对数据进行排序(次序统计量:x(1)<x(2)<....<x(n))
    # ② 排序后,计算出每个数据对应的百分位p{i},即第i个数据x(i)为p(i)分位数,其中p(i)=(i-0.5)/n (pi有多重算法,这里以最常用方法为主)
    # ③ 绘制直方图 + qq图,直方图作为参考
    View Code

      2 统计检验方法

        1)K-S检验

    # 直接用算法做KS检验
    
    from scipy import stats
    # scipy包是一个高级的科学计算库,它和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算
    
    data = [87,77,92,68,80,78,84,77,81,80,80,77,92,86,
           76,80,81,75,77,72,81,72,84,86,80,68,77,87,
           76,77,78,92,75,80,78]
    # 样本数据,35位健康男性在未进食之前的血糖浓度
    
    df = pd.DataFrame(data, columns =['value'])
    u = df['value'].mean()  # 计算均值
    std = df['value'].std()  # 计算标准差
    stats.kstest(df['value'], 'norm', (u, std))
    # .kstest方法:KS检验,参数分别是:待检验的数据,检验方法(这里设置成norm正态分布),均值与标准差
    # 结果返回两个值:statistic → D值,pvalue → P值
    # p值大于0.05,为正态分布

    6 相关性分析

      1)图示初判,散点图,散点矩阵

      2) 正态性 --> pearson    Series/DataFrame.corr方法

      3) 非正态性 --> spearman   Series/DataFrame.corr方法

    
    
  • 相关阅读:
    mysql The server time zone value 'xxx' is unrecognized
    mysql Public Key Retrieval is not allowed
    mysql Unable to load authentication plugin 'caching_sha2_password'.
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/654321cc/p/11910760.html
Copyright © 2020-2023  润新知