在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, DataFramen = 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中关于nan的处理相关推荐

  1. python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)

    python - 用pandas中的NaN替换空白值(空格) 我想在Pandas数据帧中找到包含空格(任意数量)的所有值,并用NaN替换这些值. 有什么想法可以改进吗? 基本上我想转此: A B C ...

  2. python 空值_数据库中的空值与NULL的区别以及python中的NaN和None

    展开全部 数据库里面的"32313133353236313431303231363533e59b9ee7ad9431333363393632空值"有两种:空字符("&qu ...

  3. pandas生成新的累积连乘数据列(cumprod)、pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累积连乘

    pandas生成新的累积连乘数据列(cumprod).pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累积连乘cump ...

  4. pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加

    pandas生成新的累加数据列.pandas生成新的累加数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累加 目录

  5. pandas 空字符串与na区别_pandas中对nan空值的判断

    pandas基于numpy,所以其中的空值nan和numpy.nan是等价的.numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool( ...

  6. pandas中series一维数组的创建、索引的更改+索引切片和布尔索引+dataframe二维数组的创建、基本属性、索引方法(传统方法和lociloc)、nan操作、排序+案例

    目录 一.为什么要学习pandas? 二.pandas的常用数据类型 1.series--一维的且带标签的数组 (1)创建一维数组 (2)通过列表形式创建的series带标签数组可以改变索引,传入索引 ...

  7. 20个经典函数细说 Pandas 中的数据读取与存储,强烈建议收藏

    作者 | 俊欣 来源 | 关于数据分析与可视化 大家好,今天小编来为大家介绍几个Pandas读取数据以及保存数据的方法,毕竟我们很多时候需要读取各种形式的数据,以及将我们需要将所做的统计分析保存成特定 ...

  8. Python—pandas中DataFrame类型数据操作函数

    python数据分析工具pandas中DataFrame和Series作为主要的数据结构.  本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数.  1)查看DataFram ...

  9. Pandas中map,applymap和apply方法之间的区别

    本文翻译自:Difference between map, applymap and apply methods in Pandas Can you tell me when to use these ...

  10. pandas中的DataFrame数据结构

    pd.DataFrame() DataFrame 是一种二维的数据模型,相当于EXcel表格中的数据,有横竖两种坐标,横轴用columns,竖轴用index 来确定,在建立DataFrame 对象的时 ...

最新文章

  1. 11 mybatis-高级应用
  2. 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
  3. 解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘
  4. (字符串)字符串中首先出现两次的字符
  5. js小数运算出现多为小数问题_js小数计算小数点后显示多位小数的实现方法
  6. php_mongo模块,PHP安装mongo模块详细步骤
  7. Word VBA:批量更改图片的格式
  8. 服务器防御DDOS攻击的方法
  9. VR项目unity相关
  10. 嘉应大学黄林鑫计算机学院,林鑫-中国科学院大学-UCAS
  11. 基于多线程的随机数生成算法
  12. 成功蹭到iPhone 12热点,杜蕾斯再上热搜,关联公司却因小黄文广告被罚
  13. 实现人生梦想,共同创造人生辉煌!
  14. 笨蛋!连0.2这么简单的数字都搞不定!你被炒了!
  15. 点密度、线密度与核密度
  16. 百度云加速下载Proxyee-down的下载与安装教程3.x
  17. 设置 Application.Run(new Form1());其中form1为主窗口
  18. UI设计中的交互设计原则有哪些?
  19. (20190415)英文论文参考文献之外国作者(名+姓)
  20. 【调剂】江苏师范大学2022年硕士研究生调剂复试工作公告

热门文章

  1. 人家这才叫软件测试工程师,你那只是混口饭吃(附HR面试宝典)
  2. android 日历动态图标,android 日历图标显示星期
  3. 草根学Python(七) 迭代器和生成器
  4. 一次WTS-WAF绕过
  5. 5个步骤实现流程管理
  6. CodeForces128A - Statues 解题报告
  7. 条件欧几里得聚类实验数据集Statues_4.pcd下载
  8. 论文的研究背景如何着笔
  9. 【Python量化】蒙特卡洛模拟法进行期权定价
  10. JavaScript/js 转 Python 代码转换神器 jiphy