Pandas处理无效值和缺失值
数据集中的数据会经常遇见缺失值或者无效值,在Pandas中缺失值可能会被直接识别为NaN,而无效值则是由数据自带的,比如乱码、无意义的字符等。
处理缺失值的常见方式
如何处理缺失值和无效值就显得特别重要,一般可以采用如下的一些方式方法。
丢弃缺失值 Drop the missing values
- Drop the variable:如果存在变量(列)大量存在缺失值的问题,可以考虑删除整个变量
- Drop the data entry:如果变量没有存在大量缺失,只有少数几条数据,可以考虑删除当前样本(即行数据)。
替换缺失值 Replace the missing values
替换缺失值的好处在于不会浪费数据。
- Replace it with an average(of Similar datapoints):通过计算相似数据点的整个数据的平均值去填充,但该方法只能适用于连续数值类型的。
- Replace it by frequency:对于不是数值类型的缺失值,可以通过相似数据的最高的频率数据去填充。
- Replace it based on other functions:这个需要基于分析人员根据行的其它数据知道这些缺失值可能会是什么?这个通常需要分析人员对业务非常熟悉。
- Leave it as missing data:保留缺失观察数据,即使在统计的时候,缺失的观察数据可能会缺失某些功能。
Pandas去除无效数据
Pandas中去除无效数据的方式可以通过dropna方法,默认情况下是整行都是na值则会删除,但如果只想根据某一列或者多列来删除,比如根据price一列是否有数据来检查是否删除当前行。
df.dropna(subset=['price'], axis=0)
# 如果当前行price为NaN,则删除当前一行
# axis = 0 代表price为NaN,则删除当前一整行
Dropna中的inplace参数可以设定是否修改原数据帧(DataFrame),默认为False,即返回一个修改后的副本。
Pandas 填充无效值
Pandas中填充无效值可以使用DataFrame.replace方法,该方法接受两个值,一个为查找值,另一个为替换值。
比如下面可以将无效值”?”替换为np.nan:
df.replace("?", np.nan)