Среднее значение объектов в массиве в Python с NumPy - PullRequest
0 голосов
/ 15 июня 2019

Я хочу знать среднее значение значений, содержащихся в объекте моего файла JSON.Я сделал цикл по массиву для извлечения значений, затем попытался вычислить среднее значение с помощью NumPy

Пример моего JSON:

{
    "gm_url": "https://www.url.com/",
    "results": [
        {
            "marque": "Alfa",
            "sold": true
            "price_int_eu": 49280
        },
        {
            "marque": "Alfa",
            "sold": true,
            "price_int_eu": 46000
        }
    ]
}

Как получить среднее значение для всех "price_int_eu" идобавить строку после "gm_url"?

Мое предположение:

    for i in data:
        results = i["results"]

        if not results == []:
            for x in results:
                issold = x["sold"]
                priceinteu = x["price_int_eu"]

                if priceinteu is not None:
                    i["mean"] = np.mean(priceinteu)
                    print(i["mean"])

1 Ответ

0 голосов
/ 15 июня 2019

Чтобы использовать np.mean.

for i in data:
    results = i["results"]

    if not results == []:
        prices = [x["price_int_eu"] for x in results]
        prices = [x for x in prices if x is not None]
        i["mean"] = np.mean(prices)

, вам нужно поместить все цены в один список (или какой-либо другой массивоподобный объект). Обратите внимание, что следующая за последней строкой работает, только еслиу вас явно есть что-то вроде

{
    "marque": "Alfa",
    "sold": false,
    "price_int_eu": null
}

в вашем JSON.Если цена просто отсутствует, вам нужно изменить x["price_int_eu"] на x.get("price_int_eu"), чтобы она заработала.

Редактировать: Для работы с непустым results, но без фактических цен:

for i in data:
    results = i["results"]

    prices = [x["price_int_eu"] for x in results]
    prices = [x for x in prices if x is not None]
    if not prices == []:
        i["mean"] = np.mean(prices)
    else: i["mean"] = None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...