对于空值的解决,最先要来了解一下空值的类型:

 (1) 、pandas中的None  和  NaN 有什么不同?

      type(None)     --类型是  NoneType 空的目标类型

      type(NaN)      --类型是  float 浮点型

      留意:Pandas中None 和 NaN 都看作np.nan 

 (2)、Pandas 的空值实际操作

isnull()   分辨null 	,返回True/False 的数组

notnull()    空值分辨

dropna()     过虑空值数据信息

fillna()    添充遗失数据信息
  • 应用pandas过虑空值:
 df.isnull().any(axis = 1)
# 分析: any后轴向:axis = 0  表明列   axis = 1  表明行
# 新涵数:  all(axis = 0)   全部数据信息
           any(axis = 0)   一切一个

# df.isnull()表明返回一组True/False 的数组,any(axis = 1)表明横着分辨行,一行中任意一个为true就这行就返回 True, 最终返回一维数组
#  最后返回結果以下:
1    False
2    True
3    False
4    False
5    True

#  拓展: df.isnull().all(axis = 1) 一行中任意一个为False就这行就返回 False, 最终返回一维数组

      notnull() 的操作方法和isnull()恰好反过来:

 df.notnull().all(axis = 1)

# 一行中任意一个为False就这行就返回 False, 最终返回一维数组
#  最后返回結果以下:
1    True
2    False
3    True
4    True
5    False

# 小结:  固定搭配以下:
          isnull()  --> any()
          notnull()  -->all()

      最终过虑掉有空值的行

df.iloc[df.notnull().all(axis = 1)]
  • df.dropna()  过虑空数据信息所属的行或列 (可立即过虑)

           df.dropna() 能够挑选过虑的是行還是列 ,默认设置是行,dropna中axis=0 表明行; axis=1 表明列

df.dropna(axis=0)  #相当于上边过虑方法,封裝了上边实际操作
  • fillna()  添充遗失/空值数据信息

            fillna中 axis=0 表明列;axis=1 表明行           

           可挑选往前或向后添充:

  1.  method ='bfill'  向后遮盖(空值取前一个);
  2.  method ='ffill'  往前遮盖(空值取后一个);  
df.fillna(value =5555)   #添充df 中全部空值数据信息

df.fillna(method ='bfill',axis=0)   # 列里的空值取列里空值取前一个添充
  • drop 删掉数据信息  

         drop 中  axis=0 表明行 ,axis=1 表明列

         删掉没用的列 ,列数据库索引:'name','name1';inplace主要参数指是不是取代原先的df

                   data.drop(labels=['name','name1'],axis = 1,inplace=True)     

          删掉没用的行,行数据库索引:'跌涨'

                   df.drop(['跌涨'], axis=0, inplace=True)   

(3)Pandas 删掉空值行数据信息、更换空值实例编码: 

import pandas as pd
from pandas import Series,DataFram
import numpy as np

# 获取数据信息
data = pd.read_excel('./数据测试.excel')

# 删掉没用的列,列数据库索引:'name','name1'
data.drop(labels=['name','name1'],axis = 1,inplace=True)     

# 删掉空数据信息所属的行
data.dropna(axis=0)    

# 遮盖
v_1 = data.fillna(method='ffill',axis=0) .fillna(method='bfill',axis=0) 

# 检验v_1中是不是有空值
v_1.isnull().any(axis = 0)  #一般检验列里是不是有空值	,由于个数过多

 

文章来源于网络,如有侵权请联系站长QQ61910465删除
本文版权归qu快排seo www.sEoguRuBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ√61910465