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

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换

    • 传统方法astype
      • 使用value_counts统计
      • 通过apply替换并使用astype转换
    • pd.to_numericx对连续变量进行转化⭐
      • 参数:
      • 返回值:
      • 示例代码:
    • isnull不会检查空字符串

  • 数据准备
    有一组数据信息如下,其中主要将TotalChargesMonthlyCharges两列进行类型转换,虽然通过函数info查看到类型已经是float64 和int64了,但是其中存在缺失值,我们的目的是找出缺失值 并填补进行类型转换
tcc.info()

在这里插入图片描述
在这里插入图片描述

传统方法astype

def find_index(data_col, val):"""查询某值在某列中第一次出现位置的索引,没有则返回-1:param data_col: 查询的列:param val: 具体取值"""val_list = [val]if data_col.isin(val_list).sum() == 0:index = -1else:index = data_col.isin(val_list).idxmax()# idxmax 方法将返回第一个匹配值的索引return index
# 查看空格第一次出现在哪一列的哪个位置:
for col in numeric_cols:print(find_index(tcc[col], ' '))

-1
488

# -1  代表月费用是没有问题的     488  代表总费用是有问题  且是空值
tcc["TotalCharges"][480:490]

在这里插入图片描述

# 确认是空值
tcc["TotalCharges"].iloc[488]

’ ’ 【有个空格的哦】

使用value_counts统计

tcc["TotalCharges"].value_counts()

在这里插入图片描述

通过apply替换并使用astype转换

tcc['TotalCharges']=tcc['TotalCharges'].apply(lambda x: x if x != ' ' else np.nan).astype(float)
tcc['MonthlyCharges']=tcc['MonthlyCharges'].astype(float)

根据上述方法,将空字符串替换为NaN,这就方便使用isnull函数进行后续处理

def missing (df):"""计算每一列的缺失值及占比"""missing_number = df.isnull().sum().sort_values(ascending=False)              # 每一列的缺失值求和后降序排序                  missing_percent = (df.isnull().sum()/df.isnull().count()).sort_values(ascending=False)          # 每一列缺失值占比missing_values = pd.concat([missing_number, missing_percent], axis=1, keys=['Missing_Number', 'Missing_Percent'])      # 合并为一个DataFramereturn missing_valuesmissing(tcc[numeric_cols])

在这里插入图片描述

tcc["TotalCharges"].isnull().sum()

11

# 输出缺失值位置对应的索引
tcc.index[tcc["TotalCharges"].isnull()].tolist()

[488, 753, 936, 1082, 1340, 3331, 3826, 4380, 5218, 6670, 6754]

pd.to_numericx对连续变量进行转化⭐

在这里插入图片描述

pd.to_numericpandas 库中的一个函数,用于将参数转换为数字类型。这个函数的默认返回类型是 float64int64,具体取决于提供的数据。以下是 pd.to_numeric 的一些关键用法和参数:

参数:

  • arg:要转换的参数,可以是标量、列表、元组、一维数组或 Series
  • errors:{‘ignore’, ‘raise’, ‘coerce’},默认为 ‘raise’。
    • 如果设置为 ‘raise’,则无效的解析会引发异常。
    • 如果设置为 ‘coerce’,则无效的解析会被设置为 NaN
    • 如果设置为 ‘ignore’,则无效的解析会返回输入的原始值。注意,‘ignore’ 在版本 2.2 中已被弃用,建议显式捕获异常。
  • downcast:默认为 None。
    • 可以是 ‘integer’、‘signed’、‘unsigned’ 或 ‘float’。
    • 如果不为 None,并且数据已成功转换为数值类型,则根据规则将结果数据转换为可能的最小数值类型。
  • dtype_backend:{‘numpy_nullable’, ‘pyarrow’},默认为 ‘numpy_nullable’。
    • ‘numpy_nullable’:返回支持空值的 DataFrame(默认)。
    • ‘pyarrow’:返回基于 pyarrow 的可空 ArrowDtype DataFrame

返回值:

  • 如果解析成功,返回数字。返回类型取决于输入。如果是 Series,则返回 Series;否则返回 ndarray

示例代码:

# 将 Series 转换为数值类型
s = pd.Series(['1.0', '2', -3])
pd.to_numeric(s)  # 返回 float64 类型

在这里插入图片描述

# 使用 downcast 参数将数值类型转换为更小的数值类型
pd.to_numeric(s, downcast='float')  # 返回 float32 类型

在这里插入图片描述

# 使用 errors 参数处理非数值数据
s = pd.Series([None, ' ', np.nan,'2', -3])
pd.to_numeric(s, errors='coerce')  # 非数值数据被替换为 NaN

在这里插入图片描述

pd.to_numeric 是处理数据转换时非常有用的工具,尤其是在数据清洗和预处理阶段,它可以帮助确保数据类型的一致性。更多详细信息和用法可以参考 pandas 官方文档 。

isnull不会检查空字符串

  • 没有空字符
s = pd.Series([None, np.nan, '2', -3])
s

在这里插入图片描述

s.isnull().sum()

2

  • 空字符串存在
t = pd.Series([None, ' ', '2', -3])
t

在这里插入图片描述

t.isnull()

0 True
1 False # 空字符当成有数据处理了
2 False
3 False
dtype: bool

t.isnull().sum()

1

相关文章:

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数:返回值:示例代码: isnull不会检查空字符串 数据准备 有一组数据信息如下,其中主要将TotalCharges、MonthlyC…...

Elasticsearch的自定义查询方法到底是啥?

Elasticsearch主要的目的就是查询,默认提供的查询方法是查询全部,不满足我们的需求,可以定义查询方法 自定义查询方法 单条件查询 我们查询的需求:从title中查询所有包含"鼠标"这个分词的商品数据 SELECT * FROM it…...

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法:需要安装Maven项目插件 输入​Maven Integration plugin​...

怎么更换IP地址 改变IP归属地的三种方法

要更换自己的IP地址,您可以按照以下步骤进行操作: 1. 了解IP地址类型:首先,您需要了解您当前使用的IP地址类型。IP地址分为静态IP和动态IP两种。静态IP地址是固定的,使用第三方软件比如S深度IP转换器;而使用…...

C#-异步查询示例

文章速览 CancellationTokenSource 概述代码示例 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ CancellationTokenSource 概述 使用System.Threading下的CancellationTokenSource类,进…...

设计模式之适配器模式(从多个MQ消息体中,抽取指定字段值场景)

前言 工作到3年左右很大一部分程序员都想提升自己的技术栈,开始尝试去阅读一些源码,例如Spring、Mybaits、Dubbo等,但读着读着发现越来越难懂,一会从这过来一会跑到那去。甚至怀疑自己技术太差,慢慢也就不愿意再触碰这…...

vue+exceljs前端下载、导出xlsx文件

首先安装插件 npm install exceljs file-saver第一种 简单导出 //页面引入 import ExcelJS from exceljs; import {saveAs} from file-saver; export default {methods: { /** 导出操作 */async handleExportFun() {let that this// 获取当前年月日 用户下载xlsx的文件名称设…...

算法定制LiteAIServer摄像机实时接入分析平台烟火检测算法的主要功能

在现代社会,随着人工智能技术的飞速发展,智能监控系统在公共安全领域的应用日益广泛。其中,烟火检测作为预防火灾的重要手段,其准确性和实时性对于减少火灾损失、保障人民生命财产安全具有重要意义。而算法定制LiteAIServer烟火检…...

用 Python 从零开始创建神经网络(二)

用 Python 从零开始创建神经网络(二) 引言1. Tensors, Arrays and Vectors:2. Dot Product and Vector Additiona. Dot Product (点积)b. Vector Addition (向量加法) 3. A Single Neuron with …...

嘉吉连续第七年亮相进博会

以“新质绿动,共赢未来”为主题,嘉吉连续第七年亮相进博会舞台。嘉吉带来了超过120款产品与解决方案,展示嘉吉在农业、食品、金融和工业等领域以客户为中心的创新成果。这些产品融合了嘉吉在相关领域的前瞻性思考,以及对本土市场的…...

设计模式之单列模式(7种单例模式案例,Effective Java 作者推荐枚举单例模式)

前言 在设计模式中按照不同的处理方式共包含三大类;创建型模式、结构型模式和行为模式,其中创建型模式目前已经介绍了其中的四个;工厂方法模式、抽象工厂模式、生成器模式和原型模式,除此之外还有最后一个单例模式。 单列模式介绍…...

多个服务器共享同一个Redis Cluster集群,并且可以使用Redisson分布式锁

Redisson 是一个高级的 Redis 客户端,它支持多种分布式 Java 对象和服务。其中之一就是分布式锁(RLock),它可以跨多个应用实例在多个服务器上使用同一个 Redis 集群,为这些实例提供锁服务。 当你在不同服务器上运行的…...

100种算法【Python版】第59篇——滤波算法之扩展卡尔曼滤波

本文目录 1 算法步骤2 算法示例2.1 示例描述2.2 python代码3 算法应用:机器人位姿估计扩展卡尔曼滤波(EKF)是一种处理非线性系统的状态估计算法。它通过线性化非线性系统来实现类似于线性卡尔曼滤波的效果。 1 算法步骤 (1)初始化 初始状态: x ^ 0 ∣ 0 \hat{x}_{0|0}...

制造业数字化转型的强大赋能平台:盘古信息IMS OS工软技术底座

在制造业数字化转型的浪潮中,技术底座的选择与实施至关重要。它不仅决定了企业数字化转型的深度与广度,还影响着企业的生产效率、成本控制和市场竞争力。盘古信息IMS OS作为一款强大的工软技术底座,凭借其高度模块化、可配置的设计理念&#…...

域名+服务器+Nginx+宝塔使用SSL证书配置HTTPS

前言 在我的前面文章里,有写过一篇文章 linux服务器宝塔从头部署别人可访问的网站 在这篇文章,有教学怎么使用宝塔和买的服务器的公网IP,以及教怎么打包vue和springboot去部署不用域名的网站让别人访问 那么,这篇文章将在这个…...

UnityAssetsBundle字体优化解决方案

Unity开发某个项目,打包后的apk包体已经高达1.25G了,这是非常离谱的。为了不影响用户体验,需要将apk包体缩小。因为项目本身不包含很多模型以及其他大型资源,排除法将AB包删除,发现app本身就100多M。 由此可以锁定是AB…...

Go的环境搭建以及GoLand安装教程

目录 一、开发环境Golang安装 二、配置环境变量 三、GoLand安装 四、Go 语言的 Hello World 一、开发环境Golang安装 官方网址: The Go Programming Language 1. 首先进入官网,点击Download,选择版本并进行下载: ​ ​ 2. …...

git clone,用https还是ssh

前言 在使用Git去克隆项目时,会遇到https和ssh等形式,这两种又有何种区别呢,本文将重点讨论在具体使用中的问题。 注:第一次使用Git 时,需要先设置全局用户名和邮箱,否则后续使用命令时会报错,也是提醒先添…...

量化交易系统开发-实时行情自动化交易-Okex行情交易数据

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取行情数…...

【重装系统后重新配置2】pycharm 终端无法激活conda环境

pycharm 终端无法激活 conda 环境,但是 Windows本地终端是可以激活的 原因是pycharm 默认的终端是 Windows PowerShell 解决方法有两个: 一、在设置里,修改为cmd 二、下面直接选择...

终极指南:如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案

终极指南:如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youv…...

西门子PLC通信必备:手把手教你用SCL编写Modbus RTU CRC校验功能块

西门子PLC通信实战:SCL实现Modbus RTU CRC校验的工程化解决方案 在工业自动化领域,可靠的数据通信如同设备的神经系统。当两台PLC需要通过RS485接口交换温度传感器读数时,Modbus RTU协议因其简洁高效成为首选。但许多工程师在调试阶段都会遇到…...

Netgear路由器终极救援指南:如何用免费开源工具nmrpflash快速修复“变砖“设备

Netgear路由器终极救援指南:如何用免费开源工具nmrpflash快速修复"变砖"设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器因固件升级失败、意外断电或系统崩…...

保姆级教程:在CentOS 7/8服务器上部署DrissionPage爬虫(含Chrome无头模式配置)

CentOS服务器上DrissionPage爬虫的工业级部署指南 1. 环境准备与Chrome浏览器安装 在CentOS服务器上部署基于DrissionPage的爬虫系统,首要任务是构建稳定可靠的浏览器运行环境。与个人开发环境不同,生产服务器通常需要面对无图形界面、资源受限等特殊场景…...

YimMenu终极配置指南:从零开始掌握GTA V高级菜单工具

YimMenu终极配置指南:从零开始掌握GTA V高级菜单工具 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…...

3分钟掌握跨平台模组下载神器:WorkshopDL全攻略

3分钟掌握跨平台模组下载神器:WorkshopDL全攻略 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台的游戏无法使用Steam创意工坊模组而烦恼吗…...

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

1. 环境配置:搭建nnU-Net v2的基础舞台 第一次接触nnU-Net时,我踩过的最大坑就是环境配置。当时为了赶项目进度,直接用了现有的Python 3.8环境,结果在安装时各种报错,浪费了大半天时间。后来才发现,nnU-Net…...

5分钟掌握小红书无水印下载:让内容保存效率提升300%

5分钟掌握小红书无水印下载:让内容保存效率提升300% 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&#…...

构建高可用AI模型代理服务:统一接口、智能路由与生产级部署

1. 项目概述:一个无处不在的AI助手接口最近在折腾AI应用开发的朋友,可能都遇到过这样一个痛点:想在自己的项目里快速接入一个靠谱的、能处理复杂对话的AI模型,但要么被OpenAI的API调用限制和网络问题搞得焦头烂额,要么…...

量化交易强化学习环境TradingGym:从Gym接口到实战策略训练

1. 项目概述:一个为量化交易策略量身定制的强化学习训练场如果你正在尝试将强化学习(Reinforcement Learning, RL)应用到股票、期货或加密货币的量化交易中,大概率会遇到一个共同的困境:环境太难搭了。市面上的回测框架…...