Pandas数据重采样

发布时间:2024年01月22日

数据重采样

  • 时间数据由一个频率转换到另一个频率

  • 降采样(如D到M)
  • 升采样(如M到D)

方法:调用resample

?降采样举例

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt

rng = pd.date_range('1/1/2023', periods=90, freq='D')
# 数据按天
ts = pd.Series(np.random.randn(len(rng)), index=rng)
print(ts.head())
print(ts.resample('M').sum())
print(ts.resample('3D').mean())
# 数据降采样,降为月,指标是求和,也可以平均,自己指定

升采样举例

? ? ? ? 需要插值

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt

rng = pd.date_range('1/1/2023', periods=90, freq='D')
# 数据按天
ts = pd.Series(np.random.randn(len(rng)), index=rng)
day3Ts = ts.resample('3D').mean()
print(day3Ts)
print(day3Ts.resample('D').asfreq())
# 升采样,要进行插值
# 数据降采样,降为月,指标是求和,也可以平均,自己指定

这样结果插入的控空值NaN

插值方法

  • ffill 空值取前面的值(参数为填的个数)
  • bfill 空值取后面的值
  • interpolate 线性取值
ffill?
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt

rng = pd.date_range('1/1/2023', periods=90, freq='D')
# 数据按天
ts = pd.Series(np.random.randn(len(rng)), index=rng)
day3Ts = ts.resample('3D').mean()
print(day3Ts.resample('D').ffill(1))
# 升采样,要进行插值
# 数据降采样,降为月,指标是求和,也可以平均,自己指定

?bfill
day3Ts.resample('D').bfill(1)
interpolate
print(day3Ts.resample('D').interpolate('linear'))

文章来源:https://blog.csdn.net/qq_43010742/article/details/135753465
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。