看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas
中的 Resampler.nearest()
方法用于对时间序列数据进行重采样,并使用最近的观测值填充新时间点。这种方法在处理不规则时间序列数据时非常有用,能够有效地将数据对齐到指定的时间频率。
使用最接近的值重新采样。重新采样数据时,可能会出现缺失值(例如,当重新采样频率高于原始频率时)。最近的方法将根据索引值,用序列中最近成员的值替换重新采样数据中出现的NaN值。原始数据中存在的缺失值将不会被修改。如果给定了限制,则每个原始值在每个方向上只填写这么多值。
Resampler.nearest(limit=None)
适用于通过 resample()
方法得到的 Resampler
对象。主要用于 DataFrame
和 Series
类型的数据。
int
类型。限制向前或向后填充的次数。如果设置了 limit
,那么会限制每个点的填充次数,这在处理缺失数据时非常有用。Resampler
对象形状相同的 DataFrame
或 Series
,其中的时间点已经对齐到指定频率,并使用最近的观测值进行了填充。s = pd.Series([1, 2],
index=pd.date_range('20180101',
periods=2,
freq='1h'))
s
'''
2018-01-01 00:00:00 1
2018-01-01 01:00:00 2
Freq: h, dtype: int64
'''
s.resample('15min').nearest()
'''
2018-01-01 00:00:00 1
2018-01-01 00:15:00 1
2018-01-01 00:30:00 2
2018-01-01 00:45:00 2
2018-01-01 01:00:00 2
Freq: 15min, dtype: int64
'''
限制由最接近的值估算的上采样值的数量:
s.resample('15min').nearest(limit=1)
'''
2018-01-01 00:00:00 1.0
2018-01-01 00:15:00 1.0
2018-01-01 00:30:00 NaN
2018-01-01 00:45:00 2.0
2018-01-01 01:00:00 2.0
Freq: 15min, dtype: float64
'''
以下示例展示了如何使用 Resampler.nearest()
方法对不规则时间序列数据进行重采样,并使用最近的观测值填充新时间点。
import pandas as pd
import numpy as np
# 创建一个不规则时间序列 DataFrame
date_rng = pd.to_datetime(['2024-01-01 09:00', '2024-01-01 09:05',
'2024-01-01 09:10', '2024-01-01 09:20'])
df = pd.DataFrame(date_rng, columns=['date'])
df['value'] = [10, 20, 30, 40] # 示例数据
df.set_index('date', inplace=True)
print("原始 DataFrame:")
print(df)
# 对数据进行重采样,使用 nearest 方法进行填充
df_resampled = df.resample('3T').nearest()
print("\n重采样并使用最近观测值填充后的 DataFrame:")
print(df_resampled)
原始 DataFrame:
value
date
2024-01-01 09:00:00 10
2024-01-01 09:05:00 20
2024-01-01 09:10:00 30
2024-01-01 09:20:00 40
重采样并使用最近观测值填充后的 DataFrame:
value
date
2024-01-01 09:00:00 10
2024-01-01 09:03:00 10
2024-01-01 09:06:00 20
2024-01-01 09:09:00 20
2024-01-01 09:12:00 30
2024-01-01 09:15:00 30
2024-01-01 09:18:00 30
2024-01-01 09:21:00 40
DataFrame
具有新的时间点,这些点的值来自最近的观测值。Resampler.nearest()
方法对于需要将不规则数据对齐到特定频率,同时希望尽可能保留原始数据趋势的场景非常有用。
更新时间:2024-08-15 08:59:55 标签:pandas python 重采样