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

举报
霍格沃兹测试开发 发表于 2023/04/10 11:34:59 2023/04/10
【摘要】 前言当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Friday, March 24, 2023”可以写成“24/3/23”,或者写成“03-24-2023”。 日期格式化符号在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为%H ,分钟简写为%M ,秒简写为...

在这里插入图片描述

前言

当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Friday, March 24, 2023”可以写成“24/3/23”,或者写成“03-24-2023”。

日期格式化符号

在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为%H ,分钟简写为%M ,秒简写为%S。下表对常用的日期格式化符号做了总结:

符号 说明
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地英文缩写星期名称
%A 本地英文完整星期名称
%b 本地缩写英文的月份名称
%B 本地完整英文的月份名称
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%U 一年中的星期数(00-53)星期天为星期的开始
%j 年内的一天(001-366)
%c 本地相应的日期表示和时间表示

Python时间处理

在python中,我们可以通过内置的 datetime方法来处理时间,下面是我们的一组示例:

from datetime import datetime
#将日期定义为字符串
# date_str1 = 'Friday, March 24, 2023'
data_str1 = 'March 24, 2023'
date_str2 = '24/3/23'
date_str3 = '24-03-2023'
#将日期转化为datetime对象
# dmy_dt1 = datetime.strptime(date_str1, '%A,%B%d,%Y')
dmy_dt1 = datetime.strptime(data_str1, '%b%d, %Y')
dmy_dt2 = datetime.strptime(date_str2, '%d/%m/%y')
dmy_dt3 = datetime.strptime(date_str3, '%d-%m-%Y')
#处理为相同格式,并打印输出
print(dmy_dt1)
print(dmy_dt2)
print(dmy_dt3)

--------------------
输出结果如下:
2023-03-24 00:00:00
2023-03-24 00:00:00
2023-03-24 00:00:00

注:strftime() 可以将 datetime 类型转换为字符串类型,恰好与 strptime() 相反。

Pandas时间处理

除了使用 Python 内置的 strptime() 方法外,你还可以使用 Pandas 模块的 pd.to_datetime() 和 pd.DatetimeIndex() 进行转换。

  1. to_datetime()

通过 to_datetime() 直接转换为 datetime 类型

import pandas as pd
import numpy as np
date = ['2023-03-23 12:00:00','2023-03-24 18:00:00']
pd_date=pd.to_datetime(date)
df=pd.Series(np.random.randn(2),index=pd_date)
print(df)
----------------------
输出结果如下:
2023-03-23 12:00:00   -0.859986
2023-03-24 18:00:00   -0.085590
dtype: float64
  1. DatetimeIndex()

使用 Datetimeindex() 函数设置时间序,示例如下:

import pandas as pd
import numpy as np

date = pd.DatetimeIndex(['8/8/2008', '8/21/2016', '6/29/2007', '20/8/2009', '10/1/2020'])
dt = pd.Series(np.random.randn(5),index = date)
print(dt)
-----------------------------
输出结果如下:
2008-08-08   -1.285458
2016-08-21    0.420290
2007-06-29   -0.897028
2009-08-20   -0.357196
2020-10-01    1.653617
dtype: float64

总结

本文主要介绍了pandas的时间处理的内容,后面我们将介绍使用pandas时间序列的内容。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。