缺失值处理

#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2019/12/7 15:04'
import pandas as pd
import re

data = pd.read_csv('./task0201/spider.log')
print('总数数据行:%s,不含空值的数据行:%s, 去除行全为空值的行数据:%s, 去除含至少出现两个空值的行数据%s ' %
      (len(data), len(data.dropna()), len(data.dropna(how='all')), len(data.dropna(thresh=2)) ))
# print(data.dropna()) # 不含空值的行数据
# print(data.dropna(how='all')) # 该行所有值全为缺失值才删除
# print(data.dropna(thresh=2)) # 至少出现过两个缺失值才删除
#print(data.dropna(subset=['name', 'born'])) # 删除这个subset中的含有缺失值的行或列

# ---------- 1:取行的操作:
# print('第x行到第y行直接的行数据:\n',data.loc[3:6])  # 类似于python的切片操作

# ---------- 2:无header,iloc 取列操作。Ps:数据矩阵,从(0,0)即0行0列开始
# 分别提取第0列。第1行第2列。第3列前五个数据。提取第0,1列数据
# print('第x列数据:\n',data.iloc[:,0]) # data.iloc[:,x]:表示第x列
# print(data.iloc[1,2])  # data.iloc[x,y]:表示第x行,第y列
# print((data.iloc[:,2]).head())
# print(data.iloc[:,[0,1]])
# print(data.iloc[:,lambda df:[0,1]])

# ---------- 3、获取缺失值
column_null = pd.isnull(data)
# print(column_null)
column_is_null_true = data[column_null]
# print(column_is_null_true)

# ---------- 4、缺失值处理
# 4.1 利用thresh,留下一部分观测数据
# thresh=3,表示在行方向上至少有3个非NAN的项保留
# print(len(data))
# print(data.dropna(thresh=3))

# 在列方向上至少有3个非NAN的项保留
# print(len(data))
# print(data.dropna(thresh=3,axis=1))

# 4.2 填充缺失数据
# 用fillna的方法,将缺失值替换为常数值,或指定内容
# print(data.fillna('wangwei'))

# 过一个字典调用fillna实现对不同的列填充不同的值
# print(data.fillna({1:'f201',2:'f202',3:'f203',4:'f204'}))  # 没用

# 对reindex有效的那些差值方法也可以用于fillna
# print(data.fillna(method='ffill',limit=3))
# print(data.fillna(method='bfill',limit=2))