У меня большая проблема с фильтрацией моих данных.Я много читал здесь о stackoverflow и других страницах и руководствах, но я не смог решить свою конкретную проблему ... Первая часть моего кода, где я загружаю свои данные в python, выглядит следующим образом:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from arch import arch_model
spotmarket = pd.read_excel("./data/external/Spotmarket_dhp.xlsx", index=True)
r = spotmarket['Price'].pct_change().dropna()
returns = 100 * r
df = pd.DataFrame(returns)
Таблица Excel содержит 43 000 значений в одном столбце и включает почасовые цены.Я использую эти данные для расчета процентного изменения от часа к часу, и проблема в том, что иногда происходят большие изменения между 1000 и 40000%.Фрейм данных выглядит следующим образом:
df
Out[12]:
Price
1 20.608229
2 -2.046870
3 6.147789
4 16.519258
...
43827 -16.079874
43828 -0.438322
43829 -40.314465
43830 -100.105374
43831 700.000000
43832 -62.500000
43833 -40400.000000
43834 1.240695
43835 52.124183
43836 12.996778
43837 -17.157795
43838 -30.349971
43839 6.177924
43840 45.073701
43841 76.470588
43842 2.363636
43843 -2.161042
43844 -6.444781
43845 -14.877102
43846 6.762918
43847 -38.790036
[43847 rows x 1 columns]
Я хочу исключить эти выбросы.Я пробовал разные способы, такие как вычисление mean
и std
и исключил все значения, которые + и - в три раза больше std
от mean
.Он работает для небольшой части данных, но для полных данных среднее значение и стандартное отклонение равны NaN
.У кого-нибудь есть идея, как я могу отфильтровать свой фрейм данных?