数据分析实战--统计分析

作者: 勤奋的土豆鹿鹿 | 来源:发表于2019-04-19 16:31 被阅读3次

    本文主要内容是对数据分布进行分析,主要是集中和离中趋势度量,包括了做观测数据的连续概率分布的估计等,同时也是matplotlib常用的几个部分的练习。

    首先模块导入

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    

    1、集中趋势度量

    创建数据

    
    data = pd.DataFrame({'value':np.random.randint(100,120,100),
                         'f':np.random.rand(100)})
    
    

    f为权重,这里将f列设置成总和为1的权重占比1

    
    data['f'] = data['f']/data['f'].sum()
    
    

    (1)算数平均数

    简单算数平均值 = 总和 / 样本数量 (不涉及权重)

    mean = data['value'].mean()
    
    

    加权算数平均值 = (x1f1 + x2f2 + ... + xnfn) / (f1 + f2 + ... + fn)

    c_mean = (data['value']*data['f']).sum()/(data['f'].sum())
    
    

    (2)位置平均数

    众数为

    mod = data['value'].mode()
    
    

    中位数为

    
    med = data['value'].median()
    
    

    密度曲线

    data['value'].plot(kind = 'kde',title = '密度曲线图')
    
    

    密度曲线中加入:简单算数平均值、 加权算数平均值、中位数

    简单算数平均值

    
    plt.axvline(mean,color='r',linestyle='--')
    plt.text(120,0.03,'简单算数平均值',color='r')
    
    

    加权算数平均值

    plt.axvline(c_mean,color='b',linestyle='--')
    plt.text(120,0.035,'加权算数平均值',color='b')
    
    

    中位数

    plt.axvline(med,color='g',linestyle='--')
    plt.text(120,0.04,'中位数',color='g')
    
    
    image

    2、离中趋势度量

    创建数据、A/B销售额量级在同一水平

    data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,
                        'B_sale':np.random.rand(30)*1000},
                       index = pd.period_range('20170601','20170630'))
    
    

    极差

    
    sta = data['A_sale'].describe()
    stb = data['B_sale'].describe()
    max_min_a = sta['max'] - sta['min']
    max_min_b = stb['max'] - stb['min']
    
    

    A销售额的分位差为, B销售额的分位差为:

    a_iqr = sta['75%'] - sta['25%']
    b_iqr = stb['75%'] - stb['25%']
    
    

    没有考虑中间变量的变动,测定离中趋势不稳定

    箱型图

    
    color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
    data.plot.box(grid=True,color=color,vert=False)
    
    image

    (2)方差与标准差

    方差:

    
    a_var = data['A_sale'].var()
    b_var = data['B_sale'].var()
    
    

    标准差:

    std_a = sta['std']
    std_b = stb['std']
    fig,ax = plt.subplots(2,1,figsize=(10,10))
    
    

    A密度曲线,1个标准差

    
    data['A_sale'].plot(kind='kde',title='A密度曲线',ax=ax[0])
    ax[0].axvline(sta['50%'],linestyle='--',color='r')
    ax[0].axvline(sta['50%']+std_a,linestyle='--',color='b')
    ax[0].axvline(sta['50%']-std_a,linestyle='--',color='b')
    
    

    B密度曲线,1个标准差

    data['B_sale'].plot(kind='kde',title='B密度曲线',ax=ax[1])
    ax[1].axvline(stb['50%'],linestyle='--',color='r')
    ax[1].axvline(stb['50%']+std_b,linestyle='--',color='b')
    ax[1].axvline(stb['50%']-std_b,linestyle='--',color='b')
    
    
    image image

    更多文章关注二维码相互交流呀!

    相关文章

      网友评论

        本文标题:数据分析实战--统计分析

        本文链接:https://www.haomeiwen.com/subject/dphcgqtx.html