Ответы пользователя по тегу JSON
  • Увеличение списка до нужной длинны в pyhon?

    Maksim_64
    @Maksim_64
    Data Analyst
    Обычно когда мы имеем дело с множеством списков разной длинны и нужно выбрать из каждого по индексу то zip_longest из itertools решает проблему. Способов применения может быть много, простейший выглядит вот так
    from itertools import zip_longest 
    x = [1, 2, 3, 4, 5, 6, 7] 
    y = [8, 9, 10] 
    z = [9, 3, 4, 5]
    list(zip_longest(x,y,z))
    Ну а там в зависимости от того как эти списки получаются и что на выходе можно по разному реализовать. zip_longrst имеет параметр fillvalue, чем заполнять по умолчанию None. Ну и надо помнить про распаковку, то есть если все эти списки собраны ну например в какой то один список то можно использовать так.
    data = [x,y,z]
    list(zip_longest(*data))
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну во первых, pandas read_json и json_normalize (для вложенных json). Затем этот фрейм или подсет фрейма отправляешь в базу, методом to_sql если все делаешь правильно с точки зрения pandas (весь код будет без единого цикла) то это ускорит очень серьезно. Еще больше можно ускорить библиотекой polars она имеет схожий синтакс с pandas у ней куда меньший функционал по манипуляции данных, но она фокусируется на скорости в том числе и чтения файлов.

    Думаю скорости pandas будет достаточно, если нет то polars. Начать лучше с pandas документация очень хорошая, да и кода всего ничего будет.
    Ответ написан
    1 комментарий
  • Как получить доступ к свойству объекта JSON не зная его название?

    Maksim_64
    @Maksim_64
    Data Analyst
    Можно использовать pandas. Нормализовать json, кода всего ничего будет.
    import requests
    import json
    import pandas as pd
    response = requests.get(url="https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Apple")
    info = json.loads(response.text)
    df = pd.json_normalize(info)
    print(df.iloc[:,-1][0])


    Более правильный способ будет брать колонку не iloc а regex выраженим в pandas так можно, потому что, название колонки будет содержать весь путь до extract и заканчиваться на exctract. То есть возможна более сложная и стабильная выборка. То есть вот так
    print(df.filter(regex='extract$',axis=1).iloc[0,0])
    Результат идентичный, но так на много надежнее, мы не надеемся что нужная нам колонка последняя, а находим ее независимо от ее положения.
    Ответ написан
    Комментировать
  • Как обратиться к элементу json?

    Maksim_64
    @Maksim_64
    Data Analyst
    id_key = list(parsed_app_json.keys())[0]
    print(parsed_app_json[id_key]['data']['name'])

    В id_key будет всегда попадать первый ключ, соответственно вы сможете обращаться к ключу name независимо от значения первого ключа.
    Ответ написан