Я пытаюсь исключить выбросы в Python. Как рассчитать IQR для price_int_eu и исключить объекты результатов, которые являются выбросами (я стер другие ключи объектов результата, но это имеет смысл сделать)?
Образец JSON:
[{
"objectID": 12736,
"results": [
{
"price_int": null
},
{
"price_int": 50372
},
{
"price_int": 51930
},
{
"price_int": 58824
},
{
"price_int": 12542
}
]
}]
Я пытался использовать эту функцию в цикле for:
for i in data:
import json
import numpy as np
with open('./input/output_db_gm.json', encoding='utf-8') as data_file:
data = json.loads(data_file.read())
for i in data:
results = i["results"]
if not results == []:
price_int = [x["price_int"] for x in results]
price_int = [x for x in price_int if x is not None]
if not price_int == []:
quartile_1, quartile_3 = np.percentile(price_int)
iqr = quartile_3 - quartile_1
lower_bound = quartile_1 - (iqr * 1.5)
upper_bound = quartile_3 + (iqr * 1.5)
prices_iqr = np.where((price_int > upper_bound) | (price_int < lower_bound))
print(prices_iqr)
else:
pass
Но я не уверен, куда я иду, это не работает.
У меня есть TypeError: percentile() missing 1 required positional argument: 'q'