100天精通Python(数据分析篇)——第76天:Pandas数据类型转换函数pd.to_numeric(参数说明+实战案例)

news2024/9/21 0:40:59

文章目录

  • 专栏导读
  • 一、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 pd


a = pd.to_numeric(['1.0', '2', -3])
print(a)
print(type(a))

运行结果:
在这里插入图片描述

2)接收一维数组

import numpy as np
import pandas as pd


t1 = 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 pd

s = 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 pd

s = 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 pd

s = 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 pd

s = 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 pd

s = 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 pd

s = 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 pd


df = 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

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring中bean的生命周期(通俗易懂)

具体流程 bean的生命周期分4个阶段:   1.实例化   2.属性赋值   3.初始化   4.销毁 实例化就是在内存中new()出一个对象,属性赋值就是给那些被Autowired修饰的属性注入对象,销毁是在Spring容器关闭时触发,初始化的步骤比较…

隐私计算头条周刊(2.13-2.19)

开放隐私计算收录于合集#企业动态44个#周刊合辑44个#政策聚焦37个#隐私计算91个#行业研究36个开放隐私计算开放隐私计算OpenMPC是国内第一个且影响力最大的隐私计算开放社区。社区秉承开放共享的精神,专注于隐私计算行业的研究与布道。社区致力于隐私计算技术的传播…

【JavaEE】Servlet学后大汇总

JavaEE之Servlet一、WEB容器二、Servlet常用API和简单说明三、Servlet生命周期Servlet对象是什么时候被创建的?Servlet被称为假单例一个请求对应一个request和一个response四、Servlet属性设置——三个范围(请求、会话、应用)五、会话、过滤器…

每日学术速递2.20

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Boundary Guided Mixing Trajectory for Semantic Control with Diffusion Models 标题:用于扩散模型语义控制的边界引导混合轨迹 作者:Ye Zhu, Yu Wu, Zhi…

Android 开发布局笔记01 控件

Relative Layout 前端界面代码 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

数据结构与算法(Java版) | 线性结构和非线性结构

之前&#xff0c;我们说过&#xff0c;数据结构是算法的基础&#xff0c;因此接下来在这一讲我就要来给大家重点介绍一下数据结构了。 首先&#xff0c;大家需要知道的是&#xff0c;数据结构包括两部分&#xff0c;即线性结构和非线性结构。知道这点之后&#xff0c;接下来我…

flex一把梭

flex 使用display:flex&#xff0c;可以让一个元素变成弹性容器&#xff08;flex容器&#xff09;&#xff0c;该元素中的直接子元素成为弹性项&#xff08;flex项&#xff09; flex-direction 使用flex-direction可以控制flex容器的主轴的方向&#xff1a;垂直&#xff08;…

躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发

早春二月&#xff0c;研发倍忙&#xff0c;杂花生树&#xff0c;群鸥竟飞。为什么&#xff1f;因为春季招聘&#xff0c;无论是应届生&#xff0c;还是职场老鸟&#xff0c;都在摩拳擦掌&#xff0c;秣马厉兵&#xff0c;准备在面试场上一较身手&#xff0c;既分高下&#xff0…

Allegro如何让测量时显示双单位操作指导

Allegro如何让测量时显示双单位操作指导 在用Allegro做PCB设计的时候,时常会需要使用到测量命令,通常显示的一个单位,比如mil,如下图 当希望除了看到mil单位的值,又同时能够看到mm单位的值,省去换算的时间 具体设置如下 点击Setup点击User Preference

Linux服务:Nginx服务部署及基础配置

目录 一、Nginx介绍 1、Nginx简介 2、I/O模型相关概念 3、Nginx事件驱动模型 二、部署Nginx 1、yum部署Nginx 2、编译安装Nginx 三、Nginx使用 1、基础使用 2、nginx信号 四、web服务选择及优化 1、Nginx与Apache对比 2、Nginx服务调优 一、Nginx介绍 1、Nginx简…

SAP ABAP

方法一&#xff1a; REPORT ZDCH_09_TEST2. ************************************************************************ * DATEN DEFINITION * *********************************************************************…

【数据结构】二叉树-堆实现及其堆的应用(堆排序topK问题)

文章目录一、堆的概念及结构二、堆的实现1.结构的定义2.堆的初始化3.堆的插入4.堆的向上调整5.堆的删除6.堆的向下调整7.取出堆顶元素8.返回堆的元素个数9.判断堆是否为空10.打印堆中的数据11.堆的销毁三、完整代码1.Heap.h2.Heap.c3.test.c四、堆排序1.堆排序2.建堆3.选数4.完…

Shopee、ebay、亚马逊等跨境卖家了解测评的一篇干货

随着时代的发展&#xff0c;大家越来越喜欢网购&#xff0c;国外也有亚马逊、沃尔码、阿里国际、速卖通、ebay、shopee、Lazada、ozon、temu等等&#xff0c;而国外这些平台也有很大的市场&#xff0c;跨境电商也随时诞生&#xff0c;而当今社会环境实体生意越来越难做&#xf…

DAMA认证|数据治理产业上规模需要做到“三化”

数据治理是开启数据安全体系化建设的第一步&#xff0c;需要从产业层面做大做强&#xff0c;支撑数据安全整体框架&#xff0c;为数据流通提供安全保障&#xff0c;推动促进数字化产业进一步发展。 规模化发展是数据治理产业的瓶颈&#xff0c;行业数字化业务的复杂性和过多的定…

k8s安装tekton,编写task

文章目录一、官方安装二、国内资源安装安装tekton安装dashboard安装CLI三、demo编写task.yaml编写taskRun.yaml使用tkn命令查看参考文章一、官方安装 地址&#xff1a;https://tekton.dev/docs/installation/pipelines/#installing-tekton-pipelines-on-kubernetes 注意&#…

Spring MVC 源码之MultipartResolver 组件

MultipartResolver 组件&#xff0c;内容类型( Content-Type )为 multipart/* 的请求的解析器&#xff0c;主要解析文件上传的请求。例如&#xff0c;MultipartResolver 会将 HttpServletRequest 封装成 MultipartHttpServletRequest 对象&#xff0c;便于获取参数信息以及上传…

【NVMEM子系统】二、NVMEM驱动框架

个人主页&#xff1a;董哥聊技术我是董哥&#xff0c;嵌入式领域新星创作者创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01;文章目录1、前言2、驱动框架3、源码目录结构4、用户空间下的目录结构1、前言 NVMEM SUBSYSTEM&#xff0c;该子系…

视频片段怎么做成gif图?快试试这2种方法

动态gif图片作为当下非常常用的表情包&#xff0c;其丰富的内容生动的画面深受大众喜爱。那么&#xff0c;当我们想要将电影或是电视剧中的某一片段做成gif动态图片的时候&#xff0c;要如何操作呢&#xff1f;接下来&#xff0c;给大家分享两招视频转化gif的小窍门–使用【GIF…

【力扣-Python-1】两数之和(easy)

https://leetcode.cn/problems/two-sum/题目描述给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的那两个整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答…

uboot下实现U盘自动升级程序的思路分析(基于USB系统、eMMC系统、FAT32文件系统)

1、常见的升级方式 1.1、应用程序升级 优点&#xff1a;在图形化界面操作&#xff0c;只需要选中升级文件并点击升级即可&#xff0c;操作简单&#xff1b; 缺点&#xff1a;应用程序必须能正常启动&#xff0c;当程序出现bug就不能升级&#xff0c;可靠性差&#xff1b; 总结…