在数据科学和机器学习领域,Pandas 是 Python 编程语言中最为流行和强大的库之一。无论是数据分析、数据清洗,还是数据可视化,Pandas 都可以胜任。本文将为您介绍 Pandas 6 时间。
1. Pandas6 时间
1.1 时间的表示
在 Pandas 中,时间可以表示为一组时间戳(Timestamp)或一组时间段(Period)。Pandas 采用 NumPy 的 datetime64 数据类型来存储时间数据。datetime64 可以表示以 64 位精度度量的日期和时间,从 1678 年 9 月 21 日至 2262 年 4 月 11 日。
1.2 时间序列
时间序列指的是时间上等间隔的数据点的序列,即等间隔的时间戳序列。Pandas 提供了两种主要的时间序列对象:Series 与 DataFrame。其中,Series 对象表示一维时间序列数据,而 DataFrame 对象表示二维时间序列数据。
2. 时间处理基本操作
2.1 时间的生成
可以使用 to_datetime() 方法将符合日期时间格式的字符串转换为时间戳的格式。例如:
import pandas as pd
time_str = '2022-06-30 12:00:00'
time = pd.to_datetime(time_str)
print(time)
由输出结果可以看到,to_datetime() 方法将字符串转换成了 pandas 中的时间戳对象。此时,我们可以对这个时间戳对象进行各种操作。
2.2 时间的运算
比如,我们可以使用 timedelta() 函数来计算两个时间之间的间隔:
from datetime import timedelta
time1 = pd.to_datetime('2022-06-30 12:00:00')
time2 = pd.to_datetime('2022-06-30 18:00:00')
delta_time = time2 - time1
print(delta_time)
由输出结果可以看到,计算出来的间隔是 6 个小时。
2.3 时间的转换
除了可以将字符串转换成 pandas 中的时间戳对象之外,还可以将时间戳对象转换成指定格式的字符串。可以使用 strftime() 方法将时间戳对象格式化成指定的字符串格式:
time_str = time.strftime('%Y年%m月%d日 %H时%M分%S秒')
print(time_str)
由输出结果可以看到,时间戳对象转换成了指定格式的字符串。
3. Pandas 时间序列的常用操作
3.1 时间数据的索引与截取
由于 Pandas 时间序列对象的一个最重要的特性是对时间数据的索引与截取。
可以使用 set_index() 方法将时间戳序列设为 Index,然后通过 loc 或 iloc 进行截取操作。例如:
import pandas as pd
date_rng = pd.date_range(start='1/1/2022', end='1/10/2022', freq='H')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
df = df.set_index('date')
print(df)
由输出结果可以看到,date 列已经作为了该 DataFrame 的索引。接下来,我们可以使用 loc 或 iloc 索引的方式来对时间序列进行截取操作:
df.loc['2022-01-01 01:00:00':'2022-01-03 00:00:00']
3.2 时间数据的重采样操作
现实情况下,时间序列往往是不均匀的。这时,我们需要对时间序列进行重采样。可以使用 resample() 方法对时间序列进行重采样。例如:
df.resample('D').mean()
由输出结果可以看到,将时间序列转换成以天为单位的时间序列,并取每天的平均值。
3.3 时间数据的移动平均与指数平滑
常用的平滑方法有移动平均和指数平滑。可以使用 rolling() 方法计算移动平均值,或者使用 ewm() 方法计算指数平滑值。例如:
df.rolling(window=24).mean()
df.ewm(span=24).mean()
由输出结果可以看到,分别计算了 24 小时的移动平均值和指数平滑值。
4. 总结
本文介绍了 Pandas 6 时间的基本操作和常见用法。通过本文的学习,我们可以掌握如何处理时间数据、使用 Pandas 对时间序列进行索引和截取、进行时间序列的重采样及移动平均和指数平滑等操作。这些技巧在实际场景中都有广泛的应用,希望对读者有所启发。