前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7个常用的Pandas时间戳处理函数

7个常用的Pandas时间戳处理函数

作者头像
数据STUDIO
发布2022-05-24 14:34:06
1.4K0
发布2022-05-24 14:34:06
举报
文章被收录于专栏:数据STUDIO

Pandas 库中有四个与时间相关的概念

  • 日期时间:日期时间表示特定日期和时间及其各自的时区。它在 pandas 中的数据类型是 datetime64[ns] 或 datetime64[ns, tz]。
  • 时间增量:时间增量表示时间差异,它们可以是不同的单位。示例:"天、小时、减号"等。换句话说,它们是日期时间的子类。
  • 时间跨度:时间跨度被称为固定周期内的相关频率。时间跨度的数据类型是 period[freq]。
  • 日期偏移:日期偏移有助于从当前日期计算选定日期,日期偏移量在 pandas 中没有特定的数据类型。

时间序列分析至关重要,因为它们可以帮助我们了解随着时间的推移影响趋势或系统模式的因素。在数据可视化的帮助下,分析并做出后续决策。前面我们也介绍过几种使用pandas处理时间序列文章,可以戳👇: 时间序列 | pandas时间序列基础 时间序列 | 字符串和日期的相互转换 时间序列 | 重采样及频率转换 时间序列 | 时期(Period)及其算术运算

现在我们接续看几个使用这些函数的例子。

1、查找特定日期的某一天的名称

代码语言:javascript
复制
import pandas as pd 
day = pd.Timestamp('2021/1/5') 
day.day_name()
代码语言:javascript
复制
'Tuesday'

上面的程序是显示特定日期的名称。第一步是导入 panda 的并使用 Timestamp 和 day_name 函数。"Timestamp"功能用于输入日期,"day_name"功能用于显示指定日期的名称。

2、执行算术计算

代码语言:javascript
复制
import pandas as pd 
 
day = pd.Timestamp('2021/1/5') 
day1 = day + pd.Timedelta("3 day") 
day1.day_name() 
 
day2 = day1 + pd.offsets.BDay() 
day2.day_name()
代码语言:javascript
复制
'Monday'

在第一个代码中,显示三天后日期名称。"Timedelta"功能允许输入任何天单位(天、小时、分钟、秒)的时差。

在第二个代码中,使用"offsets.BDay()"函数来显示下一个工作日。换句话说,这意味着在星期五之后,下一个工作日是星期一。

3、使用时区信息来操作转换日期时间

获取时区的信息

代码语言:javascript
复制
import pandas as pd 
import numpy as np 
from datetime import datetime 
 
dat_ran = dat_ran.tz_localize("UTC") 
dat_ran
代码语言:javascript
复制
DatetimeIndex(
['2021-01-01 00:00:00+00:00', '2021-01-01 00:01:00+00:00',
 '2021-01-01 00:02:00+00:00', '2021-01-01 00:03:00+00:00',
 '2021-01-01 00:04:00+00:00', '2021-01-01 00:05:00+00:00',
 '2021-01-01 00:06:00+00:00', '2021-01-01 00:07:00+00:00',
 '2021-01-01 00:08:00+00:00', '2021-01-01 00:09:00+00:00',
 ...
 '2021-01-04 23:51:00+00:00', '2021-01-04 23:52:00+00:00',
 '2021-01-04 23:53:00+00:00', '2021-01-04 23:54:00+00:00',
 '2021-01-04 23:55:00+00:00', '2021-01-04 23:56:00+00:00',
 '2021-01-04 23:57:00+00:00', '2021-01-04 23:58:00+00:00',
 '2021-01-04 23:59:00+00:00', '2021-01-05 00:00:00+00:00'],             
dtype='datetime64[ns, UTC]',
length=5761, freq='T')

转换为美国时区

代码语言:javascript
复制
dat_ran.tz_convert("US/Pacific")
代码语言:javascript
复制
DatetimeIndex(
['2020-12-31 16:00:00-08:00', '2020-12-31 16:01:00-08:00',
 '2020-12-31 16:02:00-08:00', '2020-12-31 16:03:00-08:00',
 '2020-12-31 16:04:00-08:00', '2020-12-31 16:05:00-08:00',
 '2020-12-31 16:06:00-08:00', '2020-12-31 16:07:00-08:00',
 '2020-12-31 16:08:00-08:00', '2020-12-31 16:09:00-08:00',
 ...
 '2021-01-04 15:51:00-08:00', '2021-01-04 15:52:00-08:00',
 '2021-01-04 15:53:00-08:00', '2021-01-04 15:54:00-08:00',
 '2021-01-04 15:55:00-08:00', '2021-01-04 15:56:00-08:00',
 '2021-01-04 15:57:00-08:00', '2021-01-04 15:58:00-08:00',
 '2021-01-04 15:59:00-08:00', '2021-01-04 16:00:00-08:00'],
dtype='datetime64[ns, US/Pacific]', 
length=5761, freq='T')

代码的目标是更改日期的时区。首先需要找到当前时区。这是"tz_localize()"函数完成的。我们现在知道当前时区是"UTC"。使用"tz_convert()"函数,转换为美国/太平洋时区。

4、使用日期时间戳

代码语言:javascript
复制
import pandas as pd 
import numpy as np 
from datetime import datetime 
dat_ran = pd.date_range(start = '1/1/2021', end = '1/5/2021', freq = 'Min') 
print(type(dat_ran[110]))
代码语言:javascript
复制
<class 'pandas._libs.tslibs.timestamps.
Timestamp'>

5、创建日期系列

代码语言:javascript
复制
import pandas as pd 
import numpy as np 
from datetime import datetime 
dat_ran = pd.date_range(start = '1/1/2021', end = '1/5/2021', freq = 'Min') 
print(dat_ran)
代码语言:javascript
复制
DatetimeIndex(
['2021-01-01 00:00:00', '2021-01-01 00:01:00',
 '2021-01-01 00:02:00', '2021-01-01 00:03:00',
 '2021-01-01 00:04:00', '2021-01-01 00:05:00',
 '2021-01-01 00:06:00', '2021-01-01 00:07:00',
 '2021-01-01 00:08:00', '2021-01-01 00:09:00',
 ...
 '2021-01-04 23:51:00', '2021-01-04 23:52:00',
 '2021-01-04 23:53:00', '2021-01-04 23:54:00',
 '2021-01-04 23:55:00', '2021-01-04 23:56:00',
 '2021-01-04 23:57:00', '2021-01-04 23:58:00',
 '2021-01-04 23:59:00', '2021-01-05 00:00:00'],
dtype='datetime64[ns]', 
length=5761, freq='T')

上面的代码生成了一个日期系列的范围。使用"date_range"函数,输入开始和结束日期,可以获得该范围内的日期。

6、操作日期序列

代码语言:javascript
复制
import pandas as pd 
from datetime import datetime 
import numpy as np 
 
dat_ran = pd.date_range(start ='1/1/2019', end ='1/08/2019',freq ='Min') 
df = pd.DataFrame(dat_ran, columns =['date']) 
df['data'] = np.random.randint(0, 100, size =(len(dat_ran))) 
print(df.head(5))
代码语言:javascript
复制
                 date  data
0 2019-01-01 00:00:00    68
1 2019-01-01 00:01:00    77
2 2019-01-01 00:02:00    78
3 2019-01-01 00:03:00    64
4 2019-01-01 00:04:00    42

在上面的代码中,使用"DataFrame"函数将字符串类型转换为dataframe。最后"np.random.randint()"函数是随机生成一些假定的数据。

7、使用时间戳数据对数据进行切片

代码语言:javascript
复制
import pandas as pd 
from datetime import datetime 
import numpy as np 
dat_ran = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') 
 
df = pd.DataFrame(dat_ran, columns =['date']) 
df['data'] = np.random.randint(0, 100, size =(len(dat_ran))) 
string_data = [str(x) for x in dat_ran] 
 
print(string_data[1:5])
代码语言:javascript
复制
['2019-01-01 00:01:00', 
'2019-01-01 00:02:00', 
'2019-01-01 00:03:00', 
'2019-01-01 00:04:00']

上面代码是是第6条的的延续。在创建dataframe并将其映射到随机数后,对列表进行切片。

最后总结,本文通过示例演示了时间序列和日期函数的所有基础知识。建议参考本文中的内容并尝试pandas中的其他日期函数进行更深入的学习,因为这些函数在我们实际工作中非常的重要。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、查找特定日期的某一天的名称
  • 2、执行算术计算
  • 3、使用时区信息来操作转换日期时间
  • 4、使用日期时间戳
  • 5、创建日期系列
  • 6、操作日期序列
  • 7、使用时间戳数据对数据进行切片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档