pandas-17 关于nan的处理

在pandas中有个另类的存在就是nan,解释是:not a number,不是一个数字,但是它的类型确是一个float类型。numpy中也存在关于nan的方法,如:np.nan

对于pandas中nan的处理,简单的说有以下几个方法。

查看是否是nan, s1.isnull() 和 s1.notnull()

丢弃有nan的索引项,s1.dropna()

将nan填充为其他值,df2.fillna()

import numpy as np
import pandas as pd
from pandas import Series, DataFrame n = np.nan
print(type(n)) # <class 'float'> m = 1
print(n+m) # nan 任何数字和nan进行计算,都是nan # nan in series
s1 = Series([1, 2, np.nan, 3, 4], index=['A', 'B', 'C', 'D', 'E'])
print(s1)
'''
A 1.0
B 2.0
C NaN
D 3.0
E 4.0
dtype: float64
''' print(s1.isnull()) # 返回 bool值,是 nan 的话,返回true
'''
A False
B False
C True
D False
E False
dtype: bool
''' print(s1.notnull()) # 非 nan , 返回true
'''
A True
B True
C False
D True
E True
dtype: bool
''' # 去掉 有 nan 的索引项
print(s1.dropna())
'''
A 1.0
B 2.0
D 3.0
E 4.0
dtype: float64
''' # nan in dataframe
df = DataFrame([[1, 2, 3], [np.nan, 5, 6], [7, np.nan, 9], [np.nan, np.nan, np.nan]])
print(df)
'''
0 1 2
0 1.0 2.0 3.0
1 NaN 5.0 6.0
2 7.0 NaN 9.0
3 NaN NaN NaN
''' print(df.isnull()) # df.notnull() 同理
'''
0 1 2
0 False False False
1 True False False
2 False True False
3 True True True
''' # 去掉 所有 有 nan 的 行, axis = 0 表示 行方向
df1 = df.dropna(axis=0)
print(df1)
'''
0 1 2
0 1.0 2.0 3.0
''' # 表示在 列 的方向上。
df1 = df.dropna(axis=1)
print(df1)
'''
mpty DataFrame
Columns: []
Index: [0, 1, 2, 3]
''' # any 只要有 nan 就会删掉。 all 是必须全是nan才删除
df1 = df.dropna(axis=0, how='any')
print(df1)
'''
0 1 2
0 1.0 2.0 3.0
''' # any 只要有 nan 就会删掉。 all 全部是nan,才会删除
df1 = df.dropna(axis=0, how='all')
print(df1)
'''
0 1 2
0 1.0 2.0 3.0
1 NaN 5.0 6.0
2 7.0 NaN 9.0
''' df2 = DataFrame([[1, 2, 3, np.nan], [2, np.nan, 5, 6], [np.nan, 7, np.nan, 9], [1, np.nan, np.nan, np.nan]])
print(df2)
'''
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0
2 NaN 7.0 NaN 9.0
3 1.0 NaN NaN NaN
''' print(df2.dropna(thresh=None))
'''
Empty DataFrame
Columns: [0, 1, 2, 3]
Index: []
''' print(df2.dropna(thresh=2)) # thresh 表示一个范围,如:每一行的nan > 2,就删除
'''
0 1 2 3
0 1.0 2.0 3.0 NaN
1 2.0 NaN 5.0 6.0
2 NaN 7.0 NaN 9.0
''' # 将nan进行填充
print(df2.fillna(value=1))
'''
0 1 2 3
0 1.0 2.0 3.0 1.0
1 2.0 1.0 5.0 6.0
2 1.0 7.0 1.0 9.0
3 1.0 1.0 1.0 1.0
''' # 可以 为指定列 填充不同的 数值
print(df2.fillna(value={0: 0, 1: 1, 2: 2, 3: 3})) # 指定每一列 填充的数值
'''
0 1 2 3
0 1.0 2.0 3.0 3.0
1 2.0 1.0 5.0 6.0
2 0.0 7.0 2.0 9.0
3 1.0 1.0 2.0 3.0
''' # 以下两个例子需要说明的是:对dataframe进行dropna,原来的dataframe不会改变
print(df1.dropna())
'''
0 1 2
0 1.0 2.0 3.0
'''
print(df1)
'''
0 1 2
0 1.0 2.0 3.0
1 NaN 5.0 6.0
2 7.0 NaN 9.0
'''

pandas-17 关于nan的处理的更多相关文章

  1. pandas数组(pandas Series)-(4)NaN的处理

    上一篇pandas数组(pandas Series)-(3)向量化运算里说到,将两个 pandas Series 进行向量化运算的时候,如果某个 key 索引只在其中一个 Series 里出现,计算的 ...

  2. Pandas | 17 缺失数据处理

    数据丢失(缺失)在现实生活中总是一个问题. 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题. 在这些领域,缺失值处理是使模型更加准确和有效的重点. 使用重构 ...

  3. pandas 里面对nan的判断

    不要用math.isnan() pandas里专门有一个函数: age_null = pd.isnull(titanic_survival[‘age’])

  4. Pandas简易入门(二)

    目录:     处理缺失数据     制作透视图     删除含空数据的行和列     多行索引     使用apply函数   本节主要介绍如何处理缺失的数据,可以参考原文:https://www. ...

  5. 02. Pandas 1|数据结构Series、Dataframe

    1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index  . s.values # Series 数据结构 # Series 是带有标签的一 ...

  6. Python pandas快速入门

    Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...

  7. Python笔记 #15# Pandas: Missing Data

    10 Minutes to pandas import pandas as pd import numpy as np import matplotlib.pyplot as plt dates = ...

  8. 十分钟掌握pandas(pandas官方文档翻译)

    十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: impo ...

  9. pandas强化练习

    这篇文章写得更好:http://wittyfans.com/coding/%E5%88%A9%E7%94%A8Pandas%E5%88%86%E6%9E%90%E7%BE%8E%E5%9B%BD%E4 ...

  10. 利用python进行数据分析之pandas入门

    转自https://zhuanlan.zhihu.com/p/26100976 目录: 5.1 pandas 的数据结构介绍5.1.1 Series5.1.2 DataFrame5.1.3索引对象5. ...

随机推荐

  1. 201671030129 周婷 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 团队项目评审&课程学习总结 课程学习目标 (1)完成项目验收(2)反思总结课程学习内容 1.对<实验一 软件工程准备&g ...

  2. Linux下使用cx_Oracle的一些配置

    在安装完成cx_Oracle后,import  cx_Oracle时报错,首先查看.bash_profile文件中环境变量配置 # .bash_profile # Get the aliases an ...

  3. jQuery对象和DOM对象转换,解决jQuery对象不能使用js方法的问题

    有时候想要jQuery对象使用js方法,但是jQuery对象是什么js方法都不能用,怎么办呢?方法其实很简单,只要转换jQuery和DOM对象就可以了. 方法一: var $cr = $(" ...

  4. c3p0参数

    <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> < ...

  5. DCI学习链接及文章

    https://www.jianshu.com/u/c1b1137d5886 李永顺 https://www.jianshu.com/users/7386692d5489/timeline 袁英杰 小 ...

  6. Selenium XPath

    目录 1.selenium是什么呢? 安装 设置浏览器引擎 2.基本使用 3.等待元素被加载 4.选择器 2. find_element_by_tag_name 3. find_element_by_ ...

  7. 洛谷 P5535 【XR-3】小道消息

    https://www.luogu.com.cn/problem/P5535 伯特兰-切比雪夫定理: 若整数n > 3,则至少存在一个质数p,符合n < p < 2n − 2. 另一 ...

  8. 数据结构与算法系列——排序(4)_Shell希尔排序

    1. 工作原理(定义) 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本.但希尔排序是非稳定排序算法. 希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入 ...

  9. [Gamma]Scrum Meeting#5

    github 本次会议项目由PM召开,时间为5月30日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译 ...

  10. 【操作系统之五】Linux常用命令之grep

    一.概念grep(Global search Regular Expression and Print out the line)强大的文本搜索工具,从文本文件或管道数据流中筛选匹配的行及数据,并把匹 ...