Data Science | 时期时间傻傻分不清楚

简介: Data Science | 时期时间傻傻分不清楚

Pandas时期 - Period

pd.Period()创建时期

生成一个以2017-01开始,月为频率的时间构造器:

p = pd.Period('2017', freq = 'M')
print(p, type(p))
>>>
2017-01 <class 'pandas._period.Period'>

我们可以通过加减整数,将周期整体移动:

p = pd.Period('2017', freq = 'M')
print(p, type(p))
print(p + 1)
print(p - 2)
>>>
2017-02
2016-11
pd.period_range()创建时期范围

创建指定时期范围:

prng = pd.period_range('1/1/2011', '1/1/2012', freq='M')
print(prng,type(prng))
>>>
PeriodIndex(['2011-01', '2011-02', '2011-03', '2011-04', '2011-05', '2011-06',
             '2011-07', '2011-08', '2011-09', '2011-10', '2011-11', '2011-12',
             '2012-01'],
            dtype='int64', freq='M') <class 'pandas.tseries.period.PeriodIndex'>

结合上面的时期序列,创建时间序列:

ts = pd.Series(np.random.rand(len(prng)), index = prng)
print(ts,type(ts))
print(ts.index)
>>>
2011-01    0.342571
2011-02    0.826151
2011-03    0.370505
2011-04    0.137151
2011-05    0.679976
2011-06    0.265928
2011-07    0.416502
2011-08    0.874078
2011-09    0.112801
2011-10    0.112504
2011-11    0.448408
2011-12    0.851046
2012-01    0.370605
Freq: M, dtype: float64 <class 'pandas.core.series.Series'>
PeriodIndex(['2011-01', '2011-02', '2011-03', '2011-04', '2011-05', '2011-06',
             '2011-07', '2011-08', '2011-09', '2011-10', '2011-11', '2011-12',
             '2012-01'],
            dtype='int64', freq='M')
pd.period - asfreq:频率转换

通过.asfreq(freq, method=None, how=None)方法可以将之前生成的频率转换成别的频率

p = pd.Period('2017','A-DEC')
print(p)
print(p.asfreq('M', how = 'start'))  # 也可写 how = 's'
print(p.asfreq('D', how = 'end'))  # 也可写 how = 'e'
>>>
2017
2017-01
2017-12-31

asfreq也可以转换TIMESeries的index:

prng = pd.period_range('2017','2018',freq = 'M')
ts1 = pd.Series(np.random.rand(len(prng)), index = prng)
ts2 = pd.Series(np.random.rand(len(prng)), index = prng.asfreq('D', how = 'start'))
print(ts1.head(),len(ts1))
print(ts2.head(),len(ts2))

时间戳与时期之间的转换

使用pd.to_period()、pd.to_timestamp()可以实现时间戳与时期之间的转换。

rng = pd.date_range('2017/1/1', periods = 10, freq = 'M')
prng = pd.period_range('2017','2018', freq = 'M')
ts1 = pd.Series(np.random.rand(len(rng)), index = rng)
print(ts1.head())
print(ts1.to_period().head())
# 每月最后一日,转化为每月
ts2 = pd.Series(np.random.rand(len(prng)), index = prng)
print(ts2.head())
print(ts2.to_timestamp().head())
# 每月,转化为每月第一天
>>>
2017-01-31    0.125288
2017-02-28    0.497174
2017-03-31    0.573114
2017-04-30    0.665665
2017-05-31    0.263561
Freq: M, dtype: float64
2017-01    0.125288
2017-02    0.497174
2017-03    0.573114
2017-04    0.665665
2017-05    0.263561
Freq: M, dtype: float64
2017-01    0.748661
2017-02    0.095891
2017-03    0.280341
2017-04    0.569813
2017-05    0.067677
Freq: M, dtype: float64
2017-01-01    0.748661
2017-02-01    0.095891
2017-03-01    0.280341
2017-04-01    0.569813
2017-05-01    0.067677
Freq: MS, dtype: float64

巩固练习

  • 1:请输出以下时间序列,使用pd.period_range()
相关文章
|
3月前
|
存储 Kubernetes 安全
云计算分类与主流产品
云计算已广泛应用于政府、企业和个人生活,主要分为私有云、公有云、混合云和多云。服务模式以IaaS、PaaS、SaaS为主,未来将向S2S模式发展。公有云具备规模大、价格低、灵活性强等特点,而私有云则更注重数据安全和资源控制。混合云结合多种云的优势,提供更灵活的架构。此外,云存储、虚拟桌面、开发测试、电子政务等场景广泛应用,OpenStack、Kubernetes等开源产品也推动了云计算的发展。
590 0
|
4月前
|
运维 监控 负载均衡
高效运维实践:常见问题的应对策略与实践经验
本文探讨了运维工作中的五大核心挑战及应对策略,涵盖负载均衡优化、数据库性能提升、系统监控预警、容器化与微服务运维等方面,旨在帮助企业提升系统稳定性与运维效率。
|
4月前
|
人工智能 安全 API
一件数字藏品的全球之旅:Web3.0 API如何实现“链上确权+链下流通”?
Web3.0以区块链为核心,将数据主权归还用户,而API则成为连接分布式节点的“数字纽带”,推动去中心化应用实现跨链、跨平台数据互联。本文探讨Web3.0与API融合如何重塑互联网生态,开启数据价值流通新时代。
|
存储 物联网 调度
操作系统的心脏:内核深度解析
在数字世界的构建中,操作系统扮演着基石的角色,而其核心—内核,则是这一复杂系统的灵魂。本文将深入探讨操作系统内核的工作原理,揭示它是如何管理硬件资源、运行程序以及提供系统服务的。通过理解内核的结构和功能,我们可以更好地把握计算机系统的运作机制,进而优化和创新我们的技术实践。
|
传感器 机器学习/深度学习 人工智能
光子集成电路:光子学与电子学的结合
【10月更文挑战第18天】光子集成电路(PIC)结合了光子学与电子学的优势,利用光子作为信息传输和处理的载体,具备高速传输、大带宽、低功耗和高集成度等特点。本文介绍其基本原理、技术优势及在高速光通信、光计算、传感器和激光雷达等领域的应用前景,展望未来发展趋势与挑战。
|
存储 算法 安全
虚拟内存
【10月更文挑战第25天】虚拟内存是计算机系统中一项非常重要的技术,它通过扩展内存空间、提供内存保护和支持多任务处理等功能,提高了计算机系统的性能和可用性。虽然虚拟内存存在一些缺点,但通过合理的优化和管理,可以有效地发挥其优势,为计算机系统的稳定运行提供有力保障。
510 144
|
11月前
|
Python
通义灵码写童年小游戏挑战赛
通义灵码版本升级啦,支持多种上下文组合,包括 #image 、#file、#codeChanges、#gitCommit 等,立即体验。
|
11月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品消费需求预测的深度学习模型
使用Python实现智能食品消费需求预测的深度学习模型
262 10
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
206 5
通义灵码一周年:灵码编码搭子新功能测评
作为一名软件开发工程师,我使用通义灵码个人版的@workspace和@terminal功能,快速进行项目初始化、代码熟悉、需求实现、代码审查及协作开发,整体效率提升30%。通过智能提示、自动补全、代码审查等工具,大幅减少手动配置时间和错误率,使我能够更专注于创新工作。