这章重点了
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。这些⼯作会占到分析师时间的80%或更多。
本章讨论处理缺失数据、重复数据、字符串操作和其它分析数据转换的工具。
7.1 处理缺失数据
在许多数据分析工作中,缺失数据是经常发生的。pandas的目标之一就是尽量轻松地处理缺失数据。
下表列出了⼀些关于缺失数据处理的函数。
1.滤除缺失数据
过滤掉缺失数据的办法有很多种。你可以通过pandas.isnull或布尔索引的手工⽅法,但dropna可能会更实用⼀些。对于⼀个Series,dropna返回⼀个仅含非空数据和索引值的Series
from numpy import nan as NA
data=pd.Series([1,NA,3.5,NA,7])
data.dropna()
#等价data[data.notnull()]
#输出
"""
0 1.0
2 3.5
4 7.0
dtype: float64
"""
对于DataFrame对象,事情就有点复杂了。你可能希望丢弃全NA或含有NA的行或列。dropna默认丢弃任何含有缺失值的行
data=pd.DataFrame([[1.,6.5,3.],[1.,NA,NA],
[NA,NA,NA],[NA,6.5,3.]])
cleaned=data.dropna()
cleaned
#输出
0 1 2
0 1.0 6.5 3.0
2.填充缺失数据
你可能不想滤除缺失数据(有可能会丢弃跟它有关的其他数据),而是希望通过其他方式填补那些“空洞”。对于大多数情况而言,fillna方法是最主要的函数。
data=pd.DataFrame([[1.,6.5,3.],[1.,NA,NA],
[NA,NA,NA]