util/lib/analysis_package/timeseries/time_base.py

133 lines
3.2 KiB
Python
Raw Normal View History

2024-05-12 12:18:24 +00:00
import pandas as pd
import numpy as np
class Time_base(object):
"""
时间序列基础模块
"""
def __init__(self):
pass
@staticmethod
def normalize(x):
"""
将时间序列数据归一化
x : 时间序列数据
"""
x = np.array(x)
return np.log2(x / np.sqrt(np.sum(x**2)))
@staticmethod
def lag(x, lag):
"""
滞后
x : 时间序列数据
lag : 滞后时间
"""
return pd.Series(x).shift(lag)
@staticmethod
def moving_average(x, window_size):
"""
移动平均窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).mean()
@staticmethod
def moving_median(x, window_size):
"""
移动中值窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).median()
@staticmethod
def moving_std(x, window_size):
"""
移动标准差窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).std()
@staticmethod
def moving_max(x, window_size):
"""
移动最大值窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).max()
@staticmethod
def moving_min(x, window_size):
"""
移动最小值窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).min()
@staticmethod
def moving_sum(x, window_size):
"""
移动和窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).sum()
@staticmethod
def moving_quantile(x, window_size, quantile):
"""
移动分位数窗口
x : 时间序列数据
window_size : 窗口大小
quantile : 分位数
"""
return pd.Series(x).rolling(window_size).quantile(quantile)
@staticmethod
def moving_corr(x, y, window_size):
"""
移动相关窗口
x : 时间序列数据
y : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).corr(pd.Series(y))
@staticmethod
def moving_cov(x, y, window_size):
"""
移动协方差窗口
x : 时间序列数据
y : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).cov(pd.Series(y))
@staticmethod
def moving_skew(x, window_size):
"""
移动偏度窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).skew()
@staticmethod
def moving_kurt(x, window_size):
"""
移动峰度窗口
x : 时间序列数据
window_size : 窗口大小
"""
return pd.Series(x).rolling(window_size).kurt()