下面是详细讲解 “pandas缺失值与空值处理的实现方法”的完整攻略:
前言
当我们处理数据时,经常会遇到一些数据缺失或为空的情况。这样的数据会影响我们之后的处理和分析,因此需要对其进行处理。pandas是Python中一个常用的数据处理库,提供了许多灵活的方式来处理缺失值和空值。
在pandas中缺失值和空值是一个概念(NaN或NA),代表着缺失或未知的数据。这些值在pandas中默认为浮点型,因为在整数型和布尔型中,缺失值和空值是不允许的。
pandas中的缺失值与空值
在pandas中,存在两种类型的缺失值:
- NaN:代表不是一个数字(not a number)在pandas中表示缺失数据的标准值。
- None:在Python中表示缺失值和空值,可以被转换成其他数据类型。
在数据分析中,NaN的频率远高于None。
检测缺失值
在pandas中,可以使用isnull()和notnull()函数来检测数据中的缺失值和空值,返回的是一个布尔型的DataFrame。
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':[1,2,np.nan],'B':[4,np.nan,np.nan],'C':[7,8,9]})
# 检测缺失值
print(data.isnull())
# 检测非空值
print(data.notnull())
输出结果如下:
A B C
0 False False False
1 False True False
2 True True False
A B C
0 True True True
1 True False True
2 False False True
删除缺失值
在pandas中,可以使用dropna()函数来删除缺失值所在的行或列。如果数据非常大,那么就可以通过删除缺失值来缩小数据规模。
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':[1,2,np.nan],'B':[4,np.nan,np.nan],'C':[7,8,9]})
# 删除缺失值所在的行
print(data.dropna())
# 删除缺失值所在的列
print(data.dropna(axis=1))
输出结果如下:
A B C
0 1.0 4.0 7
C
0 7
1 8
2 9
填充缺失值
在pandas中,可以使用fillna()函数来填充缺失值。可以通过这种方式来既不删除数据,又能够去除潜在的偏差。
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':[1,2,np.nan],'B':[4,np.nan,np.nan],'C':[7,8,9]})
# 用0填充缺失值
print(data.fillna(0))
# 用平均值填充缺失值
print(data.fillna(data.mean()))
输出结果如下:
A B C
0 1.0 4.0 7
1 2.0 0.0 8
2 0.0 0.0 9
A B C
0 1.0 4.0 7
1 2.0 4.0 8
2 1.5 4.0 9
示例1:统计每个列的缺失值数量
import pandas as pd
import numpy as np
data = pd.read_csv('data.csv')
# 统计每个列的缺失值数量
print(data.isnull().sum())
输出结果如下:
A 2
B 1
C 0
D 100
dtype: int64
示例2:用相邻的值填充缺失值
import pandas as pd
import numpy as np
data = pd.DataFrame({'A':[1,2,np.nan,np.nan,5],'B':[4,np.nan,np.nan,np.nan,10],'C':[7,8,9,10,11]})
# 用相邻的值填充缺失值
print(data.fillna(method='ffill'))
输出结果如下:
A B C
0 1.0 4.0 7
1 2.0 4.0 8
2 2.0 4.0 9
3 2.0 4.0 10
4 5.0 10.0 11
总结
pandas提供了许多处理缺失值和空值的方式,包括删除缺失值、填充缺失值等。根据不同的需求和数据情况,选择合适的方法可以帮助我们更好地处理数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas 缺失值与空值处理的实现方法 - Python技术站