八、探索性数据分析——数字化探索

1.数字化探索

数字化探索又称为数字化描述,它主要通过函数,得到数据集的一些数字指标值,来对数据的整体结构、变量情况、分布指标、缺失值等方面进行探索。主要包含以下几方面的内容:

  • 变量的概况和详情
  • 分布指标
  • 稀疏性和缺失值
    数字化的探索结果或许没有图形看起来直观,但是却给出了各项统计指标的确切取值,这对于制作和观察图形、设定算法参数提供了依据。

2 变量的概况和详情

  • 2.1 变量的描述统计量
    1.离散型随机变量:平均值,中位数,众数,最小值,最大值,四分位数,标准差等
    2.查看数据的信息:包括每个字段的名称、非空数量、字段的数据类型 : data.info()
    3.统计学指标快速描述数据的概要: data.describe()
    4.查看的数据大小:data.shape
    5.查看数据的前5行:data.head()
    6.查看数据的后5行:data.tail()
    7.查看数据类型:data.dtypes
  • 2.2 变量的描述统计量——距离
    1、查看数据的前5行
    在这里插入图片描述
    3、查看数据统计信息
    在这里插入图片描述

3 分布指标

  • 所谓“分布”,通俗来说即是指数据集中某变量各水平的取值情况。在统计学中,对于离散变量,主要有二项分布、泊松分布、几何分布等概率;而对于连续性变量,则有均匀分布、指数分布,以及最为熟知的正态分布等。
    1.检查数据(SAT数据的数学成绩)是否服从正太分布?
    在这里插入图片描述
    2.检查数据是否服从t分布?
    在这里插入图片描述

4 稀疏性和缺失值

4.1 问题

  • 4.2.1 稀疏性的基本概念
    数据的稀疏性是对高维数据而言,即数据集中的变量个数成百上千,而其中的大部分变量仅对小部分样本有取值,高维数据的稀疏性在推荐系统等领域频繁出现。
  • 4.2.2 数据缺失值
    数据集含有缺失值是很常见的,尤其对于一些需要一个个人工收集汇总起来的数据集,很难保证每一条样本的每一个变量都有取值。
  • 4.2.3 缺失值的发现方法
    1.元素级别的判断:dataframe.isnull()
    2.列表级别的判断:dataframe.isnull().any()

5 完整代码

# *-* coding:utf-8 *-*

# 导入工具库
import numpy as np
import pandas as pd
from scipy import stats

# 读取数据集
sat_17 = pd.read_csv('data/sat_2017.csv')

# 1. 数字化的描述
def num_describe():
    print(sat_17.head())       # 前5行
    print(sat_17.tail())       # 后5行
    print(sat_17.info())       # 数据集信息
    print(sat_17.shape)        # 数据的大小
    print(sat_17.describe())   # 统计信息

# 2. 检验数学成绩是否服从正态分布
def check_norm():
    print("+++++++++++++")
    stat = stats.kstest(sat_17['Math'], 'norm')
    res = stats.shapiro(sat_17['Math'])
    rest = stats.normaltest(sat_17['Math'], axis=0)
    print(stat)
    print(res)
    print(rest)

# 3. 检验数学成绩是否服从t分布
def check_t():
    print("============")
    np.random.seed(1)
    ks = stats.t.fit(sat_17['Math'])
    df = ks[0]
    loc = ks[1]
    scale = ks[2]
    t_estm = stats.t.rvs(df=df, loc=loc, scale=scale, size=len(sat_17['Math']))
    res2 = stats.ks_2samp(sat_17['Math'], t_estm)
    print('res2', res2)

# 4 缺失值的发现
def check_isnull():
    print(sat_17.isnull().head())  # 元素级别
    print(sat_17.isnull().any())   # 列级别

def main():
    print("--------------")
    num_describe()
    check_norm()
    check_t()
    check_isnull()

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值