import random
import pandas as pd
import numpy as np
import csv
import matplotlib.pyplot as plt
# 读入一阶差分序列
df = pd.read_csv('差分data.csv')
q=1000
diff_seq = np.squeeze(df[-q:].values.tolist()).tolist() # pd转化列表,还要去单元素的[]
n = 5 # 重新排列的次数
new_lsts = []
# 用洗牌器重新排列 random.shuffle
for i in range(n):
random.shuffle(diff_seq)
new_lsts.append(list(diff_seq))
dfn = pd.DataFrame(new_lsts) #转化为pd
dfn_transposed = dfn.transpose() # 转置
dfn_transposed_cusm = dfn_transposed.cumsum()
#dfn_transposed_cusm.to_csv('fg6.csv')
pl = dfn_transposed_cusm
fig, (ax1) = plt.subplots(1, 1, figsize=(19.2, 10.8))
x = np.linspace(0, 5000, len(pl))
ax1.plot(x, pl[1]+2599, label="n=%d" % n)
ax1.grid(axis='y')
dfn_transposed_cusm.to_csv('重排差分data.csv')
此例中的数据我选取的是甲醇加权15M周期收盘价格,计算相邻价格的差价后,把差价序列保存至“差分data.csv“中,数据格式就只有一列,没有表头
我重拍序列用到的是random.shuffle()洗牌算法函数。
我生成了5组序列,并又保存至 '重排差分data.csv' 文件中
以下是我输出的其中一组新序列走势图
以下是原始走势图