美文网首页解密大数据我爱编程
三、数据探索方法及函数汇总(Python描述)

三、数据探索方法及函数汇总(Python描述)

作者: 阿文_Venn | 来源:发表于2017-07-06 15:26 被阅读124次

    1 描述性统计

    常用函数:粗略了解数据整体

    • pandas.DataFrame: head(), tail(), info(), describe()
    • pandas.DataFrame(Series).count():在Python里count是一个内置函数,同于统计非空值的样本的个数,直接在DataFrame和Series对象后加.count()即可使用
    • 筛选pandas.DataFrame中某类变量的对应信息,并对非空值数量、unique数量,最大频数变量,最大频数,以及新添加一列特征变量missing_pct(表示值缺失的比重)等进行分析
    lendData.select_dtypes(include=['O']).describe().T\
        .assign(missing_pct=lendData.apply(lambda x : (len(x)-x.count())/len(x)))
    

    代码[2]

    2 中心趋势

    2.1. 数值分析

    均值、中位数、众数、均值的差值(两个样本之间)、偏度

    1. 偏度
      在右偏分布中,度量数据中心趋势的三个量关系如下:众数 < 中位数 < 均值

    2.2 图形分析

    1. 直方图,可以观测到偏度

    2.? 常用函数

    • pandas.DataFrame: mean(), median(), mode(), skew()
    • 直方图: matplotlib.pyplot.hist(),示例2.1
      第一类直方图
    fig = plt.figure(figsize=(14,4))
    p1 = fig.add_subplot(121)
    plt.hist(bmi_rich, bins=50, rwidth=0.9)
    p2 = fig.add_subplot(122)
    plt.hist(bmi_ord, bins=50, rwidth=0.9)
    plt.show()
    
    第一类直方图

    第二类直方图,将两个样本的第一类直方图合并显示

    plt.hist(bmi_rich, bins=50, range=(10,60), normed=True, label='rich', alpha=0.4, color='red')
    plt.hist(bmi_ord, bins=50, range=(10,60), normed=True, label='ordinary', alpha=0.4, color='blue')
    plt.show()
    
    第二类直方图

    3 相对位置

    3.1 数值分析

    1. 分位数
    2. IQR(Interquartile range):25%和75%所对应的四分位数之间的差值,样本变异性的度量
    3. 最大值和最小值
    4. 样本中不同值的个数

    3.2 图形分析

    1. ECDF图
      均值和直方图,这两者其实都是对数据信息的压缩。均值将信息压缩到一个数值,而丢弃了大部分信息量;相比之下直方图则保留了更多的信息量,只是将数据压缩到一个个连续的区间中。这也就是为什么之前我们在比较两类人的直方图时,总有看不真切的感觉。那么有没有什么方法能显示所有的数据点呢?这就是下面所示的经验累积分布函数图:ECDF(Empirical Cumulative Distribution Function)。
    2. 箱图 (boxplot)
      更直观反映分位数的是箱图,图中直接画出了中位数、四分位数和IQR,并且从中还能发现离群值,它们是数据中异常大或异常小的数值。在箱图的上下两侧分别有两道篱笆,它们的数值分别是Q1-1.5IQR和Q3+1.5IQR,其中Q1,Q3是四分位数。而处于这两道篱笆之外的数值可以看做异常值。

    3.3 常用函数及代码

    • ECDF图
    def ecdf(data): # 计算数据的ECDF值
        x = np.sort(data)
        y = np.arange(1, len(x)+1) / len(x)
        return (x,y)
    
    def plot_ecdf(data, xlabel=None , ylabel='ECDF', label=None):     # 绘制ECDF图
        x, y = ecdf(data)
    
        _ = plt.plot(x, y, marker='.', markersize=3, linestyle='none', label=label)
        _ = plt.legend(markerscale=4)
        _ = plt.xlabel(xlabel)
        _ = plt.ylabel(ylabel)
        plt.margins(0.02)
    
    plot_ecdf(bmi_rich,label='rich')
    plot_ecdf(bmi_ord, xlabel='BMI',label='ordinary')
    plt.show()
    
    ECDF图
    • 箱图
    import seaborn as sns
    sns.boxplot(x='income_level', y='bmi', data=bmi_income, palette="Set3")
    plt.show()
    
    箱图

    4 离散度

    4.1 数值分析

    1. 方差和标准差


      标准差公式

      注意:这里分母中使用N-1而非N,是因为当使用样本数据推测总体的标准差时,需进行Bessel修正。

    2. Cohen's d
      当考虑了样本数据的离散度后,就能够更精准的衡量两类样本的差异,即使用一个新的量:Cohen's d,它可以简单看做是均值的差值除以两个样本综合的标准差。其公式定义如下:
    Cohen's d 公式

    首先我们需要对Cohen's d有一个大概的数值范围概念,当它的值为0.8代表有较大的差异,0.5位列中等,0.2较小,0.01则非常之小。

    4.3 常用函数

    • 方差和标准差:pandas.DataFrame: var(), std()
    • Cohen's d
    def cohen_d(data1, data2):
        n1 = len(data1)
        n2 = len(data2)
        x1 = np.mean(data1)
        x2 = np.mean(data2)
        var1 = np.var(data1, ddof=1)
        var2 = np.var(data2, ddof=1)
        sp = np.sqrt(((n1-1)*var1+(n2-1)*var2)/(n1+n2-2))
        return (x1-x2)/sp
    
    print("Cohen's d: %.3f" %cohen_d(bmi_rich, bmi_ord))
    

    5 相关性

    前面观察的都是单个变量(主要是BMI指数)的统计学性质,接下来我们考察下两个变量之间的关系。

    5.1 数值分析

    1. 协方差:协方差(Covariance)是衡量两个变量的总体误差,方差可以看做是两个变量相同时的特殊情况。其公式如下:
    协方差公式
    1. 相关系数:了解了协方差的概念后,就可以使用Pearson相关系数来衡量两个变量的相关性,它的定义是协方差除以两个变量各自的标准差,公式如下:
    image.png

    Pearson相关系数的取值范围在-1到1之间,0代表无相关性,正数代表正相关,负数代表负相关,绝对值越大,相关性越高。

    5.2 图形分析

    1. 散点图,判断相关性

    5.3 常用函数

    • numpy: cov(), corrcoef()
    np.cov(height,weight)[0,1]
    np.corrcoef(height, weight)[0,1] 
    
    • 散点图
    # 绘制身高、体重的散点图
    plt.plot(height,weight, marker='.', linestyle='none', alpha = 0.05)
    plt.show()
    

    6 分组统计

    6.3 常用函数

    pandas.DataFrame.groupby()


    1. 发掘数据中的信息 -- 数据探索之描述性统计(http://www.jianshu.com/p/8982ad63eb85)

    2. Lending Club贷款数据分析(上)(http://www.jianshu.com/p/a8037a38e219)

    相关文章

      网友评论

        本文标题:三、数据探索方法及函数汇总(Python描述)

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