Исключить выбросы с IQR в Python? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь исключить выбросы в 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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...