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

【Pandas】3.2-数据预处理:行的基本操作

对于结构化数据,每一行代表了一个具体样本(比如每个用户的年龄、身高等),不同的列则是每个样本相应的某种特征(年龄列、身高列等)。
因此当使用Pandas处理和分析数据时,通常列的执行频次会高于行相关的操作:比如对列求均值才有实际含义,返回的结果代表了年龄的均值、身高的均值等;而对行求均值会将不同量纲的年龄与身高代入计算,得到的结果并没有意义。
所以Pandas中对行的高频操作可能较少,根据博主自己的实践经验,在此初步总结为下面2种行的常用基本操作,分别是

  • 行索引的修改
  • 行的删除

首先模拟一份数据集,年龄中有负数便于演示删除操作

import numpy as np
import pandas as pd# 5行3列的结构化数据
# 5行代表5个样本、3列代表 用户ID、年龄、性别
df = pd.DataFrame({'user_id': [f"U{i:03d}" for i in range(1,6)],'Age':[22,32,42,52,-62],'Gender':np.random.choice(['男','女'],5)}
)df

在这里插入图片描述

1-行索引的修改

(1)-手动设置行索引 — set_index()方法

DataFrame的行索引/index默认是根据行的实际物理位置,生成的类似np.range(df.shape[0)的等差数列,但有时可能会需要将原始数据中具有特殊意义的字段设为行索引,比如用户ID、特殊的时间戳等。

对此Pandas提供了 set_index()方法,其主要参数为:

df.set_index(# key: 指定为行索引的列名col_namekeys='col_name'# 将 col_name 列设为行索引后,在原始数据中是否删除该列?# drop默认为True:True代表删除;False代表保留,drop=True/False# 是否修改原始数据# inplace默认为False,不修改原始数据,inplace=False/True
)

如果需要将df的 'user_id’列设为行索引,代码与结果如下:

# 'user_id'作为df的列名可以直接传入 set_index()方法,不需要显式指定 keys='user_id'
# 其中drop=True/设为行索引后删除'user_id'列,inplace=False不修改原始数据,返回一个新对象
df2 = df.set_index('user_id')
df2

在这里插入图片描述

(2)-还原为默认索引 — reset_index()方法

如果在手动设置行索引后发现对分析没有帮助,需要恢复为原始索引时,Pandas提供了reset_index()方法,其主要参数如下:

df.reset_index(# 假设现在的行索引是: col_at_index 列# 再将行索引还原为默认索引后,是否要删除 col_at_index 列# 默认drop=False,会将 col_at_index 列重新添加到 原始数据中# drop=True,则会删除 col_at_index 列drop=False/True# 是否修改原始数据# inplace默认为False,不修改原始数据,inplace=False/True
)

下面展示了将df2还原为默认索引时,drop=False/True的结果对比,代码与结果如下:

# 对df2还原为默认索引
# reset_index()默认drop=False,则'user_id'列会被重新添加到df3中
df3 = df2.reset_index()# reset_index()中drop=True,df4会将'user_id'列删除
df4 = df2.reset_index(drop=True)df3

在这里插入图片描述

2-行的删除 — drop()方法

行的删除通常出现在处理一些异常样本时,并非一定要选择删除,也可以选择替换处理,但具体如何替换就需要根据数据类型与特定选择,本文这里重点关注行的删除操作。
Pandas中提供了drop()方法用于行的删除:

df.drop(# df_useless代表了 df 中符合删除条件的df子集# 具体符合什么删除条件就需要具体问题具体分析# 比如本文中 df['Age']列中出现了负数的年龄# 就可以设置 df[df['Age']<0] 或者 df.query('Age<0') 得到 符合删除条件的df_useless# 再将df_useless.index传入,即可完成删除操作index=df_useless.index# 是否修改原始数据# inplace默认为False,不修改原始数据,inplace=False/True
)

就以删除df中年龄为负数的用户为例,展示drop()方法的删除原理。

首先要查询出符合删除条件的df子集,此处选择query()方法查询:

# 1-获取符合删除条件的df子集
# query()方法设置查询条件,得到符合要求的 df子集: df_singular_age
df_singular_age = df.query('Age<0')df_singular_age

在这里插入图片描述

再将df_singular_age.index作为drop()方法中需要删除的行索引,即可完成删除操作:

# 2-将 df子集的行索引 传入 drop()方法的index,完成删除操作
df4 = df.drop(index=df_singular_age.index)
df4

在这里插入图片描述


文章转载自:

http://z172RJ09.kfqzd.cn
http://SqHPORjF.kfqzd.cn
http://YSeLKqrq.kfqzd.cn
http://sCREnjpi.kfqzd.cn
http://QZgK2Tfl.kfqzd.cn
http://tVFCeGjz.kfqzd.cn
http://sCKOwDhZ.kfqzd.cn
http://Y8kC615J.kfqzd.cn
http://I71v9Ogp.kfqzd.cn
http://Mw4bwQL0.kfqzd.cn
http://feEfN8HK.kfqzd.cn
http://V9tmRty1.kfqzd.cn
http://pMSfTzUN.kfqzd.cn
http://04uh1YCv.kfqzd.cn
http://wDlIznJf.kfqzd.cn
http://foI5pkTQ.kfqzd.cn
http://Z9E8TWKM.kfqzd.cn
http://X0qq9YUM.kfqzd.cn
http://maHu20jJ.kfqzd.cn
http://fFsPcMhB.kfqzd.cn
http://0Ys9XQ1g.kfqzd.cn
http://eTwsVJCa.kfqzd.cn
http://hcjTP0SO.kfqzd.cn
http://XcdEFpWr.kfqzd.cn
http://ujfvULgo.kfqzd.cn
http://TXmJHqg2.kfqzd.cn
http://RRLb8BYL.kfqzd.cn
http://3q7xOujD.kfqzd.cn
http://dH2347bR.kfqzd.cn
http://VsCDDRJg.kfqzd.cn
http://www.dtcms.com/a/375230.html

相关文章:

  • 【展厅多媒体】 AI人工智能赋能虚拟数字展厅应用与制作
  • Python入门教程之逻辑运算符
  • 构建AI智能体:二十八、大语言模型BERT:原理、应用结合日常场景实践全面解析
  • pytest并发测试,资源问题导致用例失败解决办法
  • 【openEuler 24.03 LTS SP2】真实实验部署ollama0.11.6+deepseekR1:1.5b+open-webUI
  • 欢迎来到“个人产品化”时代
  • 【论文阅读】REFRAG:一个提升RAG解码效率的新思路
  • 云原生监控系统 Prometheus大总结 20250909
  • Python解释器安装配置教程(Windows)
  • Java爬虫获取京东item_get_app数据的实战指南
  • HashMap(JDK1.7到1.8的过渡)
  • 趣味学RUST基础篇(函数式编程迭代器)
  • 抗ASIC、抗GPU 的密码哈希算法(安全密钥派生)Argon2算法
  • Nginx 实战系列(六)—— Nginx 性能优化与防盗链配置指南
  • 深入解析 Apache Flink Checkpoint 与 Savepoint 原理与最佳实践
  • C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
  • 第2节-过滤表中的行-IN
  • 2025年渗透测试面试题总结-60(题目+回答)
  • 【GD32】ROM Bootloader、自定义Bootloader区别
  • 业务用例和系统用例
  • Google AI Mode 颠覆传统搜索方式,它是有很大可能的
  • MTC出席SAP大消费峰会:行业深度×全球广度×AI创新,助力韧性增长
  • 彩笔运维勇闯机器学习--决策树
  • 成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠
  • vue3 实现将页面生成 pdf 导出(html2Canvas + jspdf)
  • golang 面试常考题
  • 单例模式(C++)
  • All in AI之二:数学体系的建立
  • 【Python】S1 基础篇 P5 字典模块指南
  • MySQL底层架构设计原理详细介绍