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 = -1
    else:
        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'])      # 合并为一个DataFrame
    return missing_values
 
missing(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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始搭建一个生产级SpringBoot2.0.X项目(八)SpringBoot 使用Redis

前言 最近有个想法想整理一个内容比较完整springboot项目初始化Demo。 SpringBoot使用Redis 缓存数据 一、 pom引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>&…

stuid学生信息

文章目录 前端准备MySQL数据库封装JDBC 连接工具类 DBUtil查寻学生新增学生 前端准备 结构 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,…

ssm071北京集联软件科技有限公司信息管理系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;北京集联软件科技有限公司信息管理系统 \ 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本信息…

D62【python 接口自动化学习】- python基础之数据库

day62 SQL 基础 学习日期&#xff1a;20241108 学习目标&#xff1a;MySQL数据库-- 131 SQL基础和DDL 学习笔记&#xff1a; SQL的概述 SQL语言的分类 SQL的语法特征 DDL - 库管理 DDL - 表管理 总结 SQL是结构化查询语言&#xff0c;用于操作数据库&#xff0c;通用于绝大…

LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式

Meta AI在视频理解方面取得了令人瞩目的里程碑式成就&#xff0c;推出了LongVU&#xff0c;这是一种开创性的模型&#xff0c;能够理解以前对人工智能系统来说具有挑战性的长视频。 研究论文 "LongVU&#xff1a;用于长视频语言理解的时空自适应压缩 "提出了一种革命…

golang分布式缓存项目 Day 1

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 LRU缓存淘汰策略 三种缓存淘汰策略 FIFO&#xff08;First In, First Out&#xff09;先进先出 原理&…

Axure设计之左右滚动组件教程(动态面板)

很多项目产品设计经常会遇到左右滚动的导航、图片展示、内容区域等&#xff0c;接下来我们用Axure来实现一下左右滚动的菜单导航。通过案例我们可以举一反三进行其他方式的滚动组件设计&#xff0c;如常见的上下滚动、翻页滚动等等。 一、效果展示&#xff1a; 1、点击“向左箭…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目模块中使用crate关键字模块中使用super模块中结构体的访问规则模块中枚举的访问规则模块中use关键字不同模块定义了相同类型冲突解决办法使用pub use导出本模块的函数给外面模块引入外部依赖模块与子模块 小结3.…

分享:文本转换工具:PDF转图片,WORD转PDF,WORD转图片

前言 鉴于网上大多数在线转换工具要么需要收费&#xff0c;要么免费后但转换质量极差的情况&#xff0c;本人开发并提供了PDF转图片&#xff0c;WORD转PDF&#xff0c;WORD转图片等的文本转换工具。 地址 http://8.134.236.93/entry/login 账号 账号&#xff1a;STAR001&a…

【Linux探索学习】第十一弹——初识操作系统:冯诺依曼体系结构与操作系统的概念与定位

前言&#xff1a; 在学完我们前面的指令和工具之后&#xff0c;今天我们正式开启一个新的内容的学习——进程&#xff0c;在正式讲解进程之前&#xff0c;我们要先进入一些铺垫内容的学习&#xff0c;这就是我们今天要讲的冯诺依曼体系结构和操作系统的概念&#xff0c;下面我们…

Java:二维数组

目录 1. 二维数组的基础格式 1.1 二维数组变量的创建 —— 3种形式 1.2 二维数组的初始化 \1 动态初始化 \2 静态初始化 2. 二维数组的大小 和 内存分配 3. 二维数组的不规则初始化 4. 遍历二维数组 4.1 for循环 ​编辑 4.2 for-each循环 5. 二维数组 与 方法 5.1…

TVM计算图分割--分割方式

文章目录 TVM中的计算图分割方式1. Partition Pass2. dataflow_pattern3. 内置图分割接口4. Pipeline Executor5. BYOC框架6. UMA深度学习模型通常是用计算图来表示的。计算图是一种有向无环图,其中节点代表算子,表示一个操作,节点之间的边表示算子之间的数据依赖。计算图分…

RNA-seq 差异分析的点点滴滴(1)

引言 本系列[1])将开展全新的转录组分析专栏&#xff0c;主要针对使用DESeq2时可能出现的问题和方法进行展开。 为何使用未经标准化的计数数据&#xff1f; DESeq2 工具包在接收输入时&#xff0c;期望得到的是未经处理的原始计数数据&#xff0c;比如从 RNA-seq 或其他高通量测…

基于单片机的观赏类水草养殖智能控制系统的设计(论文+源码)

1总体设计 通过需求分析&#xff0c;本设计观赏类水草养殖智能控制系统的总体架构如图2.1所示&#xff0c;为系统总体设计框图。系统采用STM32单片机作为系统主控核心&#xff0c;利用DS18B20温度传感器、TDS传感器、CO2传感器、光敏传感器实现水草养殖环境中水温、CO2浓度、T…

中兴光猫修改SN,MAC,修改地区,异地注册,改桥接,路由拨号

前言 请先阅读上一篇博客获取到光猫超级密码电信光猫获取超级密码 电信光猫天翼网关4.0获取超级密码教程 四川电信光猫 中兴 F1855V2 ZXHN F1855V2 telent权限 实战 实测_天翼4.0光猫超级密码-CSDN博客 修改SN-修改地区&#xff0c;光猫异地注册&#xff0c;设置桥接模式&#…

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 基于卷积神经网络的农作物病虫害检测&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…

aardio 5分钟多线程开发简单入门

废话不多说 直接开干&#xff01; 借用作者话说 虽然 aardio 的多线程开发非常简单&#xff0c;但是&#xff1a; 1、请先了解:「多线程」开发比「单线程」开发更复杂这个残酷的现实。 2、请先了解: aardio 这样的动态语言可以实现真多线程非常罕见。 建议先找任意的编程语言试…

PMP–知识卡片--人才九宫格

在人才盘点时&#xff0c;根据人才的绩效和潜能&#xff0c;分别作为横坐标和纵坐标&#xff0c;将人才盘点的结果划分为9个象限&#xff0c;人才分为九个类别&#xff0c;以便于分类管理&#xff0c;因材施教。

1.每日SQL----2024/11/7

题目&#xff1a; 计算用户次日留存率,即用户第二天继续登录的概率 表&#xff1a; iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

解决yum命令报错“Could not resolve host: mirrorlist.centos.org

这个主要是yum源出了问题或者服务器网络有问题&#xff0c;检查网络排除网络问题后&#xff0c;可更换源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.k wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository…