方法 | 说明 |
---|---|
降采样 | 将高频率(间隔短)数据转换为低频率(间隔长)。 |
升采样 | 将低频率数据转换为高频率。 |
import pandas as pd import numpy as np rng = pd.date_range('1/1/2021',periods=100,freq='D') ts = pd.Series(np.random.randn(len(rng)),index=rng) #降采样后并聚合 ts.resample('M').mean()输出结果:
2021-01-31 0.210353 2021-02-28 -0.058859 2021-03-31 -0.182952 2021-04-30 0.205254 Freq: M, dtype: float64如果您只想看到月份,那么您可以设置
kind=period
如下所示:
ts.resample('M',kind='period').mean()输出结果:
2021-01 -0.153121 2021-02 0.136231 2021-03 -0.238975 2021-04 -0.309502 Freq: M, dtype: float64
import pandas as pd import numpy as np #生成一份时间序列数据 rng = pd.date_range('1/1/2021', periods=20, freq='3D') ts = pd.Series(np.random.randn(len(rng)), index=rng) print(ts.head()) #使用asfreq()在原数据基础上实现频率转换 ts.resample('D').asfreq().head()输出结果:
升采样前: 2021-01-01 0.608716 2021-01-04 1.097451 2021-01-07 -1.280173 2021-01-10 -0.175065 2021-01-13 1.046831 Freq: 3D, dtype: float64 升采样后: 2021-01-01 0.608716 2021-01-02 NaN 2021-01-03 NaN 2021-01-04 1.097451 2021-01-05 NaN Freq: D, dtype: float64
index = pd.date_range('1/1/2021', periods=6, freq='T') series = pd.Series([0.0, None, 2.0, 3.0,4.0,5.0], index=index) df = pd.DataFrame({'s':series}) print(df.asfreq("45s"))输出结果:
num 2021-01-01 00:00:00 0.0 2021-01-01 00:00:45 NaN 2021-01-01 00:01:30 NaN 2021-01-01 00:02:15 NaN 2021-01-01 00:03:00 3.0 2021-01-01 00:03:45 NaN 2021-01-01 00:04:30 NaN
方法 | 说明 |
---|---|
pad/ffill | 用前一个非缺失值去填充缺失值。 |
backfill/bfill | 用后一个非缺失值去填充缺失值。 |
interpolater('linear') | 线性插值方法。 |
fillna(value) | 指定一个值去替换缺失值。 |
import pandas as pd import numpy as np #创建时间序列数据 rng = pd.date_range('1/1/2021', periods=20, freq='3D') ts = pd.Series(np.random.randn(len(rng)), index=rng) print(ts.resample('D').asfreq().head()) #使用ffill处理缺失值 ts.resample('D').asfreq().ffill().head()输出结果:
2021-01-01 0.555580 2021-01-02 NaN 2021-01-03 NaN 2021-01-04 -0.079324 2021-01-05 NaN Freq: D, dtype: float64 #插值处理,注意对比 2021-01-01 0.555580 2021-01-02 0.555580 2021-01-03 0.555580 2021-01-04 -0.079324 2021-01-05 -0.079324 Freq: D, dtype: float64
本文链接:http://task.lmcjl.com/news/17306.html