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()