100天精通Python(数据分析篇)——第76天:Pandas数据类型转换函数pd.to_numeric(参数说明+实战案例)
文章目录
- 专栏导读
- 一、to_numeric参数说明
- 0. 介绍
- 1. arg
- 1)接收列表
- 2)接收一维数组
- 3)接收Series对象
- 2. errors
- 1)`errors='coerce'`
- 2)`errors = 'ignore'`
- 3. downcast
- 1)downcast='integer'
- 2)downcast='signed'
- 3)downcast='float'
- 4. 返回值
- 5. 注意事项
- 6. 相关方法
- 二、实战案例
- 0. 导入数据
- 1. 数据类型查看
- 1)各字段的数据类型
- 2)各类型有多少个字段
- 2. 错误操作
- 3. 正确操作
- 1)提取数字
- 2)再次查看类型
- 3)使用to_numeric转换类型
- 4)数值相加
专栏导读
🏆🏆作者介绍:Python领域优质创作者、CSDN/华为云/阿里云/掘金/知乎等平台专家博主
- 🔥🔥本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
- 📝📝此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
- 🎉🎉订阅专栏后续可以阅读Python从入门到就业100篇文章;还可私聊进千人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
- 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
一、to_numeric参数说明
数据处理、分析等操作的首要操作是我们正确地设置了数据类型,经常也会遇到事先没有处理好数据类型,而造成无法进行后续操作的困扰。而Pandas提供数据转换的函数如
to_numeric(),本文将介绍to_numeric()的参数说明和实战案例
0. 介绍
to_numeric()的作用:
-
将参数转换为数字类型。
-
默认返回dtype为float64或int64, 具体取决于提供的数据。使用downcast参数获取其他dtype。
语法格式:
pandas.to_numeric(arg, errors='raise', downcast=None)
1. arg
scalar(标量),list(列表),(tuple)元组,一维数组(1-d array)或Series
1)接收列表
import numpy as np
import pandas as pda = pd.to_numeric(['1.0', '2', -3])
print(a)
print(type(a))
运行结果:

2)接收一维数组
import numpy as np
import pandas as pdt1 = np.array(range(10))
print(t1)
print(type(t1))
print()
a = pd.to_numeric(t1)
print(a)
print(type(a))
运行结果:

3)接收Series对象
import numpy as np
import pandas as pds = pd.Series(['1.0', '2', -3])
a = pd.to_numeric(s)
print(a)
print(type(a))
运行结果:

2. errors
可传入 {‘ignore’, ‘raise’, ‘coerce’}, 默认 ‘raise’,如果无法解析数据的处理方案。
'raise':如果无法解析将引发异常,通常情况下很少使用'coerce':如果无法解析将设置为 NaN'ignore':如果无效解析将返回输入
1)errors='coerce'
import numpy as np
import pandas as pds = pd.Series(['abc', '1.0', '2', -3, None, np.NaN])
a = pd.to_numeric(s, errors = 'coerce')
print(a)
print(type(a))
运行结果:

2)errors = 'ignore'
import numpy as np
import pandas as pds = pd.Series(['abc', '1.0', '2', -3, None, np.NaN])
a = pd.to_numeric(s, errors = 'ignore')
print(a)
print(type(a))
运行结果:

3. downcast
降级处理、向下转换。可传入{‘integer’,‘signed’,‘unsigned’,‘float’},默认为None。如果不是None(无),并且数据已成功转换为数字dtype(或者数据是从数字开始的),则根据以下规则将结果数据转换为可能的最小数字dtype:
'integer'或'signed':最小的有符号int dtype(最小值:np.int8)'unsigned':最小的无符号int dtype(最小值:np.uint8)'float':最小的float dtype(最小值:np.float32)注意事项:
- 由于此行为与从核心转换为数值的行为是分开的,因此无论 ‘errors’ 输入的值如何,向下转换期间引发的任何错误都会浮出水面。
- 此外,仅当结果数据的dtype的大小,严格大于要强制转换为dtype的dtype时,才会发生向下转换,因此,如果检查的所有dtype都不满足该规范,则不会对该数据执行向下转换。
- 0.19.0版中才有的新功能。
1)downcast=‘integer’
import numpy as np
import pandas as pds = pd.Series([-1, 0, 1, 2, 3], dtype="Int64")
a = pd.to_numeric(s, downcast='integer')
print(a)
print(type(a))
运行结果:

2)downcast=‘signed’
import numpy as np
import pandas as pds = pd.Series([-1, 0, 1, 2, 3], dtype="Int64")
a = pd.to_numeric(s, downcast='signed')
print(a)
print(type(a))
运行结果:

3)downcast=‘float’
import numpy as np
import pandas as pds = pd.Series([-1.0, 0.0, 1.1, 2.2, 3.3], dtype="Float64")
a = pd.to_numeric(s, downcast='float')
print(a)
print(type(a))
运行结果:

4. 返回值
解析成功时为numeric(数字)。返回类型取决于输入:
- 输入Series:返回Series
- 否则都是返回ndarray。
5. 注意事项
请注意,如果传入非常大的数字,则可能会导致精度损失。由于ndarray的内部限制,如果数字小于-9223372036854775808(np.iinfo(np.int64).min)或大于18446744073709551615(np.iinfo(np.uint64).max)传入,很有可能会将它们转换为
float以便将其存储在ndarray中。这些警告类似地适用于 Series,因为它在内部利用ndarray。
6. 相关方法
DataFrame.astype:将参数转换为指定的 dtype。
to_datetime:将参数转换为日期时间。
to_timedelta : 将参数转换为 timedelta。
numpy.ndarray.astype :将 numpy 数组转换为指定类型。
DataFrame.convert_dtypes:转换 dtypes。
二、实战案例
0. 导入数据
这里我们模拟的一份总收入数据,包含三个字段名称:

import numpy as np
import pandas as pddf = pd.read_excel(r'E:\Python学习\收入表.xlsx')
df
运行结果:

1. 数据类型查看
1)各字段的数据类型
df.dtypes # 各字段的数据类型
运行结果:

2)各类型有多少个字段
df.dtypes.value_counts() # 各类型有多少个字段
运行结果:

2. 错误操作
比如我们想在数据上进行一些操作,比如将"2021年总收入"、和"2022年总收入"的数据相加:很明显数据不是我们想要的结果。

根本原因:这两个字段是字符类型,进行+操作,是直接将里面的内容拼接在一起,而不是里面数值的相加。
3. 正确操作
1)提取数字
先把这两个字段中的数字单独提取出来
# 分割之后取出第1个元素df["2021年_新"] = df["2021年总收入"].apply(lambda x:x.split("元")[0])
df["2022年_新"] = df["2022年总收入"].apply(lambda x:x.split("元")[0])
df
运行结果:

2)再次查看类型
生成的两个新字段仍然是object类型,不能直接相加
df.dtypes # 各字段的数据类型
运行结果:

3)使用to_numeric转换类型
将数字表现型的字符型数据转成数值型
df['2021年_新'] = pd.to_numeric(df['2021年_新'])
df['2022年_新'] = pd.to_numeric(df['2022年_新'])
df.dtypes # 各字段的数据类型
运行结果:

4)数值相加
df['两年总收入'] = df['2021年_新'] + df['2022年_新']
df
运行结果:

相关文章:
100天精通Python(数据分析篇)——第76天:Pandas数据类型转换函数pd.to_numeric(参数说明+实战案例)
文章目录专栏导读一、to_numeric参数说明0. 介绍1. arg1)接收列表2)接收一维数组3)接收Series对象2. errors1)errorscoerce2)errors ignore3. downcast1)downcastinteger2)downcastsigned3&…...
链表(超详细--包教包会)
目录 一、概述 二、对链表的基本操作 三、链表的分类 四、静态链表 五、动态链表 1、malloc函数 2、calloc函数 3、free函数 六、动态链表的建立 七、输出链表中的数据 八、查找节点 九、删除节点 十、插入节点 十一、整体代码 一、概述 链表存储结构是一种动态数据…...
爬虫基本知识的认知(爬虫流程 HTTP构建)| 爬虫理论课,附赠三体案例
爬虫是指通过程序自动化地从互联网上获取数据的过程。 基本的爬虫流程可以概括为以下几个步骤: 发送 HTTP 请求:通过 HTTP 协议向指定的 URL 发送请求,获取对应的 HTML 页面。解析 HTML 页面:使用 HTML 解析器对获取的 HTML 页面…...
Ubuntu20.04如何安装虚拟机(并安装Android)
安装虚拟机(KVM)这种KVM只能安装windows无法安装安卓(From https://phoenixnap.com/kb/ubuntu-install-kvm)A type 2 hypervisor enables users to run isolated instances of other operating systems inside a host system. As a Linux based OS, Ubun…...
【腾讯一面】我对我的Java基础不自信了
我对我的Java基础不自信了1、List和set的区别?2、HashSet 是如何保证不重复的3、HashMap是线程安全的吗,为什么不是线程安全的?4、HashMap的扩容过程5、Java获取反射的三种方法6、Redis持久化机制原理7、redis持久化的方式各有哪些优缺点1、L…...
前端都在聊什么 - 第 2 期
Hello 小伙伴们早上、中午、下午、晚上、深夜好,我是爱折腾的 jsliang~「前端都在聊什么」是 jsliang 日常写文章/做视频/玩直播过程中,小伙伴们的提问以及我的解疑整理。本期对应 2023 年的 01.16-01.31 这个时间段。本期针对「规划」「工作」「学习」「…...
每天一道大厂SQL题【Day11】微众银行真题实战(一)
每天一道大厂SQL题【Day11】微众银行真题实战(一) 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…...
Cosmos 基础教程(一) -- 不可不知的开发术语
CometBFT DOC 您可以在本节中找到几个技术术语的概述,包括每个术语的解释和进一步资源的链接——在使用Cosmos SDK进行开发时,所有这些都是必不可少的。 在本节中,您将了解以下术语: Cosmos and Interchain LCD RPC Protobuf -协议缓冲…...
JAVA JDK 常用工具类和工具方法
目录 Pair与Triple Lists.partition-将一个大集合分成若干 List集合操作的轮子 对象工具Objects 与ObjectUtils 字符串工具 MapUtils Assert断言 switch语句 三目表达式 IOUtils MultiValueMap MultiMap JAVA各个时间类型的转换(LocalDate与Date类型&a…...
Spring Bean循环依赖
解决SpringBean循环依赖为什么需要3级缓存?回答:1级Map保存单例bean。2级Map 为了保证产生循环引用问题时,每次查询早期引用对象,都拿到同一个对象。3级Map保存ObjectFactory对象。数据结构1级Map singletonObjects2级Map earlySi…...
Hive 2.3.0 安装部署(mysql 8.0)
Hive安装部署 一.Hive的安装 1、下载apache-hive-2.3.0-bin.tar.gz 可以自行下载其他版本:http://mirror.bit.edu.cn/apache/hive/ 2.3.0版本链接:https://pan.baidu.com/s/18NNVdfOeuQzhnOHVcFpnSw 提取码:xc2u 2、用mobaxterm或者其他连接…...
IPD术语表
简称英文全称中文ABPannual business plan年度商业计划ABCactivity -based costing基于活动的成本估算ABMactivity -based management基于活动的管理ADCPavailability decision check point可获得性决策评审点AFDanticipatory failure determination预防错误决定AMEadvanced ma…...
目标检测损失函数 yolos、DETR为例
yolos和DETR,除了yolos没有卷积层以外,几乎所有操作都一样。 HF官方文档 因为目标检测模型,实际会输出几百几千个“框”,所以损失函数计算比较复杂。损失函数为偶匹配损失 bipartite matching loss,参考此blog targe…...
linux系统编程2--网络编程socket
在linux系统编程中网络编程是使用socket(套接字),socket这个词可以表示很多概念:在TCP/IP协议中,“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址端口号”就称为socket。在TCP协议中&#…...
FPGA纯Verilog实现任意尺寸图像缩放,串口指令控制切换,贴近真实项目,提供工程源码和技术支持
目录1、前言2、目前主流的FPGA图像缩放方案3、本方案的优越性4、详细设计方案5、vivado工程详解6、上板调试验证并演示7、福利:工程源码获取1、前言 代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植; 图…...
华为OD机试题 - 最长合法表达式(JavaScript)| 代码+思路+重要知识点
最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - 整数分解(JavaScript) 华为OD机试题 - 单词反转(JavaScript) 使用说明 参加华为od机试,一定要注意不要完全背…...
L1-005 考试座位号
L1-005 考试座位号 每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试…...
Obsidian + remotely save + 坚果云:实现电脑端和手机端的同步
写在前面:近年来某象笔记广告有增无减,不堪其扰,便转投其它笔记,Obsidian、OneNote、Notion、flomo都略有使用,本人更偏好obsidian操作简单,然其官方同步资费甚高,囊中羞涩,所幸可通…...
对比学习MoCo损失函数infoNCE理解(附代码)
MoCo loss计算采用的损失函数是InfoNCE: 下面是MoCo的伪代码,MoCo这个loss的实现就是基于cross entropy loss。 将k作为q的正样本,因为k与q是来自同一张图像的不同视图;将queue作为q的负样本,因为queue中含有大量…...
logd守护进程
logd守护进程1、adb logcat命令2、logd守护进程启动2.1 logd文件目录2.2 main方法启动3、LogBuffer缓存大小3.1 缓存大小优先级设置3.2 缓存大小相关代码位置android12-release1、adb logcat命令 命令功能adb bugreport > bugreport.txtbugreport 日志adb shell dmesg >…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
Pandas 可视化集成:数据科学家的高效绘图指南
为什么选择 Pandas 进行数据可视化? 在数据科学和分析领域,可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具,如 Matplotlib、Seaborn、Plotly 等,但 Pandas 内置的可视化功能因其与数据结…...
java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...
AI书签管理工具开发全记录(十八):书签导入导出
文章目录 AI书签管理工具开发全记录(十八):书签导入导出1.前言 📝2.书签结构分析 📖3.书签示例 📑4.书签文件结构定义描述 🔣4.1. 整体文档结构4.2. 核心元素类型4.3. 层级关系4.…...


