【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)

article/2025/10/6 3:36:58

文章目录

  • 1. 数据合并
    • 1.1 merge()合并
    • 1.2 concat()合并
    • 1.3 combine()合并
  • 2. 数据清洗
    • 2.1 缺失值
    • 2.2 重复值
    • 2.3 内容与格式清洗


1. 数据合并

实际应用中,需要分析的数据可能来自不同的数据集,因此在开始数据分析之前,需要先将不同的数据集合并。
pandas中提供了三种不同的数据合并方式:

  1. Pandas.merge():数据库方式的数据连接,可根据一个或多个键,将不同DataFrame对象的行连接起来;
  2. Pandas.concat():轴向数据连接,沿着一条轴,将多个DataFrame对象堆叠到一起;
  3. Pandas.combine():用一个DataFrame对象中的数据填充另一个DataFrame对象中的缺失数据。

1.1 merge()合并

pd.merge(left,right,[参数列表])

参数说明
left参与合并的左侧DataFrame对象,必填
right参与合并的右侧DataFrame对象,必填
how连接方式,“inner”、“outer”、“left”、“right”其中之一,默认为“inner”
on用于连接的列名(或列名列表);未指定改参数时,为左右数据集的公共列
left_on左侧DataFrame对象中用于连接的键
right_on右侧DataFrame对象中用于连接的键
left_index布尔型,是否将左侧DataFrame对象的行索引用作连接键
right_index布尔型,是否将右侧DataFrame对象的行索引用作连接键
sort是否根据连接键对合并后的数据排序,默认为True
suffixes字符串值元组,用于追加到重叠列名的末尾,默认为‘_x’和‘_y’

inner:内连接,连接两个DataFrame对象键值的交集的行
outer:外连接,连接两个DataFrame对象键值的并集的行
left:左链接,取出左侧DataFrame对象的全部行,连接右侧DataFrame对象键值匹配的行
right:右链接,取出右侧DataFrame对象的全部行,连接左侧DataFrame对象键值匹配的行

1.2 concat()合并

pd.concat(objs,axis,[参数列表])

参数说明
objs需要连接的对象,如[df1, df2]
axis连接的轴,默认为0;axis=0,按行堆叠;axis=1,按列堆叠
join默认为“outer”,outer为并集/inner为交集
ignore_indexignore_index 忽略需要连接的frame本身的index,当原本的index没有特别意义的时候可以使用
join_axesIndex对象列表,用于其他n-1轴的特定索引,而不是执行内部/外部设置逻辑
keys可以给每个需要连接的df一个label
levels序列列表,默认值无;用于构建MultiIndex的特定级别(唯一值)
nameslist,default无,结果层次索引中的级别的名称
verify_integrityboolean,default False;检查新连接的轴是否包含重复项
copyboolean,default True

1.3 combine()合并

  • df1.combine_first(df2)
    专门针对df1中的空值进行处理。
    当行、列索引相同时:用df2数据集来填充df1中的缺失值
    当行、列索引不同时:结果中的列是两个数据集列的并集,结果中的行是两个数据集行的并集,并用df2的对应值填充df1中的NA值
    在这里插入图片描述

  • df.combine(other, func, fill_value=None, overwrite=True)
    基于传递的函数执行与另一个DataFrame的逐列组合。
    使用func将DataFrame与其他 DataFrame 组合到按元素组合的列。生成的DataFrame的行索引和列索引将是两者的并集。

参数说明
otherDataFrame,要按列合并的DataFrame
func将两个系列作为输入并返回一个Series或一个标量的函数,用于逐列合并两个数据帧
fill_value标量值,默认None;在将任何列传递给合并函数之前填充NaN的值
overwriteboolean,默认为True;如果为true,列自我不存在在其他将与NaN的覆盖
# combine实现combine_first的逻辑
import pandas as pd
df = pd.DataFrame({"A": ["001", None, "003", None, "005"],"B": ["1", "2", "3", "4", "5"]})
df["A"] = df["A"].combine(df["B"], lambda a, b: a if pd.notna(a) else b)

2. 数据清洗

2.1 缺失值

1. 识别缺失值

  • df.isnull()
    判断dataframe每行每列的元素是否为缺失值,分别用False和True表示
  • df.isnull().any() && df.isnull().any(1)
    查看所有列、行是否缺失值
  • df.isnull().all() && df.isnull().all(1)
    查看所有列、行是否全部为缺失值

2. 处理缺失值

  • 滤除缺失值
    df.dropna(how, axis, thresh, inplace)
参数说明
how取值为any或all,how=‘all’值丢弃全部NA的行(列)
axis轴向参数,默认为0;axis=0,丢弃行数据;axis=1,丢弃列数据
thresh保留部分观测数据,例如thresh=3,则当一行(列)有3个或以上非NA值才保留
inplace默认为False;inplace=True表示修改调用者而不产生副本
  • 填充缺失值
    df.fillna()
参数说明
value用于填充缺失值的标量值或字典对象
method用于填充缺失值的方法。method=‘ffill’,向前填充;method=‘bfill’,向后填充。也可以使用平均值或中位数等统计学方法,如method=df.mean()
axis待填充的轴,默认axis=0,按列填充
inplace默认为False;inplace=True表示修改调用者而不产生副本

注:不同列的缺失值用不同的数值来填充,需要构造{列索引名:值}形式的字典对象作为参数。

#把体重的缺失值用该列的均值填充,心率缺失值用默认值75填充
patient_data.fillna({'体重':patient_data['体重'].mean(),'心率':75}, inplace=True)

2.2 重复值

1. 查看重复值
df.duplicated()
查看DataFrame对象df中是否有重复行,返回一个布尔型的Series

2. 删除重复值
df.drop_duplicates()
删除df中重复的数据行,结果中默认保留第一个出现的值组合,传入take_last=True则保留最后一个。

注:上面的两个方法会默认判断全部列,也可以对部分列进行重复项判断或删除,只需传入列名或列名的列表。

df.drop_duplicates(['column_a'])

2.3 内容与格式清洗

1. replace数据替换
df.replace(to_replace,value,[参数列表])

参数说明
to_replace要替换掉的值
value替换后的新值
inplace是否修改原始数据,默认为False

如果一次需要修改多个值,则可以传入一个列表和要替换的值:

df.replace([270,1400],np.nan)   #把270,1400 均替换成NaN

对不同的值进行不同的替换,传入一个替换关系组成的列表或字典:

df.replace({'U.S.A.':'USA','U.K.':'UK'})

2. iterrows()迭代器遍历
df.iterrows()
iterrows()返回值为元组(index,row)

# 将单位为cm的身高单位统一为m
for index,row in patient_data[rows_with_cm].iterrows():  #使用迭代器height =float(row['身高'][:-2])/100  #身高转换为以m为单位patient_data.at[i,'身高(m)'] = '{}'.format(round(height,2))

http://chatgpt.dhexx.cn/article/VsnkIB64.shtml

相关文章

Gradle 入门

1、Gradle 入门 1.1 Gradle 简介 Gradle 是一款 Google 推出的基于JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性 依赖管理、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言(例如:java、gro…

Gradle【扫盲】之简易使用教程

官网地址 https://gradle.org/版本选择 如果使用的是idea,可以在idea的plug目录下查看支持的gradle的版本: 进入目录: 那我们到官网下载对应版本的gradle即可 Gradle下载及配置 进入官网,查看发行版本 选择对应的安装包 b…

Linux 安装gradle完整教程

Linux 安装gradle 1.下载gradle https://gradle.org/install/ 选择版本下载 点击下载 也可以在这里下载历史版本 https://services.gradle.org/distributions/ 2.将包上传到服务器,我这里下载的包是6.7的你们可以下载各自需要的版本 zip包解压 unzip gradle-8.…

gradle快速入门

1.Gradle 入门 1.1 Gradle 简介 Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等…

Gradle下载安装教程

前言 1.gradle和maven一样都是用来构建java程序的,maven2004年开始兴起,gradle2012年开始诞生,既然已经有了maven这么成熟的构建工具为什么还有gradle的诞生呢,因为gradle有很多地方比maven做的更好,例如gradle采用gro…

Gradle 15分钟入门教程

1-Gradle入门介绍 在阅读或实践本文中的实例前,必须首先确保已将Gradle插件安装到Eclipse中。如果没有,可以点击下面的链接查看Gradle安装说明: - http://www.yiibai.com/gradle/how-install-gradle-windows.html 本教程的目标: …

gradle安装与入门

1. Gradle安装(本地也可不安装,不安装gradle配置选择gradle wrapper) 下载地址:http://services.gradle.org/distributions/ 下载你所需要对应的版本,gradle-4.6.1-bin.zip 下载后解压到你想要的目录 设置环境变量 新建系统变量&…

Android—Gradle教程(一)

前言 在前几篇中,讲解了Groovy的基础语法,学习新语法过程总是枯燥的,但为了更好的掌握Gradle,那就必须经过该过程。当然从这一篇将会从零基础开始,开展对Gradle的讲解。 1. 掌握Gradle基础 1.1 环境配置 去官网下载…

Gradle使用教程

前言 相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服: Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文…

gradle入门简介以及安装

一、简介 java作为一门世界级主流编程语言,有一款高效易用的项目自动化构建工具是java开发者共同追求的心愿和目标。先是2000年Ant,后有2004年Maven两个工具的诞生,都在java市场上取得了巨大的成功。但是二者都有一定的不足和局限性。 2012年…

【构建工具】Gradle中文教程

文章目录 Gradle 简介Gradle 概述基于声明的构建和基于约定的构建为以依赖为基础的编程方式提供语言支持构建结构化深度 APIGradle 的扩展多项目构建多种方式管理依赖Gradle 是第一个构建集成工具易于移植GroovyThe Gradle wrapper自由和开源 为什么使用 Groovy? Gradle 安装先…

Gradle 入门教程(一):Gradle是什么

这是一篇Gradle的入门教程 一、 Gradle是什么 1.1 构建工具 要解释Gradle是什么,首先要搞清楚一个名词——构建工具(Build Tool)。 构建工具,顾名思义就是用于构建(Build)的工具,构建包括编…

Gradle 的下载安装教程

Gradle 8.0.1 下载安装教程 笔者的环境: Java 17.0.1 Gradle 8.0.1 Windows 10 教育版 64位 在继续阅读本教程之前,需要先完成 JDK 的安装。JDK 需要选择 8 及以上的版本。关于 JDK 的安装,可见笔者的另一篇博客: Java 的下载…

Gradle初级使用教程

一.Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。 二.为什么使用Gradle Gra…

Gradle 简易入门教程

作者: Yann 来源:原力注入 Gradle 是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于 Groovy(现在也支持 Kotlin)的内部领域特定语言。 Gradle特点 Gradle是很成熟的技术,可…

Gradle的详细安装配置及使用教程

Gradle的详细安装配置及使用教程 Gradle的安装 到Gradle官网,官网地址:https://gradle.org/releases/。下载对应的版本,本文安装的是 4.3.1 版本。 下载完成后解压 环境配置 配置环境变量,新建名为 GRADLE_HOME 值为你的 Gr…

Gradle的使用教程

一、相关介绍 Gradle是一个好用的构建工具 ,使用它的原因是: 配置相关依赖代码量少,不会像maven一样xml过多 打包编译测试发布都有,而且使用起来方便 利用自定义的任务可以完成自己想要的功能 二、安装 下载地址http://services…

Gradle最详细教程,关于Gradle,学习这些就够了.......

目录 Gradle的简介 Groovy语言的学习 Groovy环境变量的配置 第一个Groovy项目 变量的定义 字符串的定义 字符串的常用方法 流程控制 switch for 闭包 基本技能 闭包的使用场景 闭包中的变量 列表 定义方式 添加和删除 排序和查找 映射map map的操作 查找 …

Gradle简要教程

1 什么是Gradle 最初Android的开发是用Eclipse进行,Eclipse之所以能够用来开发Android项目,是因为一个叫做ADT(Android Developer Tools)的东西,使用ADT,我们只需要写好代码,然后直接在Eclip…

一、Gradle入门

文章目录 一、Gradle入门1.1 Gradle 简介1.2 常见的项目构建工具1.3 Gradle 安装1.3.1 Gradle 安装说明1.3.2 安装 JDK1.3.3 下载并解压到指定目录1.3.4 配置环境变量1.3.5 检测是否安装成功 1.4 Gradle 项目目录结构1.5 Gradle 创建第一个项目1.5.1 Gradle 中的常用命令1.5.2 …