Парсинг JSON в Python с библиотекой ujson
Сегодня мы поговорим о библиотеке ujson, которая предоставляет эффективные инструменты для работы с данными в формате JSON в Python.
JSON (JavaScript Object Notation) - это популярный формат для обмена данными между приложениями, и ujson позволяет эффективно парсить JSON-данные и создавать JSON-объекты.
Что такое ujson?
ujson - это модуль Python, который предоставляет более быструю альтернативу стандартному модулю json в стандартной библиотеке Python. Благодаря оптимизациям, ujson может значительно ускорить парсинг и создание JSON-данных.
Преимущества ujson перед обычным json:
1. Скорость:ujson известен своей высокой производительностью, что делает его отличным выбором для приложений, где важна скорость обработки JSON-данных.
2. Легкость использования: Интерфейс библиотеки очень похож на стандартный модуль json, поэтому переключение на ujson не требует больших изменений в коде.
3. Совместимость:ujson совместим с большинством современных версий Python.
4. Эффективность: Парсер ujson создан с акцентом на эффективность и оптимизацию, что позволяет экономить ресурсы при обработке JSON-данных.
P.S. Автор этого поста вдохновился идеей, предложенной одним из наших подписчиков. Если и у вас есть свои предложения, не стесняйтесь делиться ими в комментариях!
#python#ujson#json#библиотеки
📰 AMD GAIA 0.16 Introduces C++17 Agent Framework For Building AI PC Agents In Pure C++
AMD's GAIA open-source framework for building AI agents that run locally on Ryzen AI hardware via the Radeon iGPUs and/or NPUs is up to version 0.16. With this new GAIA release is support for developing AI agents purely in C++ with no longer needing to depend upon Python...
🔗 Source: https://www.phoronix.com/news/AMD-GAIA-0.16
#amd#opensource#python
Курсы Spatial Thoughts и Geospatial Python Tutorials
Spatial Thoughts (https://spatialthoughts.com) — образовательная платформа, основанная Уджавалом Ганди (Ujaval Gandhi). Она предлагает курсы по анализу пространственных данных на Python:
🎓Python Foundation for Spatial Analysis
🎓Mapping and Data Visualization with Python
Материалы курсов бесплатны, за прохождение курса с инструктором придется заплатить.
🔗Дополняет учебные курсы сайт Geospatial Python Tutorials (https://www.geopythontutorials.com). Он содержит примеры применения пакетов GeoPandas, Xarray, Dask, SamGeo и мн. др. для решения практических задач. Вот, например, извлечение информации из нескольких новостей о конфликтах между людьми и слонами в Индии, и геокодирование мест конфликтов — все с помощью ChatGPT.
В качестве среды для работы рекомендуется Google Colab.
#python#ИИ
Анализ видео: визуализация
Последний пост серии, первые два по ссылкам:
1. Подготовка данных
2. Анализ данных
Для виза снова используем cv2. Если данные записаны в таблицу xlsx, то понадобится модуль ast для корректного считывания синтаксиса списков.
При считывании объединяем данные в одномерный список (colors) и создаем пустой массив:
# суммарное число цветов
colors_length = len(colors)
# высота изображения в пикселях
height = 500;
# создаем пустой массив
# height: число строк
# colors_length: число столбцов
# 3: массив цвета (r, g, b)
img_array = np.zeros((height, colors_length, 3), np.uint8)
После этого заполняем массив цветами и с помощью cv2 создаем изображение:
# заполняем массив
for x in range(colors_length):
img_array[:,x] = colors[x]
# записываем в файл
cv2.imwrite('file_name.png', img_array)
Подробнее о параметрах файла палитры и том, как с ним работать, — в карточках.
P.S. И как обычно, полный код этой части в комментариях.
#датавиз#python
Анализ видео: цвет
На прошлом этапе мы записали по одному кадру видео в секунду в список captures_array. Имея данные о кадрах в формате rgb, мы можем определить преобладающие оттенки.
Для этого используем метод кластеризации, а точнее kmeans. Он позволяет разбить массив на нужное число групп по близости значений и выделить их центры (центроиды). Эти значения являются доминирующими оттенками кадра. На мой взгляд, детальность данных будет достаточная, если выделить пять центроидов (k). Этот алгоритм нужно применить в цикле к каждому кадру (capture):
# определяем размеры массива
shape = capture.shape
# пересобираем в одномерный массив
ar = capture.reshape(np.product(shape[:2]), shape[2]).astype(float)
# находим заданное число центроидов
centroids,_ = kmeans(ar, k)
В итоге получаем палитру каждого кадра фильма в хронологическом порядке. Как ее визуализировать, расскажу в следующем посте.
P.S. Полный код оставила в комментариях.
#датавиз#python
Анализ видео: подготовка данных
Я использую python, но общая логика алгоритма может пригодиться и для других языков.
Сначала нужно покадрово считать видео. Сделаем это с помощью библиотеки OpenCV (cv2):
import cv2
# видео целиком
video = cv2.VideoCapture('file_name.mp4')
# частота кадров
fps = int(video.get(cv2.CAP_PROP_FPS))
# число кадров во всем видео
frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
Теперь можно запустить цикл и собрать один кадр за каждую секунду. В цикле повторяется такой код:
ret, frame = video.read()
Каждую итерацию считывается следующий кадр. В ret записывается информация о корректности считывания (True/False), frame — кадр в формате массива с rgb каждого пикселя.
Имея частоту видео, мы можем записать только один кадр в секунду. Такого объема данных достаточно для анализа. В итоге получаем список с числом кадров равным длительности видео в секундах. Что делать с ним дальше расскажу в следующем посте.
P.S. В комментариях полный код этой части.
#датавиз#python
История(12м) как в Альфа-Банке сокращали размер JSON файла, который передается на устройство для работы SDUI. Решением стала шаблонизация для отказа от одинаковых блоков UI с разными данными
#оптимизация#json