数据分析必备:一步步教你如何用Pandas做数据分析(18)

1、Pandas 串联

Pandas 连接的操作实例
Pandas提供了各种功能,可以轻松地将Series,DataFrame和Panel对象组合在一起。

 pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False)

objs − 这是Series的序列或映射,DataFrame或Panel对象。
axis − {0,1,…},默认为0。这是要串联的轴。
join − {‘inner’,‘outer’},默认为’outer’。如何处理其他轴上的索引。外部为联合,内部为交叉。
ignore_index − 布尔值,默认为False。如果为True,则不要在串联轴上使用索引值。结果轴将标记为0,…,n-1。
join_axes − 这是索引对象的列表。用于其他(n-1)轴的特定索引,而不是执行内部/外部设置逻辑。

1.1、连接对象

该CONCAT函数执行所有沿轴线进行联接操作的重任。让我们创建不同的对象并进行串联。

 import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(pd.concat([one,two])))

运行结果

   Marks_scored     Name   subject_id
1             98     Alex         sub1
2             90      Amy         sub2
3             87    Allen         sub4
4             69    Alice         sub6
5             78   Ayoung         sub5
1             89    Billy         sub2
2             80    Brian         sub4
3             79     Bran         sub3
4             97    Bryce         sub6
5             88    Betty         sub5

假设我们想将特定的键与切碎的DataFrame的每个片段相关联。我们可以通过使用keys参数来做到这一点-

import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(pd.concat([one,two],keys=['x','y']))

运行结果

x  1  98    Alex    sub12  90    Amy     sub23  87    Allen   sub44  69    Alice   sub65  78    Ayoung  sub5
y  1  89    Billy   sub22  80    Brian   sub43  79    Bran    sub34  97    Bryce   sub65  88    Betty   sub5

结果的索引是重复的;每个索引重复。
如果结果对象必须遵循其自己的索引,则将ignore_index设置为True。

 import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(pd.concat([one,two],keys=['x','y'],ignore_index=True))

运行结果

 Marks_scored     Name    subject_id
0             98     Alex          sub1
1             90      Amy          sub2
2             87    Allen          sub4
3             69    Alice          sub6
4             78   Ayoung          sub5
5             89    Billy          sub2
6             80    Brian          sub4
7             79     Bran          sub3
8             97    Bryce          sub6
9             88    Betty          sub5

注意,索引完全更改,并且键也被覆盖。
如果需要沿axis = 1添加两个对象,则将添加新列。

import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(pd.concat([one,two],axis=1))

运行结果

   Marks_scored    Name  subject_id   Marks_scored    Name   subject_id
1           98      Alex      sub1         89         Billy         sub2
2           90       Amy      sub2         80         Brian         sub4
3           87     Allen      sub4         79          Bran         sub3
4           69     Alice      sub6         97         Bryce         sub6
5           78    Ayoung      sub5         88         Betty         sub5

1.2、使用append串联

Concat有用的快捷方式是Series和DataFrame上的append实例方法。这些方法实际上早于concat。它们沿着轴= 0连接,即索引-

 import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(one.append(two))

运行结果

 Marks_scored    Name  subject_id
1           98      Alex      sub1
2           90       Amy      sub2
3           87     Allen      sub4
4           69     Alice      sub6
5           78    Ayoung      sub5
1           89     Billy      sub2
2           80     Brian      sub4
3           79      Bran      sub3
4           97     Bryce      sub6
5           88     Betty      sub5

该附加功能可以采取多个对象,以及-

 import pandas as pdone = pd.DataFrame({'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],'subject_id':['sub1','sub2','sub4','sub6','sub5'],'Marks_scored':[98,90,87,69,78]},index=[1,2,3,4,5])two = pd.DataFrame({'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],'subject_id':['sub2','sub4','sub3','sub6','sub5'],'Marks_scored':[89,80,79,97,88]},index=[1,2,3,4,5])print(one.append([two,one,two]))

运行结果

  Marks_scored   Name    subject_id
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5
1           98     Alex          sub1
2           90      Amy          sub2
3           87    Allen          sub4
4           69    Alice          sub6
5           78   Ayoung          sub5
1           89    Billy          sub2
2           80    Brian          sub4
3           79     Bran          sub3
4           97    Bryce          sub6
5           88    Betty          sub5

1.3、时间序列

Pandas 提供了一个强大的工具来处理时间序列数据,特别是在金融领域。在处理时间序列数据时,我们经常遇到以下情况:
产生时间顺序
将时间序列转换为不同的频率
提供了一套相对紧凑且独立的工具来执行上述任务。
获取当前时间
datetime.now()为您提供当前日期和时间。

import pandas as pdprint(pd.datetime.now())

运行结果

2017-05-11 06:10:13.393147

1.4、创建一个时间戳

时间戳数据是将值与时间点相关联的时间序列数据的最基本类型。对于熊猫对象,这意味着使用时间点。让我们举个实例-

import pandas as pd
print(pd.Timestamp('2024-06-06'))

运行结果

2024-06-06 00:00:00

也可以转换整数或浮点时间。这些的默认单位是纳秒(因为这是时间戳的存储方式)。但是,通常将纪元存储在可以指定的另一个单元中。再举一个实例

import pandas as pd
print(pd.Timestamp(1587687255,unit='s'))

运行结果

 2020-04-24 00:14:15

1.5、创建时间范围

示例

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="30min").time)

运行结果如下:

 [datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]

1.6、更改时间频率

示例

import pandas as pd
print(pd.date_range("11:00", "13:30", freq="H").time)

运行结果如下:

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]

1.7、转换为时间戳

若要将类似日期的对象的系列或类似列表的对象(例如字符串,历元或混合)转换,可以使用to_datetime函数。传递时,将返回一个Series(具有相同的索引),而类似列表的列表将转换为DatetimeIndex。看下面的实例-
示例

import pandas as pd
print(pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None])))

运行结果如下:

 0 2009-07-311 2010-01-102 NaTdtype: datetime64[ns]

NaT表示不是时间(相当于NaN)
让我们再举一个实例。
示例

import pandas as pd
print(pd.to_datetime(['2005/11/23', '2010.12.31', None]))

运行结果如下:

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)

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

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

相关文章

【云岚到家】-day01-项目熟悉-查询区域服务开发

文章目录 1 云岚家政项目概述1.1 简介1.2 项目业务流程1.3 项目业务模块1.4 项目架构及技术栈1.5 学习后掌握能力 2 熟悉项目2.1 熟悉需求2.2 熟悉设计2.2.1 表结构2.2.2 熟悉工程结构2.2.3 jzo2o-foundations2.2.3.1 工程结构2.2.3.2 接口测试 3 开发区域服务模块3.1 流程分析…

Python接口自动化之使用requests库发送http请求

requests库 ​ 什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。 ​ 安装:cmd命…

docker 拉取不到镜像的问题:拉取超时

error pulling image configuration: download failed after attempts6: dial tcp 31.13.94.10:443: i/o timeout 首先设置国内的镜像源&#xff1a;复制下面直接执行 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors"…

【POSIX】消息类的格式与使用

本文给出一个MacOS操作系统中的消息类的使用过程示例&#xff08;结合gencat命令&#xff0c;<nl_types.h>头文件以及catopen,catgets,catclose3个函数&#xff09; 首先根据对应的操作系统&#xff0c;查看 gencat 命令 man gencat 可以详细看到其中对于输入文件&…

Spark MLlib 机器学习详解

目录 &#x1f349;引言 &#x1f349;Spark MLlib 简介 &#x1f348; 主要特点 &#x1f348;常见应用场景 &#x1f349;安装与配置 &#x1f349;数据处理与准备 &#x1f348;加载数据 &#x1f348;数据预处理 &#x1f349;分类模型 &#x1f348;逻辑回归 &a…

⌈ 传知代码 ⌋ 辅助任务改进社交帖子多模态分类

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分:知识容量Scaling Laws

语言模型物理学3.3&#xff1a;知识容量Scaling Laws 论文名称&#xff1a;Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws 论文地址&#xff1a;https://arxiv.org/pdf/2404.05405 相关博客 【自然语言处理】【Scaling Law】Observational Scaling …

R语言探索与分析17-股票题目

Value at Risk&#xff08;VaR&#xff09;是一种统计技术&#xff0c;用于量化投资组合在正常市场条件下可能遭受的最大潜在损失。它是风险管理和金融领域中一个非常重要的概念。VaR通常以货币单位表示&#xff0c;用于估计在给定的置信水平和特定时间范围内&#xff0c;投资组…

OpenCV的小部件最基本范例

OpenCV也有与PYQT类似的小部件&#xff0c;例如滑块slider。OpenCV可以用与PYQT类似的“信号与槽”方法&#xff0c;也可以在函数中直接查询小部件的值。 import cv2 import numpy as npcv2.namedWindow(Show1) image np.zeros((100, 400, 3), np.uint8) # 创建一个空白内容…

JavaScript基础知识4(数组、函数、参数、作用域、具名和匿名函数、逻辑运算符短路、转化布尔类型)

JavaScript基础知识4&#xff08;数组、函数、参数、作用域、具名和匿名函数、逻辑运算符短路、转化布尔类型&#xff09; 数组数组是什么&#xff1f;数组的基本使用定义数组和数组单元访问数组和数组索引数据单元值类型数组长度属性 操作数组 函数声明和调用声明&#xff08;…

(面试官问我微服务与naocs的使用我回答了如下,面试官让我回去等通知)微服务拆分与nacos的配置使用

微服务架构 正常的小项目就是所有的功能集成在一个模块中&#xff0c;这样代码之间不仅非常耦合&#xff0c;而且修改处理的时候也非常的麻烦&#xff0c;应对高并发时也不好处理&#xff0c;所以 我们可以使用微服务架构&#xff0c;对项目进行模块之间的拆分&#xff0c;每一…

前端传参数后端变量类型能够接受到List却无法接收到值

问题描述 今天写了个接口&#xff0c;下图所示 ReqVO里是这样的&#xff1a; 然后前端去请求&#xff0c;从请求结果中看发现这里值是在的&#xff08;有经验的可能就看出来了otherInfo.id: 这样以参数后端是接收不到的&#xff0c;但是当时没发现&#xff09; 传进来后端…

维纳运动的概念

维纳运动&#xff08;Wiener Process&#xff09;&#xff0c;也称为标准布朗运动&#xff0c;是一种重要的随机过程&#xff0c;广泛应用于数学、物理学和金融学等领域。它是一个连续时间的随机过程&#xff0c;具有一些特殊的性质&#xff0c;使其成为描述随机动态系统的经典…

GAT1399协议分析(8)--批量图像查询

一、请求消息定义 视频图像包含视频片段、 图像、 文件、 人员、 人脸、 机动车、 非机动车、 物品、 场景和视频案事件、 视频图像标签等对象 在消息体中,可以包含其中一种类,加上Data字段即可。 ImageInfo对象 二、请求消息实例 wireshark 抓包实例 请求: 文本化: /V…

制造执行MES系统在光伏行业的应用

全球对可再生能源的需求不断增长&#xff0c;光伏能源作为一种清洁、可持续的能源形式&#xff0c;已经在广泛应用中受到了广泛关注。为满足工业领域的光伏能源需求&#xff0c;光伏制造执行系统(MES)作为一种集成化的技术解决方案&#xff0c;提供了更高效、更可靠的解决方案。…

WPS的JSA算国产编程语言,IDE,脚本工具吗?javascript代替VBA

现在wps用javascript代替VBA&#xff0c;应该算很成功了吧。 如果可以独立出来变成一个脚本语言&#xff0c;简单的IDE(本身也有类似VBA&#xff0c;不要寄宿在WPS里面运行&#xff0c;这样就可以变成VBS一样执行脚本了&#xff0c;用来开发按键精灵,LUA一样的脚本很不错 以下…

Activity->Activity中动态添加Fragment->Fragment回退栈BackStack

Fragment回退栈 Fragment回退栈用于管理Fragment的导航历史(添加、删除、替换)。每个Activity都有一个包含其所有Fragment的FragmentManager&#xff0c;调用其addToBackStack方法时&#xff0c;这个事务就会被添加到FragmentManager的回退栈中当用户按下返回键时&#xff0c;…

MySQL报ERROR 2002 (HY000)解决

今天在连接客户服务器时MySQL的时候报: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…

rman恢复后,少部分数据文件状态为MISSING000**

客户有套一体机&#xff0c;每天晚上21点开始做rman完全备份&#xff0c;大约第2天上午9点多完成备份&#xff0c;rman备份保留策略保留一份完全备份 6月1日晚21点自动发起备份&#xff0c;6月2日上午10点15分完成备份&#xff0c;并生成了一个控制文件备份 c-4063271871-2024…

前端图片在切换暗黑模式时太亮该怎么办?

通过css中的filter属性来实现&#xff0c;进行图片的色系反转、亮度、对比度调整等 1、invert 反转输入图像&#xff0c;值为 100% 则图像完全反转&#xff0c;值为 0% 则图像无变化 filter: invert(1); 2、blur 给元素应用高斯模糊效果。 filter: blur(5px); 3、brightnes…