Pandas缺失值处理

一、什么是稀疏数据?

       稀疏数据指的是在数据库或者数据集中存在大量缺失数据或者空值,我们把这样的数据集称为稀疏数据集。
大致原因

  • 由于调查不当产生的稀疏数据;
  • 由于天然限制产生的稀疏数据;
  • 文本挖掘中产生的稀疏数据。

      缺失值在统计分析中经常被用到,在R语言中,is.na()、is.nan()和is.infinite()可分别用来识别缺失值、不可能值和无穷值。在python中空值为None, 在java中空值为null,但是到pandas中空值被显示为NaN。pandas中我们经常处理是:判断是否是缺失值、直接删除缺失值、填充缺失值。

常用函数

  • df.isnull()、df.notnull():两个函数互为取反
  • df.isna():等同于df.isnull()
  • df.dropna():删除缺失值
  • df.fillna():填充缺失值

二、缺失值处理

1、检查缺失值

为了检测缺失值,Pandas 提供了 isnull() 和 notnull() 两个函数,适用于 Series 和 DataFrame 对象。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'])
df = df.reindex(['d', 'e', 'f')
print(df['noe'].isnull())

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'])
df = df.reindex(['d', 'e', 'f'])
print(df['one'].notnull())

 2、缺失数据计算

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],
            columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print (df['one'].sum())

 3、清理并填充缺失值

fillna() 函数可以实现用非空数据“填充”NaN 值。

1) 用标量值替换NaN值

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],
            columns=['one','two', 'three'])
df = df.reindex(['a', 'b', 'c'])
print(df)
#用 0 填充 NaN
print (df.fillna(0))

 2) 向前和向后填充NA

 ffill() 向前填充和 bfill() 向后填充,使用这两个函数也可以处理 NA 值

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],
        columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print df.fillna(method='ffill')

3) 使用replace替换通用值 

import pandas as pd
import numpy as np
df = pd.DataFrame({'one':[10,20,30,40,50,666], 'two':[99,0,30,40,50,60]})
#使用replace()方法
print (df.replace({99:10,666:60,0:20}))

 4) 删除缺失值

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f','h'],
                columns=['one', 'two', 'three'])
df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df)
#删除缺失值
print (df.dropna())

 三、参考

Pandas数据分析—对缺失值的处理_Wumbuk的博客-CSDN博客_pandas处理缺失值 

如何用pandas处理缺失值_zoujiahui_2018的博客-CSDN博客_pandas缺失值处理 

图解pandas的缺失值处理 - 知乎
 

你可能感兴趣的:(#,pandas系列,python,数据挖掘,python)