深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】

深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南

Pandas是Python中最强大且广泛使用的数据处理库之一,提供了丰富的函数和工具,以便更轻松地处理和分析数据。在本文中,我们将深入探讨Pandas中一系列数据连接、合并、加入、添加、重构函数,包括merge、concat、join、append、stack和unstack。通过理解这些功能,你将能够更灵活地处理和转换数据,提高数据分析和清理的效率。

image-20240211142931700

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’列连接了两个数据框。输出将是一个包含共同键的新数据框。

image-20240211142352520

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参数来沿着列轴连接。

image-20240211142441586

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函数

stackunstack函数用于在行和列之间进行数据重构。以下是一个示例:

# 创建一个多层索引的数据框
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. stackunstack 函数

stackunstack 函数是用于在行和列之间进行数据重构的强大工具。下面是一个例子:

# 创建一个多层索引的数据框
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函数将行索引的层次结构转移到列,使数据框更为直观。

image-20240211142522978

7. set_indexreset_index 函数

set_indexreset_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’。这样的数据结构使得我们可以更方便地进行多层次的数据分析和操作。

image-20240211142616907

10. 处理缺失数据

数据中经常会包含缺失值,而 Pandas 提供了一系列处理缺失数据的方法,例如 dropnafillna

# 创建一个包含缺失值的数据框
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 中一系列重要的数据连接、合并、加入、添加、重构函数,包括 mergeconcatjoinappendstackunstackset_indexreset_index 等。这些功能为数据科学家和分析师提供了强大的工具,使其能够更灵活地处理和分析各种数据。

我们学习了基本的连接和合并操作,了解了如何使用不同的连接方式以及处理多键连接。同时,介绍了分层索引的运用,使数据结构更为灵活。

此外,我们还探讨了处理缺失数据的方法,包括使用 dropna 删除缺失值所在的行和使用 fillna 填充缺失值,从而在数据清理和准备阶段更加得心应手。

通过不断练习和应用这些知识,你将更加熟练地处理不同类型的数据,并能够更高效地进行数据分析和挖掘。Pandas 提供的这些功能和技巧,无疑为数据科学领域的从业者提供了强大的支持,希望本文能够为你在数据处理的学习和实践中提供有益的指导。祝你在数据科学的旅程中取得更大的成功!

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

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

相关文章

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断,其实就是基于时间分片的人眼最高能识别的帧数不超过30帧,电影的帧数差不多是在24浏览器的帧率一般来说是60帧,也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、QRCode组件 用于显示单个二维码的组件。 子组件 无。 接口 QRCode(value: st…

python-分享篇-GUI界面开发-PyQt5-对QListWidget列表进行数据绑定

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file bindlist.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 对QListWidget列表进行数据绑定from PyQt5 import QtCore, QtG…

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…

华为云ModelBox实战:体感小游戏应用实操

目录 一、VsCode插件注册ModelBox设备二、Windows SDK安装1.安装Git for Windows2.下载ModelBox SDK3.相关插件安装 三、体感小游戏应用开发1.技能模板使用2.AI应用示例3.体感小游戏体验 参与华为云活动【HCSD】ModelBox实战营邀请活动,呼朋唤友学AIoT,完…

flask+python企业产品订单管理系统938re

在设计中采用“自下而上”的思想,在创新型产品提前购模块实现了个人中心、个体管理、发布企业管理、投资企业管理、项目分类管理、产品项目管理、个体投资管理、企业投资管理、个体订单管理、企业订单管理、系统管理等的功能性进行操作。最终,对基本系统…

Java学习-常用API(二)

Math类及其常用API: 演示: StringBuilder的认识及其常用方法: StringBuilder支持链式编程 StringBuilder sbnew StringBuilder();sb.append(12).append.(“itHeima”&am…

synchronized关键字以及底层实现

目录 基本使用 底层实现 synchronized锁升级 对象的内存结构 ⅰ. 对象头 1. ① 运行时元数据 (Mark Word) (占64位) a. 哈希值 (HashCode) b. GC分代年龄 c. 锁状态标记 2. ② 类型指针: (Klass Point) (占 32位) ⅱ. 实例数据 ⅲ. 对齐填充 Moniter重量级锁 轻量…

[ai笔记3] ai春晚观后感-谈谈ai与艺术

欢迎来到文思源想的ai空间,这是技术老兵重学ai以及成长思考的第3篇分享! 今天我们不聊技术,只聊感受! 1 关于ai春晚 期待许久的ai春晚,但是等初一晚上观看的时候,或多或少还是有些失望。 首先是观看人数…

前端工程化面试题 | 06.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【二叉树】构建销毁二叉树

目录 创建二叉树 整体思路 代码实现 图示理解​ 销毁二叉树 判断二叉树是否是完全二叉树&层序 整体思路 代码实现 图是理解 二叉树的性质 题目 创建二叉树 整体思路 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树遇到#就回退,返回…

浅谈路由器交换结构

一、路由器技术概述 路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议…

文章页的上下篇功能是否有必要?boke112百科取消上下篇功能

也不知道是从什么时候开始,我们很多站长的博客网站文章页都会在文末添加上“上一篇”和“下一篇”功能,目的是进行站内SEO优化和方便用户阅读上下篇文章。 boke112百科不管是以前使用的Three主题还是现在使用的YIA主题,刚开始的文章页都是有…

学习Android的第十天

目录 Android CheckBox 复选框 获得选中的 CheckBox 的值 自定义点击效果 改变文字与选择框的相对位置 修改文字与选择框的距离 Android ToggleButton 开关按钮 改变 ToggleButton 的状态和文本 Android Switch 开关 改变 Switch 的状态和文本 Android CheckBox 复选框…

腾讯云4核8G服务器可以用来干嘛?怎么收费?

腾讯云4核8G服务器适合做什么?搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以,腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM,轻量服务器和标准型CVM服务器性能是差不多的,轻…

sheng的学习笔记-docker部署springboot

部署文章目录:目录 docker部署,原理,命令,可以参考:docker原理图,部署,命令 目录 将springboot部署到docker中 遇到过的问题: pom配置 操作步骤 生成jar 构建镜像 查看镜像d…

CTFshow-WEB入门-信息搜集

web1(查看注释1) wp 右键查看源代码即可找到flag web2(查看注释2) wp 【CtrlU】快捷键查看源代码即可找到flag web3(抓包与重发包) wp 抓包后重新发包,在响应包中找到flag web4(robo…

物联网和工业4.0

在当今这个快速发展的技术时代,物联网(IoT)和工业4.0成为了推动全球进入新工业时代的两大驱动力。对于刚入行的人来说,深入理解这两个概念及其背后的技术原理,对于把握未来的职业机会至关重要。 物联网,简…

关于java的多线程初识

关于java的多线程初识 我们从今天开始,正式学习java的多线程,我们在前面的文章中学习到了java的基础, 但是距离我们工作实战还差的很远,我们学习好了基础,以后的文章会逐步的深入,去讲解各种前端框架&…

Flink从入门到实践(三):数据实时采集 - Flink MySQL CDC

文章目录 系列文章索引一、概述1、版本匹配2、导包 二、编码实现1、基本使用2、更多配置3、自定义序列化器4、Flink SQL方式 三、踩坑1、The MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match the configured timezone Asia/Shanghai. 参考资…