
本文档旨在指导读者如何使用 Pandas 库有效地填充 DataFrame 中缺失的日期和时间序列。通过将日期时间列设置为索引,并利用 `asfreq` 函数,可以轻松地插入缺失的日期或时间,并用指定的值填充其他列,从而完整地呈现时间序列数据。
Pandas 提供了强大的时间序列分析功能。在处理时间序列数据时,经常会遇到数据缺失的情况,例如某些日期或时间点的数据不存在。为了进行准确的分析和建模,需要填充这些缺失的数据。本文将介绍如何使用 Pandas 的 asfreq 函数来填充 DataFrame 中缺失的日期和时间,并提供适用于不同时间间隔的示例。
首先,确保你已经安装了 Pandas 库。如果没有安装,可以使用以下命令进行安装:
pip install pandas
核心思路是将包含日期或时间的列设置为 DataFrame 的索引,然后使用 asfreq 函数重新采样时间序列,填充缺失的日期或时间。
以下是基本步骤:
假设我们有以下 DataFrame,其中缺少了 2000-01-08 和 2000-01-09 的数据:
import pandas as pd
data = {'dt_object': ['2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-10', '2000-01-11', '2000-01-12'],
'high': [27.490000, 27.448000, 27.597000, 27.597000, 27.174000, 28.090000, 29.250000, 28.850000]}
df = pd.DataFrame(data)
print(df)输出:
dt_object high 0 2000-01-03 27.490 1 2000-01-04 27.448 2 2000-01-05 27.597 3 2000-01-06 27.597 4 2000-01-07 27.174 5 2000-01-10 28.090 6 2000-01-11 29.250 7 2000-01-12 28.850
现在,我们使用 asfreq 填充缺失的日期,并将 high 列的值设置为 0:
df['dt_object'] = pd.to_datetime(df['dt_object'])
out = df.set_index('dt_object').asfreq('D', fill_value=0).reset_index()
print(out)输出:
dt_object high 0 2000-01-03 27.490 1 2000-01-04 27.448 2 2000-01-05 27.597 3 2000-01-06 27.597 4 2000-01-07 27.174 5 2000-01-08 0.000 6 2000-01-09 0.000 7 2000-01-10 28.090 8 2000-01-11 29.250 9 2000-01-12 28.850
可以看到,缺失的 2000-01-08 和 2000-01-09 的数据已经被填充,并且 high 列的值为 0。
假设我们有以下 DataFrame,其中缺少了某些 15 分钟间隔的数据:
import pandas as pd
data = {'dt_object': ['2023-12-13 00:00:00', '2023-12-13 00:15:00', '2023-12-13 00:45:00', '2023-12-13 01:15:00'],
'high': [90.1216, 90.1308, 90.2750, 90.3023]}
df = pd.DataFrame(data)
print(df)输出:
dt_object high 0 2023-12-13 00:00:00 90.1216 1 2023-12-13 00:15:00 90.1308 2 2023-12-13 00:45:00 90.2750 3 2023-12-13 01:15:00 90.3023
现在,我们使用 asfreq 填充缺失的 15 分钟间隔,并将 high 列的值设置为 0:
df['dt_object'] = pd.to_datetime(df['dt_object'])
out = df.set_index('dt_object').asfreq('15Min', fill_value=0).reset_index()
print(out)输出(部分):
dt_object high 0 2023-12-13 00:00:00 90.1216 1 2023-12-13 00:15:00 90.1308 2 2023-12-13 00:30:00 0.0000 3 2023-12-13 00:45:00 90.2750 4 2023-12-13 01:00:00 0.0000 5 2023-12-13 01:15:00 90.3023
可以看到,缺失的 15 分钟间隔的数据已经被填充,并且 high 列的值为 0。
asfreq 函数的常用参数包括:
本文介绍了如何使用 Pandas 的 asfreq 函数填充 DataFrame 中缺失的日期和时间序列。通过将日期/时间列设置为索引,并使用 asfreq 函数重新采样时间序列,可以轻松地插入缺失的日期或时间,并使用指定的值填充其他列。这种方法适用于各种时间间隔,例如天、小时、分钟等,可以帮助你更好地处理时间序列数据。
以上就是使用 Pandas 填充缺失日期和时间序列的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号