gpt4 book ai didi

python - 删除两个时间序列中相同的异常值

转载 作者:行者123 更新时间:2023-12-01 01:49:12 24 4
gpt4 key购买 nike

我有一个关于消除两次序列中异常值的问题。一个时间序列包括现货市场价格,另一个时间序列包括发电量。这两个系列是从 2012 年到 2016 年的,都是 CSV 文件,带有时间戳和值。功率输出示例:2012-01-01 00:00:00,2335.2152646951617 价格示例:2012-01-01 00:00:00,17.2

由于现货市场价格波动很大,并且有很多异常值,所以我对它们进行了过滤。对于第二个时间序列,我必须删除具有相同时间戳的值,这些值在价格时间序列中被消除。我考虑过生成一个包含已删除值的列表,并编写一个循环来删除第二个时间序列中具有相同时间戳的值。但到目前为止,这还没有奏效,我也没有真正开始。有人有想法吗?

我的Python代码如下:

import pandas as pd
import matplotlib.pyplot as plt

power_output = pd.read_csv("./data/external/power_output.csv", delimiter=",", parse_dates=[0], index_col=[0])
print(power_output.head())
plt.plot(power_output)

spotmarket = pd.read_csv("./data/external/spotmarket_dhp.csv", delimiter=",", parse_dates=[0], index_col=[0])
print(spotmarket.head())

r = spotmarket['price'].pct_change().dropna() * 100
print(r)
plt.plot(r)

Q1 = r.quantile(.25)
Q3 = r.quantile(.75)
q1 = Q1-2*(Q3-Q1)
q3 = Q3+2*(Q3-Q1)

a = r[r.between(q1, q3)]
print(a)
plt.plot(a)

有人可以帮助我吗?

最佳答案

如果您的问题是关于如何比较两个时间戳,您可以查看 this .

基本上你可以这样做:

out = r[~r.between(q1, q3)] # negation of your between to get the outliers
df=pd.merge(spotmarker,out,on=['date'],how="outer",indicator=True)
df=df[df['_merge']=='left_only']

这是一个合并操作,仅保留仅出现在左侧数据帧中的行

关于python - 删除两个时间序列中相同的异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50904088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com