当前位置: 首页 > news >正文

【Pandas驯化-10】一文搞懂Pandas中一列混合多种数据类型to_numeric、select_dtypes处理

【Pandas驯化-10】一文搞懂Pandas中一列混合多种数据类型to_numeric、select_dtypes处理
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

  • 🎯 1. 基本介绍
  • 💡 2. 使用方法
    • 2.1 pd.to_numeric函数使用
    • 2.2 pd.isnull函数过滤
    • 2.3 提取非数值型数据
  • 🚀 3. 高阶用法
  • 🔍 4. 注意事项
  • 🔧 5. 总结

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  在实际工作中,由于数据采集的失误或者人工处理的时候不当,会造成原始数据类型经常会遇到一列数值型数据中,混杂一些字符串类型的数据,当我们要对这列数据进行统计运算时,就会报相应的错误,当遇到这样问题的时候,如果我们是在进行数据分析,需要找出具体是哪些行存在这样的问题,从而去修改原始数据的采集,而在进行数据建模或者特征提取时,需要对其进行删除或者采用均值数据进行修改,具体的骚操作方法如下:
  pd.to_numeric 函数尝试将输入的数据转换为数值类型。当 errors='coerce' 参数被设置时,任何不能被转换为数值的数据将被赋值为 NaN(Not a Number),这是一种特殊的浮点数值,用于表示数据缺失。
  pd.isnull 函数用于识别数据中的缺失值,并返回一个布尔类型的 Series 或 DataFrame,其中的 True 表示对应的数据是 NaN。

💡 2. 使用方法

2.1 pd.to_numeric函数使用

  使用pd.to_numeric函数将 clos1 列中的数据尝试转换为数值型,非数值型数据将被转换为 NaN。具体的代码如下所示:

import pandas as pddf = pd.DataFrame({'clos1': [1, 2, '3', 'four', 5, None, '7.5', 'eight']
})clos1
0      1
1      2
2      3
3   four
4      5
5    None
6    7.5
7   eightdf['clos1'] = pd.to_numeric(df['clos1'], errors='coerce')clos1
0    1.0
1    2.0
2    3.0
3    NaN
4    5.0
5    NaN
6    7.5
7    NaN

2.2 pd.isnull函数过滤

  通过上述的函数可以将不同类型的数据赋值为空,接着我们可以使用isnull函数对其进行过滤,具体为:

nan_mask = pd.isnull(df['clos1'])print(nan_mask)0    False
1    False
2    False
3     True
4    False
5     True
6    False
7     True
Name: clos1, dtype: bool

2.3 提取非数值型数据

  通过布尔索引,我们可以提取出原始数据中那些被转换为 NaN 的非数值型数据。具体的用法如下所示:

non_numeric_data = df[nan_mask]['clos1'].unique()
print(non_numeric_data)array(['four', None, 'eight'], dtype=object)

  

🚀 3. 高阶用法

  征工程中经常需要对数据类型进行转换pandas中astype可以为你解忧,在nlp比赛中各列的数据差异比较大时,需要选择所需的数据类型则可以使用select_dtypes,具体用法为:

# 如果col1列为数值的字符串类型,可以用astype(float32)转为浮点型 
df["col1"] = df["col1"].astype(float32) 
# 如果col不是字符串类型,但是想使用字符串的运算,可以用astype(str)转为字符串类型 df["col1"] = df["col1"].astype(str) 
# 选择各列数据类型为数值型的数据,以及删除某个类型的数据 
need_type = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'] df = df.select_dtypes(indclude=need_type) 
delete_type = ['int'] 
df= df.select_dtype(exclude=delete_type) 

🔍 4. 注意事项

  对上述的各个函数在使用的过程中需要注意的一些事项,不然可能会出现error,具体主要为:

  • 使用 pd.to_numeric 转换时,如果数据中包含 NaN 或 None,根据 errors 参数的设置,它们可以被保留或转换为 NaN。
  • errors=‘coerce’ 强制所有无法转换的值变为 NaN,这有助于数据清洗和后续处理。
  • pd.isnull 仅能用于识别 NaN,如果需要识别其他类型的缺失值(如 None),需要先进行适当的转换。

🔧 5. 总结

  本文介绍了如何使用 Pandas 的select_dtype、 pd.to_numeric 与 errors=‘coerce’ 参数,以及 pd.isnull 来找出数值型数据中混杂的非数值型数据。通过这种方法,我们可以快速识别并处理数据集中的非数值型数据,为进一步的数据分析和处理打下坚实的基础。

相关文章:

  • 百度网盘 url 正则表达式
  • QT与VS的区别?使用QT的好处?
  • NPDP产品经理认证全方位解读!值得收藏!
  • 函数指针的使用是否必须需要加符号?
  • SpringBoot 大文件基于md5实现分片上传、断点续传、秒传
  • shell:远程机器执行当前机器的脚本
  • 2024年华为最新笔试预约流程,超详细!内附操作流程!
  • echarts自定义legend方法
  • oracle清理归档日志
  • python5 正则表达式
  • 【学习笔记】Elastic-Job和Quartz 实现企业级定时任务
  • 【Ruby基础01】windows和termux中搭建Ruby开发环境
  • 薅羊毛app小游戏对接广告联盟开发
  • 汽车信息安全硬件讨论:SE vs HSM
  • 猫头虎分享已解决Bug || **Mismatched Types**: `mismatched types`
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【Linux系统编程】快速查找errno错误码信息
  • 0x05 Python数据分析,Anaconda八斩刀
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Spark RDD学习: aggregate函数
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue2.0 实现互斥
  • vue-loader 源码解析系列之 selector
  • 经典排序算法及其 Java 实现
  • 力扣(LeetCode)21
  • 盘点那些不知名却常用的 Git 操作
  • 学习使用ExpressJS 4.0中的新Router
  • 一个JAVA程序员成长之路分享
  • 一个SAP顾问在美国的这些年
  • ​520就是要宠粉,你的心头书我买单
  • #pragma once
  • (1)SpringCloud 整合Python
  • (剑指Offer)面试题34:丑数
  • (十)T检验-第一部分
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .equals()到底是什么意思?
  • .net core + vue 搭建前后端分离的框架
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net FrameWork简介,数组,枚举
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .Net 应用中使用dot trace进行性能诊断
  • .net下的富文本编辑器FCKeditor的配置方法
  • :中兴通讯为何成功
  • @EnableAsync和@Async开始异步任务支持
  • @EnableWebSecurity 注解的用途及适用场景
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [100天算法】-目标和(day 79)
  • [AHK V2]鼠标悬停展开窗口,鼠标离开折叠窗口
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [Algorithm][综合训练][kotori和n皇后][取金币][矩阵转置]详细讲解
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败