目录
内容概览:
本文主要介绍有关数据探索和处理的常用技术,包括“脏”数据的判别与清洗、数据子集的筛选、多表之间的操作以及分组统计方法。
由于针对具体操作相关文档太多,所以本文内容涉及具体操作较少,主要是讲方法。
- 2020.07.16新增使用sklearn的数据预处理方法
本文内所用到的包:
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
一.数据的概览与清洗
读入数据:data3=pd.read_excel(‘data3.xlsx’),本节之后操作以data3为基础
1.数值类型的判断和转换
拿到一个数据后,通常需要进行如下操作,这也是一个最常用的操作顺序。
print(data3.shape)#查看数据的规模 (3000, 6)
print(data3.head())
print(data3.dtypes)#查看表中各变量的数据类型
根据实际情况转换数据类型
data3[‘id’]=data3[‘id’].astype(str)
data3[‘custom_amt’]=data3[‘custom_amt’].str[1:].astype(float)
data3[‘order_date’]=pd.to_datetime(data3[‘order_date’],format="%Y年%m月%d日")
print(data3.dtypes)
print(data3.head())
2.冗余数据的判断和处理
print(data3.duplicated().any())#False
如果结果为true,可调用drop_duplicates()去掉重复行
3.缺失数据的判断与处理
判断一个数据集是否存在缺失观测值,通常从两个方面入手:一个是变量的角度,即判断每个变量中是否包含缺失值;另一个是数据行的角度,即判断每行数据中是否包含缺失值。
print(data3.isnull().any(axis=0))#判断各变量中是否存在缺失值
print(data3.isnull().sum(axis=0))#各变量中缺失值的数量
print(data3.isnull().sum(axis=0)/data3.shape[0])#各变量中缺失值的比例
对于缺失值的处理,常用的方法为删除法、替换法和插补法
- 删除法:缺失行的比例在5%以内或缺失值所对应的变量在70%左右
- 替换法:直接利用缺失变量的均值、中位数或众数替换该变量中的缺失值
- 插补法:可使用线性回归模型等
使用删除法:
data3.drop(labels='edu',axis=1,inplace=True)#删除缺失率非常高的edu,inplace=True表示原地修改
data3_new = data3.drop(labels=data3.index[data3['age'].isnull()],axis=0)#删除观测值,如删除age变量中所对应的缺失观测值
#或者
data3_new = data3