当前位置: 首页 > 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


http://www.mrgr.cn/news/68571.html

相关文章:

  • 微服务透传日志traceId
  • Hive面试题-- 查询各类型专利 top10 申请人及专利申请数
  • 大数据-211 数据挖掘 机器学习理论 - 逻辑回归 scikit-learn 实现 max_iter 分类方式选参数
  • 重学 Android 自定义 View 系列:动手实现专属 TextView
  • 动态规划理论基础和习题【力扣】【算法学习day.25】
  • c语言所有关键字简单整理
  • C++:( ͡• ͜ʖ ͡• )详解类型转换运算
  • 文件内的函数的定义和调用,函数内的函数定义和调用
  • 技术路线图用什么画?10个好用的模板盘点推荐!
  • 【通义灵码】AI编码新时代
  • springboot安财餐饮管理系统-计算机设计毕业源码59177
  • Linux Centos7 如何安装图形化界面
  • 商淘云连锁企业管理五大功能 收银系统助力门店进销存同步
  • 如何在Windows中检查是否安装了GPU
  • Visual Studio Code 端口转发功能详解
  • C++初阶——string类
  • 【JS】this关键字的相关问题
  • C语言实验 循环结构
  • YOLOv7-0.1部分代码阅读笔记-experimental.py
  • 使用STM32F407xx的GPIO引脚实现跑马灯效果的详细步骤
  • Linux进程通信之管道
  • oracle数据坏块处理(三)-数据抽取插入到新表中
  • RHCE—web服务器
  • VR的左右眼渲染方法
  • 08 反射与注解
  • 【Linux】解锁操作系统潜能,高效线程管理的实战技巧