在实际数据处理中,我们经常会遇到数据缺失的情况,这时候就需要对空数据进行处理。Pandas提供了一系列的空数据处理方法。
在Pandas中,缺失值和空值是不同的。缺失值指用NaN或其他占位符代替丢失的数据,而空值指没有数据。
例如,在一个有日期和价格的DataFrame中,日期列有全部的数据,价格列中有一些NaN值,这些NaN值是由于商品没有售出。因此,在价格NaN值的位置上,我们可以用0进行替换。
有时候,数据丢失预示着不完整的数据记录。另外,数据可能会因为许多原因出现问题,比如:格式不正确、数据输入错误、空值或其他原因。
我们需要先找到数据中具体位置。Pandas提供了isnull()和notnull()两个函数,可以用于检查我们处理的数据是否包含NaN值。
下面是一个DataFrame示例:
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'A': [1, 2, np.NaN],
'B': [np.NaN, 5, 6]})
df中有两个列,A和B。我们可以用isnull()函数找到数据中的NaN值:
df.isnull()
输出结果是:
A B
0 False True
1 False False
2 True False
这样我们就可以准确定位数据中的空值了。
Pandas提供了几种处理空值的方法,下面介绍一些常用的方法。
使用dropna()函数可以删除包含空值的行或列。默认情况下,该函数删除NaN值,但也可以删除包含None或其他值的行或列。
例如,我们有下面的DataFrame:
df = pd.DataFrame({'A': [1, np.NaN, 3, 4],
'B': [2, 5, np.NaN, 8]})
我们可以使用以下代码删除包含NaN值的行:
df.dropna()
此时,删除了第1行和第3行包含NaN值的行,输出结果如下:
A B
0 1.0 2.0
3 4.0 8.0
同样的,我们可以删除包含NaN值的列:
df.dropna(axis=1)
这里删除了包含NaN值的第2列B,输出结果如下:
A
0 1.0
1 NaN
2 3.0
3 4.0
在某些情况下,我们需要将空值替换为其他的数值。这时候可以使用fillna()函数。
例如,以下DataFrame有包含NaN值的列:
df = pd.DataFrame({'A': [1, 2, np.NaN, 4],
'B': [5, np.NaN, 7, np.NaN],
'C': [np.NaN, 10, 11, 12]})
我们可以将NaN值替换为0:
df.fillna(value=0)
输出结果为:
A B C
0 1.0 5.0 0.0
1 2.0 0.0 10.0
2 0.0 7.0 11.0
3 4.0 0.0 12.0
也可以将NaN值设置为前一行的值:
df.fillna(method='pad')
输出结果为:
A B C
0 1.0 5.0 NaN
1 2.0 5.0 10.0
2 2.0 7.0 11.0
3 4.0 7.0 12.0
假设我们有如下DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Name': ['Tom', 'Jack', 'Bill', 'Steve', 'Chris', 'Mark'],
'Age': [20, 21, np.NaN, 19, 20, np.NaN],
'Gender': ['M', 'M', 'F', 'M', 'M', 'M']})
我们可以使用dropna()函数删除包含NaN值的行:
df.dropna()
输出结果为:
Name Age Gender
0 Tom 20.0 M
1 Jack 21.0 M
3 Steve 19.0 M
4 Chris 20.0 M
假设我们有如下DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Name': ['Tom', 'Jack', 'Bill', 'Steve', 'Chris', 'Mark'],
'Age': [20, 21, np.NaN, 19, 20, np.NaN],
'Gender': ['M', 'M', 'F', 'M', 'M', 'M']})
我们可以使用fillna()函数将NaN值替换为0:
df.fillna(value=0)
输出结果为:
Name Age Gender
0 Tom 20.0 M
1 Jack 21.0 M
2 Bill 0.0 F
3 Steve 19.0 M
4 Chris 20.0 M
5 Mark 0.0 M
本文介绍了Pandas处理空数据的方法。具体来说,我们可以使用isnull()和notnull()函数查找空数据,使用dropna()函数删除包含空数据的行或列,使用fillna()函数替换空数据。
本文链接:http://task.lmcjl.com/news/17251.html