Pandas的数据清洗-删除NaN
数据清洗(Tidy Data),是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。 Pandas提供了很多的工具和函数可以对缺失、重复的数据进行相应的数据的处理。
20.1 构造缺失数据
在Pandas的各类数据Series和DataFrame里字段值为NaN的为缺失数据,不代表0而是说没有赋值数据。数据的缺失有很多原因,缺失不是错误、无效,需要对缺失的数据进行必要的技术处理,以便后续的计算、统计。
- 构造缺失数据的DataFrame
import pandas as pd
import numpy as np
val = np.arange(10, 38).reshape(7, 4)
col = list("abcd")
idx = "cake make fake sake wake lake take".split()
df = pd.DataFrame(val, columns = col, index = idx)
print df
df["e"] = np.nan
df.at["make", "e"] = 100
df.at["wake", "e"] = 300
df.loc["jake"] = np.nan
df.at["jake", "c"] = 200
df["f"] = np.nan
print df
执行结果:
a b c d
cake 10 11 12 13
make 14 15 16 17
fake 18 19 20 21
sake 22 23 24 25
wake 26 27 28 29
lake 30 31 32 33
take 34 35 36 37
a b c d e f
cake 10 11 12 13 NaN NaN
make 14 15 16 17 100 NaN
fake 18 19 20 21 NaN NaN
sake 22 23 24 25 NaN NaN
wake 26 27 28 29 300 NaN
lake 30 31 32 33 NaN NaN
take 34 35 36 37 NaN NaN
jake NaN NaN 200 NaN NaN NaN
20.2 查看缺失数据
查看缺失数据的情况可以用pandas的isnull函数看看有那些字段上的数据缺失,可以用sum进行统计。也可使用notnull和count函数统计非NaN数据量。
import pandas as pd
import numpy as np
val = np.arange(10, 38).reshape(7, 4)
col = list("abcd")
idx = "cake make fake sake wake lake take".split()
df = pd.DataFrame(val, columns = col, index = idx)
print df
df["e"] = np.nan
df.at["make", "e"] = 100
df.at["wake", "e"] = 300
df.loc["jake"] = np.nan
df.at["jake", "c"] = 200
df["f"] = np.nan
print df
print "whi