软件测试|数据处理神器pandas教程(十)

简介: 软件测试|数据处理神器pandas教程(十)

在这里插入图片描述

前言

之前我们介绍了pandas处理时间以及pandas时间序列的内容,本文我们来介绍pandas处理时间差的有关操作。

Timedelta 表示时间差(或者时间增量),我们可以使用不同的时间单位来表示它,比如,天、小时、分、秒。时间差的最终的结果可以是正时间差,也可以是负时间差。

本文主要介绍创建 Timedelta (时间差)的方法以及与时间差相关的运算法则。

创建时间差对象

  1. 通过传递字符串可以创建 Timedelta 对象,示例如下:
import pandas as pd
print(pd.Timedelta('5 days 23 hours 50 minutes 23 seconds'))

------------------------
输出结果如下:
5 days 23:50:23
  1. 传递整数值和unit参数也可以创建一个 Timedelta 对象,示例如下:
import pandas as pd
print(pd.Timedelta(7,unit='h'))

--------------------------
输出结果如下:
0 days 07:00:00
  1. 数据偏移量,周(weeks)、天(days)、小时(hours)、分钟(minutes)、秒(milliseconds)、毫秒、微秒、纳秒都可以使用,示例如下:
import pandas as pd

print (pd.Timedelta(weeks=1,days=2,hours=6))


------------------------------
输出结果如下:
9 days 06:00:00

注:周会直接换算成天数,与天数相加,该方法不支持月份作为数据偏移量

  1. to_timedelta()

使用pd.to_timedelta()方法,将具有 timedelta 格式的值 (标量、数组、列表或 Series)转换为 Timedelta 类型。如果输入是 Series,则返回 Series;如果输入是标量,则返回值也为标量,其他情况输出 TimedeltaIndex。示例如下:

import pandas as pd
import numpy as np

print(pd.to_timedelta(['1 days 06:05:01.00003', '15.5us', 'nan']))
print(pd.to_timedelta(np.arange(5), unit='s'))
---------------
输出结果如下:
TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)
TimedeltaIndex(['0 days 00:00:00', '0 days 00:00:01', '0 days 00:00:02',
                '0 days 00:00:03', '0 days 00:00:04'],
               dtype='timedelta64[ns]', freq=None)

算术操作

对datetime64[ns]类型的时间序列或时间戳做算术运算,其运算结果依然是datetime64[ns]数据类型。接下来,我们创建一个带有 Timedelta 与 datetime 的 DataFrame 对象,并对其做一些算术运算。

示例代码如下:

import pandas as pd
s = pd.Series(pd.date_range('2023-3-23', periods=5, freq='D'))
#推导式用法
td = pd.Series([ pd.Timedelta(days=i) for i in range(5)])
df = pd.DataFrame(dict(A = s, B = td))
print(df)

----------------------
输出结果如下:
           A      B
0 2023-03-23 0 days
1 2023-03-24 1 days
2 2023-03-25 2 days
3 2023-03-26 3 days
4 2023-03-27 4 days
  1. 加法运算
import pandas as pd
s = pd.Series(pd.date_range('2023-3-20', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
#加法运算
df['C']=df['A']+df['B']
print(df)
------------------------
输出结果如下:
           A      B          C
0 2023-03-20 0 days 2023-03-20
1 2023-03-21 1 days 2023-03-22
2 2023-03-22 2 days 2023-03-24
  1. 减法运算
import pandas as pd
s = pd.Series(pd.date_range('2023-3-20', periods=3, freq='D'))
td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
df['C']=df['A']+df['B']
df['D']=df['C']-df['B']
print(df)

-------------------------
输出结果如下:
           A      B          C          D
0 2023-03-20 0 days 2023-03-20 2023-03-20
1 2023-03-21 1 days 2023-03-22 2023-03-21
2 2023-03-22 2 days 2023-03-24 2023-03-22

总结

本文主要介绍了pandas对于时间差的处理,与datetime的处理相比,pandas对于时间差的处理更加方便直接,后续我们将继续介绍pandas对字符串的处理。

相关文章
|
12天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
【4月更文挑战第21天】本文介绍了Selenium中处理特殊测试场景的方法,如鼠标悬停。Selenium的Actions类提供了鼠标悬停功能,用于模拟用户在网页元素上的悬停行为。文中通过实例展示了如何使用Actions悬停并展开下拉菜单,以及在搜索时选择自动补全的字段。代码示例包括了打开百度首页,悬停在“更多”元素上显示下拉菜单并点击“音乐”,以及在搜索框输入关键词并自动补全的过程。
35 0
|
5天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(<https://www.sojump.com/m/2792226.aspx/>)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
14 0
|
6天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
15 0
|
8天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
15 0
|
9天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
【4月更文挑战第24天】本文介绍了在自动化测试中处理HTML下拉选择(select)的方法。使用Selenium的Select类,可以通过index、value或visible text三种方式选择选项,并提供了相应的取消选择的方法。此外,文章还提供了一个示例HTML页面(select.html)和相关代码实战,演示了如何使用Selenium进行选择和取消选择操作。最后,文章提到了现代网页中类似下拉框的新设计,如12306网站的出发地选择,并给出了相应的代码示例,展示了如何定位并选择特定选项。
18 0
|
10天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
9 2
|
11天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
37 2
|
13天前
|
Web App开发 JavaScript Java
《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)
【4月更文挑战第20天】本文主要介绍了如何使用Selenium处理网页中的alert弹窗,包括accept()、dismiss()、getText()和sendKeys()等方法。文章首先简述了在前一篇文章中提及的switchTo()方法,然后详细讲解了alert弹窗的几个关键方法。接着,作者给出了一个名为ModalDialogueBox.html的测试页面,展示了警告框、确认框和提示框三种类型的模态对话框,并提供了相应的JavaScript代码。最后,文章提供了一个实际的项目实战案例,展示了如何在Java中使用Selenium处理alert弹窗,并给出了相关代码示例。
12 0
|
14天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)
【4月更文挑战第19天】本文介绍了WebDriver中关闭浏览器的两个方法:close和quit。close方法关闭当前窗口,如果这是最后一个窗口,浏览器也会退出。quit方法则直接退出浏览器并关闭所有关联窗口。示例代码展示了两者的区别,通常在自动化测试后使用quit来彻底关闭浏览器。close和quit在HTTP请求上的差异也进行了说明,close请求的是 `/session/{session id}/window/current`,而quit请求的是 `/session/{session id}`。
29 8
|
15天前
|
Web App开发 Java 测试技术
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
【4月更文挑战第18天】本文介绍了Web自动化中的浏览器操作,包括如何打开不同类型的浏览器(如IE、Chrome、Firefox),以及进行页面操作如打开URL、浏览器最大化、刷新、前进和后退。还展示了如何设置浏览器位置和大小,以及获取当前URL和标题。此外,提供了项目实战例子,演示了如何用Selenium实现打开浏览器、设置位置和大小、搜索并执行页面操作的过程。文章最后提到一些其他可用的方法,并鼓励读者继续学习自动化测试相关知识。
42 3