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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS Next 实战卡片开发 02

HarmonyOS Next 实战卡片开发 02 卡片开发中,还有一个难点是显示图片。其中分为显示本地图片和显示网络图片 显示本地图片 卡片可以显示本地图片,如存放在应用临时目录下的图片。路径比如 /data/app/el2/100/base/你的项目boundleName/temp/123.png 以…

双十一云服务器抢购后,用SD-WAN连通多云网络

双十一个个云厂商都有一定的优惠,我在阿里云和腾讯云都购买了服务器,原本主要是使用的阿里云,一堆乱七八糟的东西都是部署在阿里云的,现在买了一台腾讯云之后就在思考一个问题,怎么在腾讯云使用阿里云原本部署的服务。…

从0开始学docker (每日更新 24-11-7)

docker网络基础 docker容器网络模型 容器网络项目libnetwork:docker网络架构基于一套称为容器网络模型(CNM)的接口 CNM高层架构 包括: 沙箱(Sandbox):又称沙盒,包含容器的网络栈…

Linux学习笔记之组管理和权限管理

组管理 文件/目录 所有者 一般文件所有者是文件的创建者,谁创建了该文件,就自然成为该文件的所有者 ls -ahl (查看文件的所有者) chown 用户名 文件名 (修改文件所有者) 文件/目录 所在组 当某个用户…

MySQL 中的索引下推功能

看到索引,应该大家都可以联想到这个是和查询效率有关系的,既然有这个功能,那么那句古话说的好啊:存在即合理。那么这个就是说有了这个功能,可以提升查询效率。 什么是索引下推 我们先有一个大概的理解:在…

CSP/信奥赛C++语法基础刷题训练(1):洛谷P5715 :三位数排序

CSP/信奥赛C语法基础刷题训练(1):洛谷P5715 :三位数排序 题目描述 给出三个整数 a , b , c ( 0 ≤ a , b , c ≤ 100 ) a,b,c(0\le a,b,c \le 100) a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。 输入格式 …

准确--FastDFS快速单节点部署

FastDFS单节点部署 1. 系统准备 # 查看操作系统信息(适用于麒麟V10) cat /etc/os-release# 安装必要的软件包 yum -y install gcc gcc-c perl zlib-devel unzip2. 准备 FastDFS 环境 cd /usr/local/fastdfs# 下载必要包(若有访问限制&…

国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?

EasyCVR视频融合云平台,是TSINGSEE青犀视频“云边端”架构体系中的“云平台”系列之一,是一款针对大中型项目设计的跨区域、网络化、视频监控综合管理系统平台,通过接入视频监控设备及视频平台,实现视频数据的集中汇聚、融合管理、…

【智谱开放平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

计算机新手练级攻略——如何搜索问题

目录 计算机学生新手练级攻略——如何搜索问题1.明确搜索意图2.使用精确关键词3.使用专业引擎搜索4.利用好技术社区1. Stack Overflow2. GitHub3. IEEE Xplore4. DBLP 5.使用代码搜索工具1. GitHub 代码搜索2. Stack Overflow 代码搜索3. Papers with Code4. IEEE Xplore 6.查阅…

【C++】详细介绍模版进阶,细节满满

目录 一、非类型模版参数: 1、介绍: 2、使用: 3、注意: 4、应用 二、模版特化 (一)、概念 (二)、函数模版特化 1、步骤: 2、举例: 3、不建议使用函…

动态规划---解决多段图问题

ok 小伙伴们,我现在有点小小的红温,有点毛躁。 怎么解决多段图问题呢?求取最短路径有多种方法可取。 家人们,毫无思绪可言……………………………… 要实现动态规划,条件:子问题重叠度较高,并…

JMeter基础篇

目录 总目录: 一、JMeter简介: -用途: -优缺点: 二、JMeter安装: 三、项目简介: -学生管理系统: -API接口清单: 查询: 新增: 更新: 删…

Elasticsearch中什么是倒排索引?

倒排索引(Inverted Index)是一种索引数据结构,它在信息检索系统中被广泛使用,特别是在全文搜索引擎中。倒排索引允许系统快速检索包含给定单词的文档列表。它是文档内容(如文本)与其存储位置之间的映射&…

【Python特征工程系列】利用SHAP进行特征重要性分析-XGB模型为例(案例+源码)

这是我的第374篇原创文章。 一、引言 SHAP有多种实现方式,每种方式都适用于特定的模型类型,可以实现更快的逼近。 TreeExplainer :TreeExplainer专为树集合方法开发,如XGBoost,LightGBM或CatBoost。 DeepExplainer :DeepExplain…

C++数据结构算法学习

C ,orient(面向) object , object entity(实体) Visible(可见的) or invisible(不可见) 变量用来保存数据 objects attribute(属性) services(服务) C STL 容器 vector, list() vector底层是数组,类似双向链表和list底层 map/s…

ELK-Logstash配置

文章目录 一、什么是Logstash、有什么用?什么是 Logstash?Logstash 的主要特点:Logstash 的用途: 二、Logstash的安装与基本配置事先要安装Java的环境?Logstash 安装Debian/UbuntuRed Hat/CentOSmacOS(使用…

R语言机器学习与临床预测模型69--机器学习模型解释利器:SHAP

R小盐准备介绍R语言机器学习与预测模型的学习笔记, 快来收藏关注【科研私家菜】 01 机器学习的可解释性 对于集成学习方法,效果虽好,但一直无法解决可解释性的问题。我们知道一个xgboost或lightgbm模型,是由N棵树组成,…

Vue自定义指令详解——以若依框架中封装指令为例分析

自定义指令 在Vue.js中,自定义指令提供了一种非常灵活的方式来扩展Vue的功能。以下是对Vue中自定义指令的详细解释: 一、自定义指令的基本概念 自定义指令允许开发者直接对DOM元素进行低层次操作,而无需编写大量的模板或者JavaScript代码。…

sql server启用远程连接与修改默认端口

一,数据库右键属性 二,sa账号状态属性启用 三,SQL Server配置管理器, 点击SQL Server 服务选项,确定SQL Server是正在运行的。 四,手动修改数据库的连接端口 1)确保启用 2)修改默认端口 3)客户端IP改为一…