在现实中通过各种方式收集到的数据并不都是完整或者说干净的,如何处理缺失值或者多余的数据尤为重要。
1.处理缺失值(部分一:查找和删除缺失值)
有时由于设备原因或者认为原因(没有录入或者故意隐藏数据),我们获取的部分数据可能是缺失值。这些缺失值对于数据分析而言是没有任何意义的,需要通过程序处理掉这些缺失值,以便下一步分析。
1.1查找缺失值
人工查看缺失值是很低效的,通过isnull和notnull方法,可以返回布尔值得对象。
例:创建有缺失值的数据
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame([[1,2,np.nan],[20,21,np.nan],['李华','晓明','小刘']])
display(data)
使用isnull函数
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame([[1,2,np.nan],[20,21,np.nan],['李华','晓明','小刘']])
display(data)
display(data.isnull())#True为缺失值
display(data.notnull())#False为缺失值
通过求和确定每列缺失的个数
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame([[1,2,np.nan],[20,21,np.nan],['李华','晓明','小刘']])
display(data)
display(data.isnull().sum())
在通过求和确定可以获得整个数据中的缺失值数量。
通过info方法也可以看出数据中每列的缺失值。
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame([[1,2,np.nan],[20,21,np.nan],['李华','晓明','小刘']])
display(data)
display(data.info())
1.2删除缺失值
1.2.1通过dropna方法可以删除缺失值的行
例:
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame([[1,2,np.nan],[20,21,np.nan],['李华','晓明','小刘']])
display(data)
display(data.dropna())
例:
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame(np.arange(12).reshape(3,4))
display(data)
#对数据进行处理,即创建一些为缺失值的数据
data.loc[1,:]=np.nan
data[2]=np.nan
display(data)
传入how='all’删除权威NaN的那些行
1.2.2如果要删除列指定轴方向即可
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
from IPython.display import display
data=DataFrame(np.arange(12).reshape(3,4))
display(data)
#对数据进行处理,即创建一些为缺失值的数据
data.loc[1,:]=np.nan
data[2]=np.nan
display(data)
display(data.dropna(how='all'))
display(data.dropna(how='all',axis=1))#删除指定列