Python Pandas数据清洗与处理

Python Pandas数据清洗与处理

在进行数据分析时,原始数据往往包含了许多不完整、不准确或者冗余的信息。数据清洗与处理的任务就是将这些杂乱无章的数据清理干净,确保数据的准确性和一致性,从而为后续的分析工作打下坚实的基础。Pandas提供了强大的工具来帮助我们清洗和处理数据,尤其是在处理Series和DataFrame时,它能够高效地进行数据的筛选、填充、删除、替换等操作。

本节将通过一些常见的数据清洗与处理操作,展示如何使用Pandas的Series和DataFrame对数据进行处理。

示例数据集

为了演示数据清洗与处理的操作,首先我们构造一个包含10条测试数据的DataFrame,其中包含一些常见的数据问题,如缺失值、重复值和异常值。

import pandas as pd
import numpy as np# 构造测试数据
data = {'姓名': ['张三', '李四', '王五', '赵六', '王五', '李四', '赵六', '周七', '郑八', np.nan],'年龄': [23, 25, np.nan, 29, 30, 25, 29, 24, 28, 23],'性别': ['男', '女', '男', '男', '男', '女', '男', '男', '女', np.nan],'工资': [5000, 6000, 7000, 8000, 7000, 6000, 8000, np.nan, 5000, 7000]
}# 创建DataFrame
df = pd.DataFrame(data)# 打印原始数据
print("原始数据:")
print(df)

输出结果如下:

原始数据:姓名    年龄 性别    工资
0   张三  23.0   男  5000.0
1   李四  25.0   女  6000.0
2   王五   NaN   男  7000.0
3   赵六  29.0   男  8000.0
4   王五  30.0   男  7000.0
5   李四  25.0   女  6000.0
6   赵六  29.0   男  8000.0
7   周七  24.0   男    NaN
8   郑八  28.0   女  5000.0
9  NaN  23.0 NaN  7000.0

这个数据集中,我们可以看到有缺失值、重复值以及一些无效的数据(如姓名、性别为空值)。

数据清洗与处理操作

在Pandas中,有许多方法可以帮助我们对这些问题进行清洗。接下来我们将对这些数据进行常见的清洗操作,包括缺失值处理、重复值处理、异常值处理等。

1. 处理缺失值

缺失值是数据清洗过程中常见的问题,Pandas提供了多种方法来处理缺失值,例如使用fillna()进行填充,或者使用dropna()删除包含缺失值的行。

(1)删除包含缺失值的行

我们可以使用dropna()方法来删除包含缺失值的行。以下是删除包含缺失值的行的代码示例:

# 删除包含缺失值的行
df_cleaned = df.dropna()# 打印删除后的数据
print("\n删除包含缺失值的行后的数据:")
print(df_cleaned)

代码解析

  1. df.dropna():此方法删除DataFrame中任何含有缺失值的行。
  2. dropna()默认会删除所有含有缺失值的行,如果需要删除含有缺失值的列,可以设置axis=1

输出结果如下:

删除包含缺失值的行后的数据:姓名    年龄 性别    工资
0   张三  23.0   男  5000.0
1   李四  25.0   女  6000.0
3   赵六  29.0   男  8000.0
4   王五  30.0   男  7000.0
5   李四  25.0   女  6000.0
6   赵六  29.0   男  8000.0
8   郑八  28.0   女  5000.0
(2)填充缺失值

另外,如果希望保留包含缺失值的行,但希望填充缺失值,可以使用fillna()方法。例如,可以使用均值、中位数或指定的常数来填充缺失值。

# 使用年龄列的均值填充缺失值
df['年龄'] = df['年龄'].fillna(df['年龄'].mean())# 使用工资列的中位数填充缺失值
df['工资'] = df['工资'].fillna(df['工资'].median())# 打印填充后的数据
print("\n填充缺失值后的数据:")
print(df)

代码解析

  1. df['年龄'].fillna(df['年龄'].mean()):通过fillna()方法,用年龄列的均值填充缺失值。
  2. df['工资'].fillna(df['工资'].median()):使用工资列的中位数填充缺失值。

输出结果如下:

填充缺失值后的数据:姓名    年龄 性别    工资
0   张三  23.0   男  5000.0
1   李四  25.0   女  6000.0
2   王五  27.0   男  7000.0
3   赵六  29.0   男  8000.0
4   王五  30.0   男  7000.0
5   李四  25.0   女  6000.0
6   赵六  29.0   男  8000.0
7   周七  24.0   男  6500.0
8   郑八  28.0   女  5000.0
9  NaN  23.0 NaN  7000.0
2. 处理重复值

数据中有时会出现重复记录,这时候可以使用drop_duplicates()方法来去除重复的行。以下是删除重复行的代码示例:

# 删除重复的行
df_cleaned = df.drop_duplicates()# 打印删除后的数据
print("\n删除重复值后的数据:")
print(df_cleaned)

代码解析

  1. df.drop_duplicates():此方法会删除DataFrame中完全相同的行,保留唯一的记录。

输出结果如下:

删除重复值后的数据:姓名    年龄 性别    工资
0   张三  23.0   男  5000.0
1   李四  25.0   女  6000.0
2   王五  27.0   男  7000.0
3   赵六  29.0   男  8000.0
4   王五  30.0   男  7000.0
5   李四  25.0   女  6000.0
6   赵六  29.0   男  8000.0
7   周七  24.0   男  6500.0
8   郑八  28.0   女  5000.0
9  NaN  23.0 NaN  7000.0
3. 处理异常值

数据中的异常值可能会影响分析的准确性,我们可以通过各种方法来识别和处理异常值,例如将不合理的数据替换为NaN,或者将其替换为合理的值。

例如,如果我们认为年龄不应小于18岁,可以通过以下方式替换小于18岁的年龄为NaN:

# 将年龄小于18岁的值替换为NaN
df['年龄'] = df['年龄'].apply(lambda x: np.nan if x < 18 else x)# 打印处理后的数据
print("\n处理异常值后的数据:")
print(df)

代码解析

  1. df['年龄'].apply(lambda x: np.nan if x < 18 else x):通过apply()方法,使用lambda函数将年龄小于18的数据替换为NaN。

输出结果如下:

处理异常值后的数据:姓名    年龄 性别    工资
0   张三  23.0   男 

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

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

相关文章

【高项】6.3 排列活动顺序 ITTO

输入 项目管理计划组件&#xff1a; ① 进度管理计划&#xff1b;② 范围基准 项目文件&#xff1a; ① 假设日志&#xff1b;② 活动属性&#xff1b;③ 活动清单&#xff1b;④ 里程碑清单 工具与技术 紧前关系绘图法&#xff08;PDM&#xff09; ① 完成到开始&…

将Deepseek接入本地Vscode

第一步&#xff1a;获取Deepseek APIKEY 1.1 登录Deepseek官网 https://www.deepseek.com/ 1.2 选择API开放平台 1.3 注册账号并登录 1.4 登录成功后的就界面 1.5 点击左侧菜单栏“API keys”&#xff0c;并创建API key 名称自定义输入 生成API key 复制保存&#xff0c;丢失…

docker使用笔记

文章目录 1.Docker 与容器2.核心概念与安装配置2.1 核心概念2.2 docker 安装ubuntu使用官方的脚本自动安装准备条件准备安装安装Docker安装Docker 命令补全工具允许非Root用户执行docker 命令最后一步 更新.bashrc文件 [修改docker 默认的存储路径](https://www.cnblogs.com/du…

vim如何设置制表符表示的空格数量

:set tabstop4 设置制表符表示的空格数量 制表符就是tab键&#xff0c;一般默认是四个空格的数量 示例&#xff1a; &#xff08;vim如何使设置制表符表示的空格数量永久生效&#xff1a;vim如何使相关设置永久生效-CSDN博客&#xff09;

PPT添加与管理批注的操作指南

​​​ 批注是PPT中一个非常实用的功能&#xff0c;它不仅能帮助我们在演讲和设计过程中记录想法&#xff0c;还能与他人协作时提供有价值的反馈。无论是团队讨论、审稿&#xff0c;还是个人思考&#xff0c;批注的运用都能让我们的PPT更加完善和高效。我会详细介绍如何在PPT中…

CASAIM与友达光电达成深度合作,CASAIM IS自动化蓝光测量技术为创新显示技术发展注入新的活力

近期&#xff0c;CASAIM与友达光电股份有限公司在液晶显示面板智能自动三维检测技术上达成深度合作&#xff0c;联合打造CASAIM IS全自动化智能检测系统,助力光电产品显示面板制造全自动化3d测量&#xff0c;实现高精度、高效率测量和检测&#xff0c;进一步提升产品质量和生产…

【已解决】OSS配置问题

OSS SDK快速入门_对象存储(OSS)-阿里云帮助中心 阿里官方的SDK使用方法还得配置环境变量access Key、access Secret &#xff0c;我没有配置&#xff0c;仅把access Key和access Secret写到了yml文件读取&#xff0c;结果上传图片时还是出现下面的问题。 [ ERROR ] [ com.s…

STM32 硬件I2C读写

单片机学习&#xff01; 目录 前言 一、步骤 二、配置I2C外设 2.1 开启I2C外设和GPIO口时钟 2.2 GPIO口初始化为复用开漏模式 2.3 结构体配置I2C 2.4 使能I2C 2.5 配置I2C外设总代码 三、指定地址写时序 3.1 生产起始条件S 3.2 监测EV5事件 3.3 发送从机地址 3.4 …

C语言程序设计十大排序—冒泡排序

文章目录 1.概念✅2.冒泡排序&#x1f388;3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅ 1.概念✅ 排序是数据处理的基本操作之一&#xff0c;每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法&#xff0c;排序后的数据更易于处理和查找。在计算机发展…

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中&#xff0c;我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中&#xff0c;这样很容易导致账户/密码泄露&#xff0c;而使用Python中的用户交…

【后端开发】字节跳动青训营之性能分析工具pprof

性能分析工具pprof 一、测试程序介绍二、pprof工具安装与使用2.1 pprof工具安装2.2 pprof工具使用 资料链接&#xff1a; 项目代码链接实验指南pprof使用指南 一、测试程序介绍 package mainimport ("log""net/http"_ "net/http/pprof" // 自…

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端&#xff1a; sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端&#xff1a; sudo systemctl start ssh贰、配置SSH&#xff08;可跳过&#xff09; 配置文件 …

【模拟集成电路】锁相环(phase-locked loops,PLL)设计_环形振荡器相关(简)

0. 前言 未来将会不定时更新PLL相关的文章&#xff0c;主要目的是作为个人的学习笔记&#xff0c;关于锁相环的基础&#xff0c;可以参考《模拟CMOS集成电路设计_Behzad Razavi》后面几章的内容&#xff0c;下面的文章主要参考书籍是的英文书籍《DESIGN OF CMOS PHASE‑LOCKED …

【python】四帧差法实现运动目标检测

四帧差法是一种运动目标检测技术&#xff0c;它通过比较连续四帧图像之间的差异来检测运动物体。这种方法可以在一定的程度上提高检测的准确性。 目录 1 方案 2 实践 ① 代码 ② 效果图 1 方案 具体的步骤如下&#xff1a; ① 读取视频流&#xff1a;使用cv2.VideoCapture…

Spring--SpringMVC使用(接收和响应数据、RESTFul风格设计、其他扩展)

SpringMVC使用 二.SpringMVC接收数据2.1访问路径设置2.2接收参数1.param和json2.param接收数据3 路径 参数接收4.json参数接收 2.3接收cookie数据2.4接收请求头数据2.5原生api获取2.6共享域对象 三.SringMVC响应数据3.1返回json数据ResponseBodyRestController 3.2返回静态资源…

又是一年啊

又是一年 回顾2024一、2024的愿望二、愿望实现了吗&#xff1f;三、总结 展望2025几个愿望~~&#xff08;终于快写完了&#xff09;~~ 华丽结尾 回顾2024 一、2024的愿望 1.CSP-J上岸&#xff1b; 2.小升初上岸&#xff1b; 3.数学进入联赛班&#xff1b; 4.初一期末年级前五…

直线拟合例子 ,岭回归拟合直线

目录 直线拟合,算出离群点 岭回归拟合直线&#xff1a; 直线拟合,算出离群点 import cv2 import numpy as np# 输入的点 points np.array([[51, 149],[122, 374],[225, 376],[340, 382],[463, 391],[535, 298],[596, 400],[689, 406],[821, 407] ], dtypenp.float32)# 使用…

如何解压rar格式文件?8种方法(Win/Mac/手机/网页端)

RAR 文件是一种常见的压缩文件格式&#xff0c;由尤金・罗谢尔&#xff08;Eugene Roshal&#xff09;开发&#xff0c;因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩&#xff0c;大幅减小存储空间&#xff0c;方便数据传输与备份。然而&#xf…

【软件测试项目实战 】淘宝网:商品购买功能测试

一、用例设计方法分析 在对淘宝网商品下单功能进行测试时&#xff0c;不同的测试角度和场景适合运用不同的用例设计方法&#xff0c;以下是针对该功能各方面测试所适用方法及其原因的分析&#xff1a; 商品数量相关测试&#xff1a;对于商品数量的测试&#xff0c;主要采用等…

失业ing

零零碎碎记一下unity相关的东西备忘 渲染&#xff1a; https://github.com/festivities/PrimoToon 仿原神的卡通渲染&#xff0c; 参照这种文档&#xff1a; Unity Built-in Shader转URP Shader 接口查询对照表之类的 自己强行改api到urp可用&#xff0c;改了三四天&…