pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())

假设拿到一个10万行的数据后,通过isnull我们发现某列有几个空值,要把该列空值所在行删除怎么操作?用dropna()会删除所有有空值的行,请看下面实例。

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第1张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第2张图片
区分 None,null,NULL,nan, “null”, " “, “”, ‘’, , b’’, u”" 1.Python 中 None 是 NoneType, 没有长度, 表示空值, 布尔值为False, 即 None.bool() == False 2. null 和 NULL 表示数据库中的空值, python中不存在这两者。 3.在pandas 中 NaN 是缺失值的意思。 NaN 在python 中 导入用 from numpy import nan 或者 from numpy import NaN, 类型用 type() 判断为 float, 值可以用math.isnan(),numpy.isnan(),pandas.isna(), pandas.isnull()判断。在python3.7 中NaN和None都可以是float类型,都可以和数值做加法运算。 3. “null” 表示长度为4,由字母null组成的字符串 4. “” 和’’ 都表示空字符串,长度为0 5. " “表示长度为1的空格字符 6. 反引号在linux 命令中可以传递变量的值,`` 在linux中表示空变量
7. b’’ 表示 bytes 字节编码空字符串
8. u”" 表示unicode 类型空字符串

附图中代码在python3.7 中运行

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第3张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第4张图片

Python之pandas:pandas中缺失值与空值处理的简介及常用函数(dropna()、isna()、isnull()、fillna())

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第5张图片
pandas中缺失值与空值处理的简介

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第6张图片

data_df['col01'].isnull() 
data_df[data_df['col02'].notnull()] 
data_df['col01'].fillna(value=0) 
data_df['col01'].dropna() 
 
 
data_df.set_index(['time', 'user'], inplace=True) 
data_df.sort_index(inplace=True)

1、缺失值统计并缺失率可视化

#统计缺失字段的缺失率
from DataScience.DataVisualize_Functions import NullValueCountAndPlot,NullValueCountRatio_AndPlot
NullValueCountAndPlot('',data_X)
NullValueCountRatio_AndPlot('',data_X)

dropna()、isna()、isnull()、fillna()使用案例

import pandas as pd
import numpy as np
 
contents={"name": ['Bob',        'LiSa',                     'Mary',                       'Alan'],
          "ID":   [1,              2,                           3,                           None],   # 输出 NaN
          "age":  [np.nan,        28,                           38 ,                          '' ],   # 输出 
          "born": [pd.NaT,     pd.Timestamp("1990-01-01"),  pd.Timestamp("1980-01-01"),        ''],   # 输出 NaT
          "sex":  ['男',          '女',                        '女',                        None,],   # 输出 None
          "hobbey":['打篮球',     '打羽毛球',                   '打乒乓球',                    '',],   # 输出 
          }
data_frame = pd.DataFrame(contents)
data_frame.to_excel("data_Frame.xls")
print(data_frame)
 
 
#dropna 函数:自动删除空值(np.nan、pd.Na、'')所在行的数据
data_frame_temp=data_frame
res01= data_frame_temp.dropna()
print('dropna():','\n',res01)
 
#  去掉包含缺失值的任何一行
data_frame_temp.dropna(how='any')      #表示去掉所有包含缺失值的行
 
 
#isna 函数:
res01=data_frame.isna()
print('isna():','\n',res01)
 
 
#isnull 函数:
res01= data_frame.isnull()
print('isnull():','\n',res01)
 
 
#fillna 函数:用0填充
res01= data_frame.fillna(0)
print('fillna():','\n',res01)
 

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第7张图片
pandas中缺失值与空值处理的常用函数(dropna()、fillna()、isnull()、isna())
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第8张图片
1、dropna() 删除缺失值

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)[source]

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第9张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第10张图片

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第11张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第12张图片
2、isna()显示缺失值、notna() #isna的布尔逆

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第13张图片
3、isnull() 检测缺失值

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第14张图片
4、fillna() 填充缺失值

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第15张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第16张图片
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第17张图片
https://blog.csdn.net/qq_41185868/article/details/108504178

20201215
pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第18张图片
csv里面是空值 读出来就是这样
df.dropna() 可以删除带有nan值的任意行

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第19张图片
左边的空值对应 右边的表现形式
df.dropna() 不能删除上述形式的空值

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第20张图片
df!=’’ 可以直接找出所有的‘’的空值 或者 按列查找出对应的行索引

pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())_第21张图片
isnull() 只能找出对应 nan 的空值 ‘’ 这种不能找出

你可能感兴趣的:(pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna()))