pandas中关于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, 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的处理相关推荐
- python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)
python - 用pandas中的NaN替换空白值(空格) 我想在Pandas数据帧中找到包含空格(任意数量)的所有值,并用NaN替换这些值. 有什么想法可以改进吗? 基本上我想转此: A B C ...
- python 空值_数据库中的空值与NULL的区别以及python中的NaN和None
展开全部 数据库里面的"32313133353236313431303231363533e59b9ee7ad9431333363393632空值"有两种:空字符("&qu ...
- pandas生成新的累积连乘数据列(cumprod)、pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累积连乘
pandas生成新的累积连乘数据列(cumprod).pandas生成新的累积连乘cumprod数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累积连乘cump ...
- pandas生成新的累加数据列、pandas生成新的累加数据列(数据列中包含NaN的情况)、pandas计算整个dataframe的所有数据列的累加
pandas生成新的累加数据列.pandas生成新的累加数据列(数据列中包含NaN的情况).pandas计算整个dataframe的所有数据列的累加 目录
- pandas 空字符串与na区别_pandas中对nan空值的判断
pandas基于numpy,所以其中的空值nan和numpy.nan是等价的.numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool( ...
- pandas中series一维数组的创建、索引的更改+索引切片和布尔索引+dataframe二维数组的创建、基本属性、索引方法(传统方法和lociloc)、nan操作、排序+案例
目录 一.为什么要学习pandas? 二.pandas的常用数据类型 1.series--一维的且带标签的数组 (1)创建一维数组 (2)通过列表形式创建的series带标签数组可以改变索引,传入索引 ...
- 20个经典函数细说 Pandas 中的数据读取与存储,强烈建议收藏
作者 | 俊欣 来源 | 关于数据分析与可视化 大家好,今天小编来为大家介绍几个Pandas读取数据以及保存数据的方法,毕竟我们很多时候需要读取各种形式的数据,以及将我们需要将所做的统计分析保存成特定 ...
- Python—pandas中DataFrame类型数据操作函数
python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFram ...
- Pandas中map,applymap和apply方法之间的区别
本文翻译自:Difference between map, applymap and apply methods in Pandas Can you tell me when to use these ...
- pandas中的DataFrame数据结构
pd.DataFrame() DataFrame 是一种二维的数据模型,相当于EXcel表格中的数据,有横竖两种坐标,横轴用columns,竖轴用index 来确定,在建立DataFrame 对象的时 ...
最新文章
- 11 mybatis-高级应用
- 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
- 解决报错:java.util.UnknownFormatConversionException: Conversion = ‘p‘
- (字符串)字符串中首先出现两次的字符
- js小数运算出现多为小数问题_js小数计算小数点后显示多位小数的实现方法
- php_mongo模块,PHP安装mongo模块详细步骤
- Word VBA:批量更改图片的格式
- 服务器防御DDOS攻击的方法
- VR项目unity相关
- 嘉应大学黄林鑫计算机学院,林鑫-中国科学院大学-UCAS
- 基于多线程的随机数生成算法
- 成功蹭到iPhone 12热点,杜蕾斯再上热搜,关联公司却因小黄文广告被罚
- 实现人生梦想,共同创造人生辉煌!
- 笨蛋!连0.2这么简单的数字都搞不定!你被炒了!
- 点密度、线密度与核密度
- 百度云加速下载Proxyee-down的下载与安装教程3.x
- 设置 Application.Run(new Form1());其中form1为主窗口
- UI设计中的交互设计原则有哪些?
- (20190415)英文论文参考文献之外国作者(名+姓)
- 【调剂】江苏师范大学2022年硕士研究生调剂复试工作公告