约定:
1
2
3
|
import pandas as pd import numpy as np from numpy import nan as NaN |
滤除缺失数据
pandas的设计目标之一就是使得处理缺失数据的任务更加轻松些。pandas使用NaN作为缺失数据的标记。
使用dropna使得滤除缺失数据更加得心应手。
一、处理Series对象
通过**dropna()**滤除缺失数据:
1
2
3
|
se1 = pd.Series([ 4 ,NaN, 8 ,NaN, 5 ]) print (se1) se1.dropna() |
代码结果:
0 4.0
1 NaN
2 8.0
3 NaN
4 5.0
dtype: float640 4.0
2 8.0
4 5.0
dtype: float64
通过布尔序列也能滤除:
1
|
se1[se1.notnull()] |
代码结果:
0 4.0
2 8.0
4 5.0
dtype: float64
二、处理DataFrame对象
处理DataFrame对象比较复杂,因为你可能需要丢弃所有的NaN或部分NaN。
1
2
|
df1 = pd.DataFrame([[ 1 , 2 , 3 ],[NaN,NaN, 2 ],[NaN,NaN,NaN],[ 8 , 8 ,NaN]]) df1 |
代码结果:
0 | 1 | 2 | |
---|---|---|---|
0 | 1.0 | 2.0 | 3.0 |
1 | NaN | NaN | 2.0 |
2 | NaN | NaN | NaN |
3 | 8.0 | 8.0 | NaN |
默认滤除所有包含NaN:
1
|
df1.dropna() |
代码结果:
0 | 1 | 2 | |
---|---|---|---|
0 | 1.0 | 2.0 | 3.0 |
传入**how=‘all'**滤除全为NaN的行:
1
|
df1.dropna(how = 'all' ) |
代码结果:
0 | 1 | 2 | |
---|---|---|---|
0 | 1.0 | 2.0 | 3.0 |
1 | NaN | NaN | 2.0 |
3 | 8.0 | 8.0 | NaN |
传入axis=1滤除列:
1
2
|
df1[ 3 ] = NaN df1 |
代码结果:
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 1.0 | 2.0 | 3.0 | NaN |
1 | NaN | NaN | 2.0 | NaN |
2 | NaN | NaN | NaN | NaN |
3 | 8.0 | 8.0 | NaN | NaN |
1
|
df1.dropna(axis = 1 ,how = "all" ) |
代码结果:
传入thresh=n保留至少有n个非NaN数据的行:
1
2
3
|
df1.dropna(thresh = 1 ) df1.dropna(thresh = 3 ) |
代码结果:
0 | 1 | 2 | |
---|---|---|---|
0 | 1.0 | 2.0 | 3.0 |
1 | NaN | NaN | 2.0 |
2 | NaN | NaN | NaN |
3 | 8.0 | 8.0 | NaN |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_38168620/article/details/79596798