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

【数据评估与清洗】对数据结构和内容进行清洗

评估数据

  • 结构方面
    • 需要清理:乱数据
    • 不需要清理:整洁数据
      • 每列是一个变量
      • 每行是一个观察值
      • 每个单元格是一个值
  • 内容方面
    • 需要清理:脏数据
      • 丢失数据
      • 重复数据
      • 不一致数据
      • 无效或错误数据
    • 不需要清理:干净数据
# 获取整体信息
df.info()
# 获取开头/结尾/随机数据来评估
df.head(10)
df.tail(10)
df.sample(10)
# 调整展示上限
pd.set_option("display.max_columns", 150)
pd.set_option("display.max_colwidth", 500)# 评估丢失数据
# 返回布尔值组成的Series或DataFrame
scores["考试2"].isnull()
df.isnull()
# 获取空缺值数量
scores["考试2"].isnull().sum()
df.isnull().sum()
# 提取丢失数据的行
scores[scores["考试2"].isnull()]# 评估重复数据
students["学号"].duplicated()
students.duplicated(subset=["学号","性别"])# 评估不一致数据
students["班级"].value_counts()# 评估无效/错误数据
# 排序
students["身高"].sort_values()
students.describe()

清洗数据

  • 结构方面:更改为整洁数据结构

  • 内容方面

    • 丢失数据
      • 人工填入缺失值
      • 不处理缺失值
      • 把有缺失值的行删除
      • 用例如平均数等填充代替缺失值
    • 重复数据:删除
    • 不一致数据:统一
    • 无效数据:删除或替换
    • 数据类型转换
  • 实际操作

# 重命名索引和列名(原变量不变,需要重新赋值或可选参数inplace=True
df1.rename(index={"2_":"2", "_5":"5", "6*":"6"})
df1.rename(columns={"2_":"2", "_5":"5", "6*":"6"})
df2.rename(index=某函数/方法)
df2.rename(columns=str.upper) # 大写
# 更多Series相关方法:https://pandas.pydata.org/docs/reference/api/pandas.Series.html
# 更多DataFrame相关方法:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html# 重设索引
# 将列值作为索引
df3.set_index("Salesperson")
# 还原
df3.reset_index()# 对索引和列名重新排序(原变量不变,需要重新赋值或可选参数inplace=True
df4.sort_index()# 对数据进行转置
df1 = df1.T
# 对列进行拆分
df2[["人口", "面积"]] = df2["人口密度"].str.split("/", expand=True)
df2 = df2.drop("人口密度", axis=1)
# 把不同列合并成一列
df3["姓].str.cat(df3[""], sep="-")
# 把宽数据转换成长数据(列名变成列值)
df4 = pf.melt(df4, id_vars=['不变的列名'], var_name='列名所在列列名', value_name='原列值所在列列名')
# 对行进行拆分
df5.explode("课程列表")
# 删除行,删除列(原变量不变,需要重新赋值或可选参数inplace=True
df6.drop(2)
df6.drop(["列","lie"],axis=1)# 对整列缺失值进行填充(索引定位)
df1["国家"] = "中国"
# 对某个缺失值进行填充
df2.loc["003":"004", "销售额"] = 800
# 自动找到缺失值进行填充
df4["B"].fillna(df["B"].mean())
df4.fillna(0)
df4.fillna({'A': 0, 'B': 10}) # 不同列可指定替换值
# 删除存在缺失值的行(原变量不变,需要重新赋值或可选参数inplace=True
df5.dropna()
df5.dropna(subset=["工资"]) # 控制范围
# 删除重复数据(原变量不变,需要重新赋值或可选参数inplace=True
df6["姓名"].drop_duplicates()
df6.drop_duplicates(subset=['a','b'], keep='last') #同时重复,保留最后
# 对值进行替换(不一致数据)(原变量不变,需要重新赋值或可选参数inplace=True
df7.replace(["hnu", "湖大"], "湖南大学")
df7.replace("hnu": "湖南大学")
# 对值的类型进行转换
# 分类数据建议转换为category,有利于减小内存,让Pandas自动选用合适的统计方法或图表类型
s1=pd.Series(["1","2","3"])
s1.astype("category")

保存数据(覆盖原始数据)

df1.to_csv("cleaned_sales_data.csv")
# 读取时会将索引作为第一列,需要更改列名并将其重新设置为索引# 写入时忽略索引(索引无关键信息)
df1.to_csv("cleaned_sales_data2.csv", index=False)

相关文章:

【数据评估与清洗】对数据结构和内容进行清洗

评估数据 结构方面 需要清理:乱数据不需要清理:整洁数据 每列是一个变量每行是一个观察值每个单元格是一个值 内容方面 需要清理:脏数据 丢失数据重复数据不一致数据无效或错误数据 不需要清理:干净数据 # 获取整体信息 df.in…...

机器学习和深度学习的区别

1. 基本概念 1.1 机器学习定义 机器学习是人工智能的一个核心分支,它赋予计算机系统无需明确编程即可学习和改进的能力。通过分析大量数据,机器学习算法能够识别数据中的模式和趋势,从而做出预测或决策。这种方法通常涉及统计模型和优化技术…...

UE虚幻引擎云渲染汽车动画的优势!

在汽车广告和动画制作领域,虚幻引擎(UE)结合云渲染技术正掀起一场技术革命。这项技术以其高性能、成本效益和灵活性,为创作者提供了强大的工具,以实现更加逼真和高效的汽车动画制作。 一、为什么选择UE虚幻引擎制作汽车…...

Teams集成-会议侧边栏应用开发-实时转写

Teams虽然提供了转写的接口,但是不是实时的,即便使用订阅事件也不是实时的,为了达到实时转写的效果,使用recall.ai的转录和assembly_ai的转写实现。 前提:除Teams会议侧边栏应用开发-会议转写-CSDN博客的基本要求外&a…...

归并排序,外排序,计数排序(非比较排序)

归并排序:(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序…...

使用离火插件yoloV8数据标注,模型训练

1. 启动 2.相关配置 2.1 data.yaml path: D:/yolo-tool/yaunshen-yolov8/YOLOv8ys/YOLOv8-CUDA10.2/1/datasets/ceshi001 train: images val: images names: [蔡徐坤,篮球] 2.2 cfg.yaml # Ultralytics YOLOv8, GPL-3.0 license # Default training settings and hyp…...

JavaScript 学习

一、输出 为方便调试可以输出内容&#xff0c;但是用户是看不到的。要在开发者模式中看。 console . log ( "Hello" )&#xff1b; 二、外部文件引用 可以直接在html中写JS <head> <meta charset"utf-8"> <script> console.log("he…...

【算法】分治:归并之 912.排序数组(medium)

系列专栏 双指针 模拟算法 分治思想 目录 1、题目链接 2、题目介绍 3、解法 解决方案选择 解题步骤 4、代码 1、题目链接 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 2、题目介绍 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 …...

Cocos 3.8.3 实现外描边效果(逃课玩法)

本来想着用Cocos 的Shader Graph照搬Unity的思路来加外描边&#xff0c;发现不行&#xff0c;然后我就想弄两个物体不就行了吗&#xff0c;一个是放大的版本&#xff0c;再放大的版本上加一个材质&#xff0c;这个材质面剔除选择前面的面剔除就行了&#xff0c;果不其然还真行。…...

著名建筑物检测与识别系统源码分享

著名建筑物检测与识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…...

使用php生成图片

可以用这方法生成图片 水印 字体可以在资源绑定下载&#xff0c;如果字体路径不对&#xff0c;则不会输出文字图片 public function generateImage($text,$id) { header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:0…...

C++ 数据类型分类

在C中&#xff0c;数据类型可以大致分为内置类型&#xff08;Built-in Types&#xff09;、标准库类型&#xff08;Standard Library Types&#xff09;和自定义类型&#xff08;User-Defined Types&#xff09;三大类。 内置类型&#xff08;Built-in Types&#xff09; 内置…...

java安装更新jdk11后设置环境JAVA_HOME

背景,已经安装成功,但是环境还是java1.8 java -version openjdk version "11.0.23" 2024-04-16 LTS OpenJDK Runtime Environment (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.23+9-LTS) OpenJDK 64-Bit Server VM (Red_Hat-11.0.23.0.9-2.el7_9) (build 11.0.…...

Java.动态代理

1.创建一个接口 package Mydynamicproxy1;public interface Star {public abstract String sing(String str);public abstract void dance(String str); }2.创建一个BigStar类&#xff0c;要实现Star这个接口 package Mydynamicproxy1;public class BigStar implements Star{…...

SpringBoot自定义异常

前言 在前后端开发中&#xff0c;后端接口返回的数据都是JSON格式的&#xff0c;但是后端可能会出现一些可以未知从异常&#xff0c;在后端抛出这些异常的时候&#xff0c;也需要返回相同格式的JSON数据&#xff0c;这时候就需要我们设置全局异常处理器。在后端开发中&#xf…...

华为源NAT技术与目的NAT技术

1&#xff09;源NAT对报文源地址进行转换&#xff0c;分为NAT NO-PAT&#xff0c;NAPT,EASY-IP,三元组NAT&#xff1b; &#xff08;1&#xff09;NAT NO-PAT原理&#xff1a; no-port address translation:非端口地址转换&#xff1a;只转换地址&#xff0c;不转换端口&…...

人工智能与机器学习原理精解【25】

文章目录 正则化概述一、正则化的种类二、正则化的定义三、正则化的计算四、正则化的性质五、正则化的例子 公式与计算一、正则化的种类Dropout正则化一、基本思想二、实现方法三、作用机制四、使用注意事项五、总结Dropout正则化的例子和公式。一、Dropout正则化的例子二、Dro…...

一篇文章讲清楚synchronized关键字的作用及原理

概述 在应用Sychronized关键字时需要把握如下注意点&#xff1a; 一把锁只能同时被一个线程获取&#xff0c;没有获得锁的线程只能等待&#xff1b; 每个实例都对应有自己的一把锁(this),不同实例之间互不影响&#xff1b;例外&#xff1a;锁对象是*.class以及synchronized修…...

深度学习模型之BERT的24个小模型源码与预训练紧凑模型的重要性

原始信息 论文&#xff1a; Well-Read Students Learn Better: On the Importance of Pre-training Compact Models作者&#xff1a;Iulia Turc, Ming-Wei Chang, Kenton Lee, Kristina Toutanova地址&#xff1a;arxiv.org/pdf/1908.08…中文&#xff1a;阅读良好的学生学得更…...

【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

【HarmonyOS】深入理解Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 前言 之前就Observed和ObjectLink写过一篇讲解博客【HarmonyOS】 多层嵌套对象通过ObjectLink和Observed实现渲染更新处理&#xff01; 其中就Observe监听类的使用&#xff0c;Object…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...