替换Pandas DataFram中的 NaN 值

问题

NaN 代表 Not A Number,是表示数据中缺失值的常用方法之一。它是一个特殊的浮点值,不能转换为 float 以外的任何其他类型。NaN 值是数据分析中的主要问题之一。为了得到理想的结果,对 NaN 进行处理是非常必要的。

方法

用零替换Pandas DataFram中的 NaN 值的方法:

  • fillna(): 用于使用指定的方法填充 NA/NaN 值。
  • replace()dataframe.replace()函数用于替换字符串、正则表达式、列表、字典的简单方法。

下面以替换为0举例, 可以替换为任意值,依照个人情况考虑。关于上述两个函数的用法,可以参考官方链接,功能很强大。

替换 NaN 值的步骤

  • 对一列数据使用fillna()
df['DataFrame Column'] = df['DataFrame Column'].fillna(0)
  • 对一列数据使用replace
df['DataFrame Column'] = df['DataFrame Column'].replace(np.nan, 0)
  • 对整个数据使用fillna()
df.fillna(0)
  • 对整个数据使用replace
df.replace(np.nan, 0)

示例

  • 对一列数据使用fillna()
# importing libraries
import pandas as pd
import numpy as npnums = {'Set_of_Numbers': [2, 3, 5, 7, 11, 13, np.nan, 19, 23, np.nan]}# Create the dataframe
df = pd.DataFrame(nums, columns =['Set_of_Numbers'])# Apply the function
df['Set_of_Numbers'] = df['Set_of_Numbers'].fillna(0)# print the DataFrame
df

  • 对一列数据使用replace()
# importing libraries
import pandas as pd
import numpy as npnums = {'Car Model Number': [223, np.nan, 237, 195, np.nan,575, 110, 313, np.nan, 190, 143, np.nan],'Engine Number': [4511, np.nan, 7570, 1565, 1450, 3786, 2995, 5345, 7777, 2323, 2785, 1120]}# Create the dataframe
df = pd.DataFrame(nums, columns=['Car Model Number'])# Apply the function
df['Car Model Number'] = df['Car Model Number'].replace(np.nan, 0)# print the DataFrame
df

  • 对所有数据使用fillna()
# importing libraries
import pandas as pd
import numpy as npnums = {'Number_set_1': [0, 1, 1, 2, 3, 5, np.nan, 13, 21, np.nan],'Number_set_2': [3, 7, np.nan, 23, 31, 41, np.nan, 59, 67, np.nan],'Number_set_3': [2, 3, 5, np.nan, 11, 13, 17, 19, 23, np.nan]}# Create the dataframe
df = pd.DataFrame(nums)# Apply the function
df = df.fillna(0)# print the DataFrame
df

  • 对所有数据使用replace()
# importing libraries
import pandas as pd
import numpy as npnums = {'Student Name': [ 'Shrek', 'Shivansh', 'Ishdeep', 'Siddharth', 'Nakul', 'Prakhar', 'Yash', 'Srikar', 'Kaustubh', 'Aditya',  'Manav', 'Dubey'],'Roll No.': [ 18229, 18232, np.nan, 18247, 18136, np.nan, 18283, 18310, 18102, 18012, 18121, 18168],'Subject ID': [204, np.nan, 201, 105, np.nan, 204, 101, 101, np.nan, 165, 715, np.nan],'Grade Point': [9, np.nan, 7, np.nan, 8, 7, 9, 10, np.nan, 9, 6, 8]}# Create the dataframe
df = pd.DataFrame(nums)# Apply the function
df = df.replace(np.nan, 0)# print the DataFrame
df

参考

  • https://www.heywhale.com/mw/project/5d86eced8499bc002c108cc8
  • https://www.geeksforgeeks.org/replace-nan-values-with-zeros-in-pandas-dataframe/
  • https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.fillna.html
  • https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.replace.html

Pandas 替换 NaN 值相关推荐

  1. python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行。

    python pandas DataFrame 替换 NaN 值 和 删除 NaN 所在的行. import pandas as pd import numpy as np df1 = pd.Data ...

  2. pandas替换列值+1

    import pandas df = pd.DataFrame({'Age':[33,44,22,44,55,22],'Income':['Low','Low','High','Medium','Me ...

  3. pandas替换列值

    方法一 data[col] = np.where(data[col].isnull(),0,1) def dataprocess(data):for col in ('EMAILADD','QQNO' ...

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

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

  5. pandas 空字符串与na区别_关于python:Pandas用空白/空字符串替换NaN

    我有一个Pandas Dataframe,如下所示: 1    2       3 0  a  NaN    read 1  b    l  unread 2  c  NaN    read 我想用空 ...

  6. 如何在熊猫数据框的列中将所有NaN值替换为零

    本文翻译自:How can I replace all the NaN values with Zero's in a column of a pandas dataframe I have a da ...

  7. pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...

    在利用pandas处理表格时,往往有时我们用表格做的测试用例往往会设计考一些必填项*故意赋值为空(代表不输入)的测试用例, 比如说我们的手机号.身份证号码.社会统一信用代码等都是数字型字符串.如下所示 ...

  8. pandas水平concat后出现NaN值

    pandas水平拼接 result = pd.concat([df1, df2, df3,...], axis=1) 问题原因: 如果排除本身每个df自身有NaN值外,出现这种情况就是各df的索引顺序 ...

  9. Pandas-如何对指定某列的NaN值进行替换或填充

    前言 本文是该专栏的第31篇,后面会持续分享python数据分析的干货知识,记得关注. 笔者在本专栏之前有单独详细介绍过,使用Numpy对数组元素进行替换的方法,感兴趣的同学,可翻阅查看"N ...

最新文章

  1. 3、如何证明static静态变量和类无关?
  2. STM32中NVIC_SystemReset()函数的作用?什么时候用?
  3. quartz定时器依赖_Grails集成Quartz插件实现定时任务(Job)
  4. 【笔试题】简单的两道笔试题(1、打印杨辉三角;2、三个数排序)
  5. pom文件报错_maven-resources-plugin修改了我的文件
  6. ESP8266等模块
  7. 项目管理中风险评价的必要性
  8. C++(STL):19---deque之删除和emplace用法
  9. A1051. DNA序列
  10. 内向的人可以做产品经理吗?
  11. 并行 并发 多线程 区别
  12. java smtp.126.com_java开发_STMP邮箱客户端_发送邮件
  13. java选择,智力,数量,推理
  14. Android项目之利用手机传感器做惯性导航
  15. 开发”小米商城官网首页”(静态页面)
  16. Office365上启用Skype For Business并实现本地AD用户登录
  17. 求子集PHP,JavaScript求非空子集数目的实现方法
  18. c语言单片机自动浇花系统,Arduino零基础C语言编程ch5-5.13综合示例–自动浇花系统...
  19. 使用bat批处理脚本自动设置IP和IE代理
  20. WAF——web安全及web应用防火墙

热门文章

  1. Oracle-19-like运算符转义操作符
  2. 2023年深圳积分入户考这个软考高级证书错不了!加分真高!
  3. 【中秋系列征文】明月寄相思
  4. C++define用法
  5. java怎么录入4位会员号_java会员信息录入 需求说明: 录入会员信息 判断录入的会员号是否合法...
  6. 朋友圈小霸王游戏机,领取链接和源码找回青春记忆
  7. java override报错_java @override 报错处理
  8. 以下几种情况,建议你趁早辞职!
  9. 织梦dedecms首页调用企业名称、简介、公司logo等的方法
  10. 用户态与内核态的区别与理解