Pandas缺失值处理
时间:2022-07-25
本文章向大家介绍Pandas缺失值处理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#导入库
import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
#生成缺失数据
df=pd.DataFrame(np.random.randn(6,4),columns=['col1','col2','col3','col4'])
df.iloc[1:2,1] = np.nan #增加缺失值
df.iloc[4,3] = np.nan #增加缺失值
print(df) #打印输出
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 NaN -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 NaN
5 1.002177 0.448844 -0.584634 -1.038151
#查看缺失值位置
nan_all=df.isnull()
print(nan_all)
col1 col2 col3 col4
0 False False False False
1 False True False False
2 False False False False
3 False False False False
4 False False False True
5 False False False False
nan_col1=df.isnull().any() #获取含有NA的列
print(nan_col1)
col1 False
col2 True
col3 False
col4 True
dtype: bool
nan_col2=df.isnull().all() #获得全部为NA的列
print(nan_col2)
col1 False
col2 False
col3 False
col4 False
dtype: bool
#丢弃缺失值
df2=df.dropna() #直接丢弃含有NA的行纪录
print(df2)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
5 1.002177 0.448844 -0.584634 -1.038151
#通过sklearn的数据预处理方法对缺失值进行处理
nan_model=Imputer(missing_values='NaN',strategy='mean',axis=0) #建立替换规则:将值为NaN的缺失值以均值做替换
nan_result=nan_model.fit_transform(df) #应用模型规则
print(nan_result) #打印输出
[[-0.97751051 -0.56633185 -0.52993389 1.48969465]
[-0.49112788 -0.25284792 -0.81117388 -1.10271738]
[ 0.38577678 -0.63882219 0.32595345 -0.24077995]
[ 0.93835121 -0.74688892 0.37519957 -0.71526484]
[ 1.10341788 0.23895916 -0.45911413 -0.32144373]
[ 1.00217657 0.4488442 -0.58463419 -1.03815116]]
#使用Pandas做缺失值处理
nan_result_pd1 = df.fillna(method='backfill') #用后面的值替换缺失值
print(nan_result_pd1)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 -0.638822 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 -1.038151
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_pd2 = df.fillna(method='bfill',limit=1) #用后面的值替换缺失值,限制每列只能替代一个缺失值
print(nan_result_pd2)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 -0.638822 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 -1.038151
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_df3=df.fillna(method='pad') #用前面的值替换缺失值
print(nan_result_df3)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 -0.566332 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 -0.715265
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_df4=df.fillna(0) #用0替换缺失值
print(nan_result_df4)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 0.000000 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 0.000000
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_df5=df.fillna({'col2':1.1,'col4':1.2}) #用不同值替换不同列的缺失值
print(nan_result_df5)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 1.100000 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 1.200000
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_df6=df.fillna(df.mean()['col2':'col4']) #用各自列的平均数替换缺失值
print(nan_result_df6)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 -0.252848 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 -0.321444
5 1.002177 0.448844 -0.584634 -1.038151
nan_result_df7=df.replace(np.nan,0) #用Pandas的replace替换缺失值
print(nan_result_df7)
col1 col2 col3 col4
0 -0.977511 -0.566332 -0.529934 1.489695
1 -0.491128 0.000000 -0.811174 -1.102717
2 0.385777 -0.638822 0.325953 -0.240780
3 0.938351 -0.746889 0.375200 -0.715265
4 1.103418 0.238959 -0.459114 0.000000
5 1.002177 0.448844 -0.584634 -1.038151
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- js this问题和es6箭头函数this问题
- 元素淡入淡出效果实现
- Asp.Net Mvc表单提交(批量提交)
- Vue 基本指令和html常用标签结合使用综合案例(含代码)
- ef和mysql使用(二)--让mysql支持EntityFramework.Extended实现批量更新和删除
- EF 多种查询方式
- (mysql)找不到请求的 .Net Framework Data Provider。可能没有安装
- Vue 中的 v-cloak 解读
- ef和mysql使用(一)
- 浏览器工作原理
- ef oracle参数化问题
- 动态We API(ABP官方文档翻译)
- 彻底禁用Chrome的“请停用以开发者模式运行的扩展程序”提示
- wcf远程服务器返回错误404
- EF 相见恨晚的Attach方法