深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】
深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南
Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合并、加入、添加、重构函数,包括merge、concat、join、append、stack和unstack。通过理解这些功能,你将能够更灵活地处理和转换数据,提高数据分析和清理的效率。
1. merge函数
merge
函数用于将两个数据框基于一个或多个键进行连接。以下是一个简单的示例:
import pandas as pd# 创建两个数据框
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],'value': [5, 6, 7, 8]})# 使用merge进行连接
merged_df = pd.merge(df1, df2, on='key')print(merged_df)
在这个例子中,我们使用merge
函数基于’key’列连接了两个数据框。输出将是一个包含共同键的新数据框。
2. concat函数
concat
函数用于沿着指定轴连接多个数据框。以下是一个示例:
# 创建两个数据框
df1 = pd.DataFrame({'A': [1, 2],'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6],'B': [7, 8]})# 使用concat进行连接
concatenated_df = pd.concat([df1, df2])print(concatenated_df)
在这个例子中,我们使用concat
函数沿着默认的行轴连接了两个数据框。你还可以通过指定axis
参数来沿着列轴连接。
3. join函数
join
函数用于将两个数据框基于索引进行连接。以下是一个简单的例子:
# 创建两个数据框
df1 = pd.DataFrame({'value': [1, 2]}, index=['A', 'B'])
df2 = pd.DataFrame({'value': [3, 4]}, index=['B', 'C'])# 使用join进行连接
joined_df = df1.join(df2, how='inner')print(joined_df)
在这个例子中,我们使用join
函数将两个数据框基于索引进行了内连接(inner join)。
4. append函数
append
函数用于将一个数据框追加到另一个数据框的末尾。以下是一个例子:
# 创建两个数据框
df1 = pd.DataFrame({'A': [1, 2],'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6],'B': [7, 8]})# 使用append进行连接
appended_df = df1.append(df2)print(appended_df)
在这个例子中,我们使用append
函数将df2
追加到了df1
的末尾。
5. stack和unstack函数
stack
和unstack
函数用于在行和列之间进行数据重构。以下是一个示例:
# 创建一个多层索引的数据框
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]]
multi_index = pd.MultiIndex.from_arrays(arrays, names=('letters', 'numbers'))
df = pd.DataFrame({'value': [1, 2, 3, 4]}, index=multi_index)# 使用stack进行数据重构
stacked_df = df.stack()print(stacked_df)
在这个例子中,我们使用stack
函数将列标签的层次结构转移到行索引,创建了一个更紧凑的数据框。
6. stack
和 unstack
函数
stack
和 unstack
函数是用于在行和列之间进行数据重构的强大工具。下面是一个例子:
# 创建一个多层索引的数据框
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]]
multi_index = pd.MultiIndex.from_arrays(arrays, names=('letters', 'numbers'))
df = pd.DataFrame({'value': [1, 2, 3, 4]}, index=multi_index)# 使用unstack进行数据重构
unstacked_df = df.unstack()print(unstacked_df)
在这个例子中,我们使用unstack
函数将行索引的层次结构转移到列,使数据框更为直观。
7. set_index
和 reset_index
函数
set_index
和 reset_index
函数用于重新设置数据框的索引,有助于灵活地处理数据框的结构。
# 创建一个简单的数据框
df = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]})# 使用 set_index 将 'A' 列设置为新的索引
df_set_index = df.set_index('A')print(df_set_index)
在这个例子中,我们使用 set_index
将 ‘A’ 列设置为新的索引,这可以方便地基于该列进行数据检索。
# 使用 reset_index 重新设置索引
df_reset_index = df_set_index.reset_index()print(df_reset_index)
而 reset_index
则是用于将设置的新索引还原为默认整数索引。这在某些情况下很有用,特别是在进行一些索引操作后需要将数据框还原到初始状态。
8. pd.merge
的更高级用法
除了基本的连接操作,pd.merge
还提供了一些高级用法,如多键连接、不同连接方式等。
# 创建两个数据框
df1 = pd.DataFrame({'key1': ['A', 'B', 'C'],'key2': ['X', 'Y', 'Z'],'value': [1, 2, 3]})
df2 = pd.DataFrame({'key1': ['A', 'B', 'C'],'key2': ['X', 'Z', 'Y'],'value': [4, 5, 6]})# 多键连接
multikey_merge = pd.merge(df1, df2, on=['key1', 'key2'])print(multikey_merge)
在这个例子中,我们使用 pd.merge
进行多键连接,通过传递一个键的列表,实现更精确的匹配。
9. 分层索引的运用
分层索引是 Pandas 中一项重要的功能,通过它,你可以创建具有多层次的行或列索引,更灵活地组织和访问数据。
# 创建一个包含分层索引的数据框
data = {'value': [1, 2, 3, 4, 5, 6],'attribute': ['A', 'B', 'C', 'A', 'B', 'C']}
df_multiindex = pd.DataFrame(data, index=[['Group1', 'Group1', 'Group1', 'Group2', 'Group2', 'Group2'],['X', 'Y', 'Z', 'X', 'Y', 'Z']],columns=['value', 'attribute'])print(df_multiindex)
在这个例子中,我们创建了一个包含两层分层索引的数据框,其中第一层为 ‘Group1’ 和 ‘Group2’,第二层为 ‘X’、‘Y’ 和 ‘Z’。这样的数据结构使得我们可以更方便地进行多层次的数据分析和操作。
10. 处理缺失数据
数据中经常会包含缺失值,而 Pandas 提供了一系列处理缺失数据的方法,例如 dropna
和 fillna
。
# 创建一个包含缺失值的数据框
df_missing = pd.DataFrame({'A': [1, 2, np.nan, 4],'B': [5, np.nan, 7, 8]})# 使用 dropna 删除包含缺失值的行
df_cleaned = df_missing.dropna()print(df_cleaned)
在这个例子中,我们使用 dropna
删除包含缺失值的行。除此之外,你还可以使用 fillna
来填充缺失值,以便更好地保留数据。
总结:
通过本文,我们深入探讨了 Pandas 中一系列重要的数据连接、合并、加入、添加、重构函数,包括 merge
、concat
、join
、append
、stack
、unstack
、set_index
和 reset_index
等。这些功能为数据科学家和分析师提供了强大的工具,使其能够更灵活地处理和分析各种数据。
我们学习了基本的连接和合并操作,了解了如何使用不同的连接方式以及处理多键连接。同时,介绍了分层索引的运用,使数据结构更为灵活。
此外,我们还探讨了处理缺失数据的方法,包括使用 dropna
删除缺失值所在的行和使用 fillna
填充缺失值,从而在数据清理和准备阶段更加得心应手。
通过不断练习和应用这些知识,你将更加熟练地处理不同类型的数据,并能够更高效地进行数据分析和挖掘。Pandas 提供的这些功能和技巧,无疑为数据科学领域的从业者提供了强大的支持,希望本文能够为你在数据处理的学习和实践中提供有益的指导。祝你在数据科学的旅程中取得更大的成功!
相关文章:

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】
深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南 Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合…...

IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx‘
问题:IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx’ 解决方法: 使用快捷提示键 Alt Enter,选择 Go to SQL Resolution Scopes(转到SQL的解析范围)...

Python基于大数据的电影预测分析系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

【MATLAB】小波神经网络回归预测算法
有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波神经网络回归预测算法是一种利用小波变换和人工神经网络相结合的方法,用于解决回归预测问题。下面将详细介绍该算法的原理与方法: 小波变换: 小波变…...

最新Burp Suite入门讲解
Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和安全检测。 Burp Suite由Java语言编写,Java自身的跨平台性使我们能更方便地学习和使用这款软件。不像其他自动化测…...

【C++】模版初阶
目录 泛函编程 函数模版 概念 格式 原理 实例化 模版函数的匹配原则 类模板 定义格式 泛函编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, dou…...

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)
本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型,可以生成写实、原画、2.5D 等…...
GPT-4模型的创造力
超级的创造力是GPT-4等高级语言模型的重要特征之一。它们不仅能够精确地模拟和再现各类文本样式、结构和内容,而且在生成新的文本时,能够通过深度学习算法对海量训练数据中捕捉到的模式进行创新性的重组与拓展: 词汇创新:基于已学…...
没用的计算器
本次的项目仍然属于没用的模块,仅供娱乐,最后附有效果视频,如需要源代码可以私信或评论,本次还是使用vue来实现的,同样也可以修改为JS 一、HTML部分 <div class"con"><div class"calculator&q…...

基于 Python 的大数据的电信反诈骗系统
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

二、ClickHouse简介
ClickHouse简介 前言一、行式存储二、DBMS功能三、多样化引擎四、高吞吐写入能力五、数据分区与线程级并行六、场景七、特定版本 前言 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用 C 语言编写,主要…...
C++ 11新特性之并发
概述 随着计算机硬件的发展,多核处理器已经成为主流,对程序并发执行能力的需求日益增长。C 11标准引入了一套全面且强大的并发编程支持库,为开发者提供了一个安全、高效地利用多核CPU资源进行并行计算的新框架,极大地简化了多线程…...

jvm问题自查思路
本文聊一下最近处理了一些jvm的问题上,将这个排查和学习过程分享一下,看了很多资料,最终都会落地到几个工具的使用,本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。 一、文档 不仅知道了…...
任意IOS16系统iPad/Iphone开启台前调度
方法来自GitHub: GitHub - khanhduytran0/TrollPad: Troll SpringBoard into thinking its running on iPadOS 注意操作前iPad/iPhone上需要安装巨魔手机助手和Filza,关于这两个软件的安装自行百度方法。 备注一个巨魔手机助手的下载地址 Release TrollStar 1.2…...

LeetCode、452. 用最少数量的箭引爆气球【中等,贪心,区间问题】
文章目录 前言LeetCode、452. 用最少数量的箭引爆气球【中等,贪心,区间问题】题目链接与分类思路贪心,连续区间数量问题 资料获取 前言 博主介绍:✌目前全网粉丝2W,csdn博客专家、Java领域优质创作者,博客…...
洛谷C++简单题小练习day10—umi的函数
day10--umi的函数--2.13 习题概述 题目背景 umi 找到了一个神秘的函数 f。 题目描述 这个函数接受两个字符串 s1,s2。这些字符串只能由小写字母组成并且具有相同的长度。这个函数的输出是另一个长度与 s1,s2 相同的字符串 g。 g 的第 i 个字符等于 s1 的第 i 个字符和 s2…...

【Linux学习】线程互斥与同步
目录 二十.线程互斥 20.1 什么是线程互斥? 20.2 为什么需要线程互斥? 20.3 互斥锁mutex 20.4 互斥量的接口 20.4.1 互斥量初始 20.4.2 互斥量销毁 20.4.3 互斥量加锁 20.4.4 互斥量解锁 20.4.5 互斥量的基本原理 20.4.6 带上互斥锁后的抢票程序 20.5 死锁问题 死锁…...
前端开发:(三)CSS入门
1. 介绍CSS 1.1 什么是CSS CSS(Cascading Style Sheets)是一种用于描述文档样式和布局的样式表语言,用于美化和排版HTML和XML等标记语言的内容。 1.2 CSS的作用和优势 CSS的主要作用是控制网页的样式和布局,包括字体、颜色、间…...

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)
锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…...
寒假学习记录13:JS对象
目录 对象转数组 对象双值转数组 Object.entries() (转为二维数组)(属性的值和键) 对象右值转数组 Object.values() (属性的值) 对象左值转数组 Object.keys() (属性的键) 对象左值转…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...