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

Pandas 数据清洗

1.数据清洗定义

    数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。

2.清洗空值

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

    删除包含空字段的行,可以使用 dropna() 方法。可以通过 isnull() 判断各个单元格是否为空。

(1)axis:默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。

(2)how:默认为 'any' 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how='all' 一行(或列)都是 NA 才去掉这整行。

(3)thresh:设置需要多少非空值的数据才可以保留下来的。

subset:设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。

(4)inplace:如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改源数据。

import pandas as pddf = pd.read_csv('property-data.csv')print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

3.指定空数据类型

import pandas as pdmissing_values = ["n/a", "na", "--"]
df = pd.read_csv('property-data.csv', na_values = missing_values)print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())

4.删除包含空数据的行

import pandas as pddf = pd.read_csv('property-data.csv')new_df = df.dropna()print(new_df.to_string())

5.使用 inplace = True 参数修改源数据 DataFrame

import pandas as pddf = pd.read_csv('property-data.csv')df.dropna(inplace = True)print(df.to_string())

6.移除 ST_NUM 列中字段值为空的行

import pandas as pddf = pd.read_csv('property-data.csv')df.dropna(subset=['ST_NUM'], inplace = True)print(df.to_string())

7.用fillna() 方法替换空字段

import pandas as pddf = pd.read_csv('property-data.csv')df.fillna(12345, inplace = True)print(df.to_string())

8.指定列来替换数据

import pandas as pddf = pd.read_csv('property-data.csv')df['PID'].fillna(12345, inplace = True)print(df.to_string())

9.使用 mean() 方法计算列的均值并替换空单元格

    替换空单元格的方法是计算列的均值、中位数值或众数。Pandas使用 mean()、median() 和 mode() 方法计算列的均值(所有值加起来的平均值)、中位数值(排序后排在中间的数)和众数(出现频率最高的数)。

import pandas as pddf = pd.read_csv('property-data.csv')x = df["ST_NUM"].mean()df["ST_NUM"].fillna(x, inplace = True)print(df.to_string())

10.使用 median() 方法计算列的中位数并替换空单元格

import pandas as pddf = pd.read_csv('property-data.csv')x = df["ST_NUM"].median()df["ST_NUM"].fillna(x, inplace = True)print(df.to_string())

11.使用 mode() 方法计算列的众数并替换空单元格

import pandas as pddf = pd.read_csv('property-data.csv')x = df["ST_NUM"].mode()df["ST_NUM"].fillna(x, inplace = True)print(df.to_string())

12.清洗格式错误数据

     数据格式错误的单元格会使数据分析变得困难,甚至不可能。可通过包含空单元格的行,或将列中所有单元格转换为相同格式数据。

import pandas as pd# 第三个日期格式错误
data = {"Date": ['2020/12/01', '2020/12/02' , '20201226'],"duration": [50, 40, 45]
}df = pd.DataFrame(data, index = ["day1", "day2", "day3"])df['Date'] = pd.to_datetime(df['Date'], format='mixed')print(df.to_string())

13.清洗错误数据

数据错误是常见情况,可以对错误的数据进行替换或移除。

import pandas as pdperson = {"name": ['Google', 'Kalika' , 'Taobao'],"age": [50, 40, 12345]    # 12345 年龄数据是错误的
}df = pd.DataFrame(person)df.loc[2, 'age'] = 30 # 修改数据print(df.to_string())

14.设置条件语句

import pandas as pdperson = {"name": ['Google', 'Kalika' , 'Taobao'],"age": [50, 200, 12345]   
}df = pd.DataFrame(person)for x in df.index:if df.loc[x, "age"] > 120:df.loc[x, "age"] = 120print(df.to_string())

15.将错误数据的行删除

import pandas as pdperson = {"name": ['Google', 'Kalika' , 'Taobao'],"age": [50, 40, 12345]    # 12345 年龄数据是错误的
}df = pd.DataFrame(person)for x in df.index:if df.loc[x, "age"] > 120:df.drop(x, inplace = True)print(df.to_string())

16.清洗重复数据

    清洗重复数据,可以使用 duplicated() 和 drop_duplicates() 方法。如果对应数据重复,duplicated() 会返回 True,否则返回 False。

import pandas as pdperson = {"name": ['Google', 'Kalika', 'Kalika', 'Taobao'],"age": [50, 40, 40, 23] 
}df = pd.DataFrame(person)print(df.duplicated())

17.使用drop_duplicates() 方法删除重复数据

import pandas as pdpersons = {"name": ['Google', 'Kalika', 'Kalika', 'Taobao'],"age": [50, 40, 40, 23] 
}df = pd.DataFrame(persons)df.drop_duplicates(inplace = True)print(df)

相关文章:

Pandas 数据清洗

1.数据清洗定义 数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。 2.清洗空值 DataFrame.dropna(axis0, howany, threshN…...

IO学习笔记

当前需求,希望进行游戏可以保存游戏进度,可以将游戏的进度保存到一个文本文件,每一次打完游戏更新文本内容,下一次打游戏读取游戏进度,这里就涉及到两个知识IO流和File的知识。 File类 概述 java.io.File 类是文件…...

汇编练习-1

1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程,将data段中的数据,以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…...

初识二叉树( 二)

初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…...

AcWing1077-cnblog

问题背景 给定一个树形结构的图,每个节点代表一个地点,每个节点有一个守卫的代价。我们希望以最低的代价在树的节点上放置守卫,使得整棵树的所有节点都被监控。可以通过三种方式覆盖一个节点: 由父节点监控。由子节点监控。自己…...

五、SpringBoot3实战(1)

一、SpringBoot3介绍 1.1 SpringBoot3简介 SpringBoot版本:3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.introducing-spring-boot 到目前为止,你已经学习了多种配置Spring程序的方式…...

练习LabVIEW第三十三题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十三题: 用labview编写一个判断素数的程序 开始编写: LabVIEW判断素数,首先要搞…...

如何在服务器端对PDF和图像进行OCR处理

介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库,而是一个用C语言编写的OCR神器,能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具,而Tesseract就像是给了我一把…...

Windows 下实验视频降噪算法 MeshFlow 详细教程

MeshFlow视频降噪算法 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (m…...

Python入门:如何正确的控制Python异步并发量(制并发量的关键技巧与易错点解析)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 异步并发量控制 📒📝 Python异步并发简介📝 为什么要限制并发量🎈 资源管理🎈 服务稳定性📝 新手容易犯的错误🎈 忽略并发量限制🎈 错误设置并发量📝 设置并发量要注意的事情🎈 了解任务类型🎈 考虑系统资…...

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件,用于创建复选框,允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类,因此继承了按钮的特性。它表示一个复选框,用户可以通过…...

PAT甲级-1041 Be Unique

题目 题目大意 从一组数字中选出第一个唯一出现的数,输出该数。如果没有,则输出None。 思路 哈希的思想,将数值作为索引,对应该数值出现的次数,然后遍历数组即可。 注意第一个数字是指数字的个数,不是数…...

【jvm】如何设置堆内存大小

目录 1. 使用命令行参数设置2. idea中设置3. 注意事项 1. 使用命令行参数设置 1.在Java命令后添加-Xms和-Xmx参数。2.-Xms参数用于设置JVM的初始堆内存大小,等价于-XX:InitialHeapSize。3.-Xmx参数用于设置JVM的最大堆内存大小,等价于-XX:MaxHeapSize。…...

kernel源码分析 do_msgsnd read_msg

笔者分析的源码是v 5.11.22 链接:msg.c - ipc/msg.c - Linux source code v5.11.22 - Bootlin do_msgsnd static long do_msgsnd(int msqid, long mtype, void __user *mtext,size_t msgsz, int msgflg) {struct msg_queue *msq;struct msg_msg *msg;int err;str…...

掌握 CTE 技巧,实现连续日期和月份的 SQL 报表统计

在 SQL 查询中,报表统计往往涉及到特定时间段内的数据汇总,如每日、每月的销售数据等。然而,面对缺少数据的日期或月份,传统 SQL 查询可能会直接跳过这些日期,使得输出的报表在视觉上并不连续。本文将展示如何利用 CTE…...

【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中

1 问题描述 如图:我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01:先选中你需要打印的部分,找到【页面】->【打印区域】->【设置打印区域】 Step02:先选中一行,找到【插入分页符】 Step0…...

Maven讲解从基础到高级配置与实践

一、基础认知 1.1 Maven 的主要作用 Maven 主要是用来管理 Java 项目构建流程的工具,包括以下几个方面: 依赖管理:通过 POM.xml 文件管理项目的外部依赖库,不同版本的依赖包可以通过 Maven 中央仓库自动下载,减少了…...

Vue3组件式父子传值

下面是使用 <script setup> 语法的 Vue 3 组件之间传值的示例。 示例 1:使用 Props 和 Emits 父组件 <template><div><h1>父组件</h1><ChildComponent :message="parentMessage" @reply="handleReply" /><p>…...

网页自动化测试和爬虫:Selenium库入门与进阶

网页自动化测试和爬虫&#xff1a;Selenium库入门与进阶 在现代Web开发和数据分析中&#xff0c;自动化测试和数据采集成为了开发流程中的重要部分。Python 的 Selenium 库是一种强大的工具&#xff0c;不仅用于网页自动化测试&#xff0c;也在网页爬虫中得到了广泛的应用。本…...

Cells 单元

Goto Data Grid 数据网格 Cells 单元 Content Alignment 内容对齐 显示数值的数据网格单元格会将其内容向右对齐。显示其他类型数据的单元格将其内容向左排列。若要更改单元格内容对齐方式&#xff0c;请处理 ColumnView.RowCellDefaultAlignment 事件。 Selection Modes 选…...

Shermie-proxy:基于Node.js的脚本化HTTP/HTTPS代理调试工具实战指南

1. 项目概述与核心价值最近在折腾一些本地开发环境下的网络请求调试和抓包&#xff0c;发现一个挺有意思的开源项目kxg3030/shermie-proxy。这本质上是一个基于 Node.js 实现的 HTTP/HTTPS 代理服务器&#xff0c;但它的定位非常清晰&#xff1a;专为开发者本地调试和网络请求分…...

YOLOv7训练VisDrone数据集避坑指南:标签转换、类别映射与路径配置详解

YOLOv7实战&#xff1a;VisDrone数据集训练全流程精解与疑难排查 1. 理解VisDrone数据集特性与YOLO格式差异 VisDrone作为无人机视角下的目标检测基准数据集&#xff0c;其标注格式与YOLOv7的预期输入存在本质区别。原始标注文件&#xff08;annotations/*.txt&#xff09;采用…...

如何在10分钟内搭建自己的游戏串流服务器:Sunshine开源游戏串流完整教程

如何在10分钟内搭建自己的游戏串流服务器&#xff1a;Sunshine开源游戏串流完整教程 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想在任何设备上玩PC游戏吗&#xff1f;Sunshin…...

一键封装成EXE!让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案

一键封装成EXE&#xff01;让Windows命令行像Linux一样直接敲‘binwalk’的懒人方案 每次打开命令行都要先cd到Python的Scripts目录才能使用binwalk&#xff0c;这种操作对于效率至上的开发者来说简直是时间杀手。本文将带你用PyInstaller打造一个开箱即用的binwalk.exe&#…...

HPM6750 CAN FD实战:从波特率配置到高效收发,避坑指南

1. 项目概述&#xff1a;从经典CAN到CAN FD的实战入门作为一名长期在嵌入式领域摸爬滚打的开发者&#xff0c;我深知现场总线技术&#xff0c;尤其是CAN总线&#xff0c;在工业控制、汽车电子等领域的核心地位。随着数据吞吐量需求的激增&#xff0c;经典CAN的1Mbps带宽逐渐捉襟…...

如何快速上手ESP32物联网开发:Arduino-ESP32终极入门指南

如何快速上手ESP32物联网开发&#xff1a;Arduino-ESP32终极入门指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 想要开始ESP32物联网开发却不知从何入手&#xff1f;…...

DLSS Swapper终极指南:一键切换游戏超采样版本,免费提升帧率30%+

DLSS Swapper终极指南&#xff1a;一键切换游戏超采样版本&#xff0c;免费提升帧率30% 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾羡慕别人在《赛博朋克2077》里享受丝滑流畅的画面&#xff0c;而你的游戏…...

对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值 在开发依赖大模型能力的应用时&#xff0c;服务的连续性与稳定性是保障用…...

怎样免费让老Mac重获新生:OpenCore Legacy Patcher专业教程

怎样免费让老Mac重获新生&#xff1a;OpenCore Legacy Patcher专业教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 想让你的旧Mac重新焕发活力吗&#xf…...

VectorDBBench:向量数据库性能基准测试工具详解与实战

1. 项目概述&#xff1a;向量数据库性能测试的“瑞士军刀”如果你正在评估或使用向量数据库&#xff0c;那么你一定遇到过这个灵魂拷问&#xff1a;“这么多产品&#xff0c;到底哪个最适合我的场景&#xff1f;”是选名声在外的老牌劲旅&#xff0c;还是选后起之秀的专精选手&…...