1.判断dataframe是否有空值

def t2():df = pd.DataFrame({'name': ['lili', 'lucy','pegga','alin',np.nan],'age': [18, 16, np.nan, 23, np.nan],'salary': [np.nan, 300, np.nan, 1000, 800]})df_contains_nan = df.isnull()print(df_contains_nan)df_contains_nan_2 = df.isna()print(df_contains_nan_2)

上面的代码将输出

    name    age  salary
0  False  False    True
1  False  False   False
2  False   True    True
3  False  False   False
4   True   True   Falsename    age  salary
0  False  False    True
1  False  False   False
2  False   True    True
3  False  False   False
4   True   True   False

isnull,isna方法都是判断df中的元素是否为空,然后输出True/False。
要判断df中是否有空元素,只需要稍加改变

def t3():df = pd.DataFrame({'name': ['lili', 'lucy','pegga','alin',np.nan],'age': [18, 16, np.nan, 23, np.nan],'salary': [np.nan, 300, np.nan, 1000, 800]})contains_nan = df.isnull().values.any()print(contains_nan)

any方法只要ndarray中有任意一个元素为True就返回True。

    def any(self, axis=None, out=None, keepdims=False): # real signature unknown; restored from __doc__"""a.any(axis=None, out=None, keepdims=False)Returns True if any of the elements of `a` evaluate to True.Refer to `numpy.any` for full documentation.See Also--------numpy.any : equivalent function"""pass

2.统计空值个数

def t4():df = pd.DataFrame({'name': ['lili', 'lucy','pegga','alin',np.nan],'age': [18, 16, np.nan, 23, np.nan],'salary': [np.nan, 300, np.nan, 1000, 800]})# 每一列有多少个nannan_column = df.isnull().values.astype(int).sum(axis=0)# 各列的nan个数nan_column_name = df.isnull().sum()print(nan_column)print('*'*10)print(nan_column_name)print('*'*10)# nan的总个数nan_all = df.isnull().sum().sum()print(nan_all)
[1 2 2]
**********
name      1
age       2
salary    2
dtype: int64
**********
5

上面的代码,展示了统计每行/列空值的个数,以及所有空值的个数。

3.按列填充空值

def t5():df = pd.DataFrame({'name': ['lili', 'lucy','pegga','alin',np.nan],'age': [18, 16, np.nan, 23, np.nan],'salary': [np.nan, 300, np.nan, 1000, 800]})print(df)df.name = df.name.fillna('unknown')df.age = df.age.fillna(df.age.mean())df.salary = df.salary.fillna(df.salary.max())print(df)
    name   age  salary
0   lili  18.0     NaN
1   lucy  16.0   300.0
2  pegga   NaN     NaN
3   alin  23.0  1000.0
4    NaN   NaN   800.0name   age  salary
0     lili  18.0  1000.0
1     lucy  16.0   300.0
2    pegga  19.0  1000.0
3     alin  23.0  1000.0
4  unknown  19.0   800.0

上面的代码,分别对name, age, salary列按固定值,当前列平均值,当前列最大值填充。

fillna函数有inplace参数,下面代码的效果与之前填充一致。

def t52():df = pd.DataFrame({'name': ['lili', 'lucy','pegga','alin',np.nan],'age': [18, 16, np.nan, 23, np.nan],'salary': [np.nan, 300, np.nan, 1000, 800]})print(df)df.name.fillna('unknown', inplace=True)df.age.fillna(df.age.mean(), inplace=True)df.salary.fillna(df.salary.max(), inplace=True)print(df)

4.按分组平均值填充

def t6():df = pd.DataFrame({'level': ['A','A','A','A','B','B','B','B','C','C','C'],'score': [2,1,3,np.nan,4,6,5,np.nan,7,9,np.nan],})fun = lambda x: x.fillna(df.groupby('level').score.mean()[x.level])df = df.apply(lambda x: fun(x), axis=1)# 以下一行代码也可以实现相同功能#df = df.apply(lambda x: x.fillna(df.groupby('level').score.mean()[x.level]), axis=1)print(df)

上面的代码,将score按level分组的平均值填充。
fun传入一行数据,然后通过分组值来获取当前分组的平均值,最后利用fillna来填充这个平均值即可。

代码输出如下

   level  score
0      A    2.0
1      A    1.0
2      A    3.0
3      A    2.0
4      B    4.0
5      B    6.0
6      B    5.0
7      B    5.0
8      C    7.0
9      C    9.0
10     C    8.0

pandas dataframe统计填充空值大全相关推荐

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

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

  2. pandas DataFrame.fillna()填充缺失函数的使用

    1. Pandas中将如下类型定义为缺失值: NaN: '', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan', '1 ...

  3. pandas Dataframe统计缺失值占比

    工具函数: def collect_na_value(dataframe):return dataframe.isna().sum() / dataframe.shape[0] * 100 案例 im ...

  4. 『Python核心技术与实战』pandas.DataFrame()函数介绍

    pandas.DataFrame()函数介绍! 文章目录 一. 创建DataFrame 1.1. numpy创建 1.2. 直接创建 1.3. 字典创建 1.4. Series和DataFrame 二 ...

  5. CSV文件处理——填充空值

    采用pandas中的fillna()方法 (pandas.DataFrame.fillna) 1.函数讲解: --------------------------------------------- ...

  6. pandas DataFrame 数据处理常用操作

    Xgboost调参: https://wuhuhu800.github.io/2018/02/28/XGboost_param_share/ https://blog.csdn.net/hx2017/ ...

  7. pandas | DataFrame基础运算以及空值填充

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...

  8. Pandas+Numpy 数据中空值的处理操作:判断、查找、填充及删除

    本文整理了数据中空值的处理操作,主要内容如下: 判断数据中是否有空值 统计空值/非空值数量 根据空值筛选数据 查找空值索引 删除空值 dropna()函数 填充空值fillna()函数 为了便于描述, ...

  9. Pandas数据处理1、DataFrame删除NaN空值(dropna各种属性值控制超全)

    Pandas数据处理--渐进式学习 目录 Pandas数据处理--渐进式学习 前言 环境 DataFrame删除NaN空值 dropna函数参数 测试数据 删除所有有空的行 axis属性值 how属性 ...

  10. pandas dataframe缺失值(np.nan)处理:识别缺失情况、删除、0值填补、均值填补、中位数填补、加缺失标签、插值填充详解及实例

    pandas dataframe缺失值(np.nan)处理:识别缺失情况.删除.0值填补.均值填补.中位数填补.加缺失标签.插值填充详解及实例 isnull().natna().isna().fill ...

最新文章

  1. Objective-c 网络编程1 Web请求和响应
  2. Msql的DML、DDL、DCL的区别
  3. ElasticSearch 2 (1) - Getting Start
  4. Codeforces 768E:Game of Stones
  5. 自学python需要买书吗-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...
  6. hdu 4496 并查集 逆向 并查集删边
  7. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg
  8. linux 模拟时序,stm32GPIO模拟时序读写nandflash(K9F1G08U0B)问题
  9. Qt奇淫技巧-使用QSharedMemory方式实现数据跨界面传输
  10. pg 事务 存储过程_PgpoolII实现数据分区存储及性能分析
  11. java xml接口实例_Java访问WebService接口方法 , 返回xml数据,能根据 下面的能给我写个实例吗?略急...
  12. ArcGIS API for Javascript之专题图的制作(四)热力图渲染(上)
  13. 删除oracle补丁包,最新Oracle关键补丁:更新包括248个修复
  14. BestMPRBaseVtk-003-修改工程,搬运官方代码并尝试理解-2
  15. dedecms友情链接plus/flink.php页面出错,DedeCMS友情链接flink_add Getshell漏洞管理员CSRF漏洞...
  16. 大数据NiFi(五):NiFi分布式安装
  17. mybatis的sql标签
  18. 软件测试工程师应该具备的素质---菜鸟的小想法
  19. 双十一好物怎么入手,五款双十一最值得入手的好物分享
  20. 2022年熔化焊接与热切割题库及模拟考试

热门文章

  1. Java并发容器,底层原理深入分析
  2. Kotlin 1.3带来稳定的协程、合约及其他
  3. HDU 6096 树套树
  4. 第五章:Redis pipeline流水线
  5. MAC 终端基本命令
  6. 学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
  7. 由浅入深探究mysql索引结构原理、性能分析与优化
  8. redis 介绍与安装
  9. 理想的工作永远不存在
  10. 为什么redis适合操作小数据,memcache适合操作大数据