Telegram Web Link
Работа с датасетами

Datasets — легкая и расширяемая библиотека для обмена и доступа к наборам данных (они же датасеты).

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

Из плюсов библиотеки можно выделить следующее:

— Кэширование данных;
— Совместимость с NumPy, pandas, PyTorch, TenserFlow 2 и JAX;
— Все наборы данных отображаются в памяти.

Основные методы, которые понадобятся в работе с датасетами:

list_dataset() — показывает доступные датасеты;
load_dataset() — создает экземпляр датасета;
list_metrics() — показывает доступные метрики;
load_metric() — создает экземпляр метрики.

Много всего полезного об этой библиотеке вы можете найти в документации.

#Datasets
Python-разработка для начинающих

Мечтаете о карьере в сфере IT — начните с Python. Этот язык рекомендуют в качестве первого языка программирования, и для начала обучения вам не понадобятся технические знания и навыки.  

Программа акцентирована на практике. За 6 занятий вы освоите логику и синтаксис языка, научитесь работать с данными, изучите основные инструменты для написания кода. С нуля разработаете приложение «To do-list» и создадите чат-бота для Telegram на Python. Попробуйте ↓
https://netolo.gy/hwh
Чтение аудио-файлов в массив numpy

Одним из основных действий в начале аудиоанализа конечно же является чтение аудио-файла и выгрузка его звукового временного ряда в виде массива numpy. Для этих целей хорошо подходит модуль scipy.io.wavfile, входящий в состав библиотеки scipy и предоставляющий функции для чтения и записи wav файлов.

Для чтения используем функцию read, которая возвращает частоту дискретизации и массив numpy со значениями звукового давления для каждого кадра. Т.к. файлы формата wav могут состоять из одного(моно) либо из двух(стерео) каналов, то и массив numpy будет, соответственно, являться одномерным либо двумерным (по подмассиву на каждый канал).

В качестве примера также добавили построение в matplotlib графика сигнала по полученным значениям.

#scipy #audio
Пишете на Java или Python и хотите работать в Яндексе?

Тогда приглашаем 22 января на Fast Track для бэкенд-разработчиков. На мероприятии вы можете за один день пройти собеседование и получить оффер в команду HR Tech Яндекса.

HR Tech занимается интранетом Яндекса. Например, это сервисы для процесса найма в Яндекс, учебная платформа Яндекс.Контест и другие сервисы для организации работы сотрудников. Подробнее о команде здесь.

Регистрируйтесь, решайте отборочный тест и до встречи 22 января!
Регистрация: https://clck.ru/Zebfm
Углубляемся в Итератор

Итератор нужен для доступа к объектам без раскрытия внутреннего предоставления.

Существует два вида итераторов: внешний,внутренний.

Внешний итератор — когда процессом обхода управляет клиент, с помощью магического метода __next__.

Внутренний итератор — принимает callback функции и уведомляет клиента о получение следующего элемента.

Сам итератор это объект, который возвращает свои элементы по одному разу. В Python это любой объект у которого есть магический метод __next__. Метод возвращает следующий элемент, если он существует, в другом случаи вернет StopIteration.

Так-же у каждого итератора должна быть метод __iter__, он возвращает сам итератор.

Интерфейса итератора состоит из first,next,current.

first — возвращает итератор к началу агрегата,что-то вроде reset.

next — переходит на следующий элемент агрегата, в случаи если нет следующего элемента, то будет StopIteration.

current — возвращает текущий элемент.

#Python #Итератор
OpenCV и веб-камера

Для работы с компьютерным зрением и картинками/видео существует библиотека OpenCV.

Устанавливается она через PIP:
pip install opencv-python.

Для простой демонстрации попробуем получить картинку с веб-камеры и вывести видео в графическое окно.

Команда cap = cv2.VideoCapture(0) инициализирует веб-камеру (цифра указывает её индекс).

Строчка ret, frame = cap.read() вытягивает из веб-камеры картинку в переменную frame и статус получения картинки в ret. Если ret == True, значит все прошло успешно.

Команда cv2.imshow('webcam', frame) создаст графическое окно с картинкой и покажет его.

Чтобы прервать работу скрипта используется проверка на нажатие определенной клавиши на клавиатуре:
if cv2.waitKey(1) & 0xFF == ord('q'):

Метод cap.release() освобождает веб-камеру из скрипта примера и позволяет ее использовать в других программах, а cv2.destroyAllWindows() уничтожит графические окна, созданные библиотекой openCV.

#opencv
Конвертируем файлы в аудио-формате

В Python мы можем решить задачу конвертации из одного аудио-формата в другой как всегда множеством способов. Наиболее приятным решением, как по мне, является использование модуля pydub, который представляет собой интерфейс-надстройку над ffmpeg.
pydub позволяет загружать, редактировать и сохранять аудио-файлы в любом формате, поддерживаемом ffmpeg.

Для загрузки файла нам нужно выбрать функцию from_ c соответствующим форматом в названии из класса AudioSegment. Также можно воспользоваться наиболее общей функцией from_file, передав путь к файлу и его формат.

Для экспорта файла с нужным форматом, в который мы хотели его сконвертировать, используем функцию export у полученного после загрузки файла объекта класса AudioSegment.

#audio #pydub
Визуализация данных на карте с Folium

Folium позволяет как и привязать данные к карте для визуализации фоновых картограмм, так и передавать векторные, растовые, HTML визуализации в качестве маркеров на карте.

Библиотека поддерживает настраиваемые наборы фрагментов MapBox или Cloudmade.

Есть разные виды маркеров начиная с простого маркера местоположения в стиле листовки с всплывающим окном и всплывающей подсказкой HTML.

Вы так-же можете налаживать изображения, видео, GeoJSON и TopoJSON.

Результат работы — https://i.imgur.com/QhNDb5I.png

#Folium
Работа с датой и временем

Dateutil
– предоставляет расширения для методов, уже имеющихся в datetime, имеет возможности для обработки сырых данных.

Dateutil разбит на несколько подклассов:

easter — используется для вычисления даты и времени с учетом разных календарей, а именно: западный,православный,юлианский.

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

relativedata — предназначен для замены компонентов даты.

Так-же следуют упомянуть utils , он содержит основные функции для работы с датой и временем.

#Dateutil
Получение аудиопотока с микрофона

Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств.

PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev).

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

Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации.

В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav.

#pyaudio #audio
Генерация шумов Перлина

Шум перлина — это математический алгоритм по генерированию процедурной текстуры (градиентного шума) псевдо-случайным методом.

Для нас он может пригодится в разных ситуациях: от симуляции временных рядов разных показателей до генерации процедурного мира как в Minecraft.

Для Python уже существует библиотека-реализация этого алгоритма, называется она perlin-noise.

pip install perlin-noise

Сначала мы создаем обьект генератора шумов, и задаем ему количество октав и seed для встроенного рандомизатора:
noise = PerlinNoise(octaves=10, seed=1)

Обьявляем размер желаемой 2d матрицы:
xpix, ypix = 100, 100

И используя списочное включение, генерируем 2d матрицу, где интенсивность значения от координат задает наш обьект генератора noise:
pic = [[noise([i/xpix, j/ypix]) for j in range(xpix)] for i in range(ypix)]

Пример картинки можно посмотреть в комментариях к этому посту.

#random #perlin
Форматирование чисел в f-строках

Начиная с версии Python 3.6, стали доступны f-строки. Это удобный способ форматирования текста. Но не все знают, что он умеет вставлять float числа с настраиваемым количеством знаков после запятой.

Допустим у нас есть float число pi = 3.14159265359. Если мы его просто скорвертируем в строку, то она примет следующий вид:

>>> str(3.14159265359)
'3.14159265359'


Но что если важно выписать только до сотых долей? Делается это черех f-строку:

>>> f'Число Пи это {pi:.2f}'
'Число Пи это 3.14'


После обьявления имени переменной мы вставляем следующую комбинацию: .2f, где цифра как раз и указывает, сколько знаков после запятой нужно преобразовать в строку. Более подробно это описано в PEP 498.

#fstring
Определяем координаты места по его адресу

Для работы с адресами существует удобная библиотека geopy.

Она использует публичные API (например OpenStreetMap Nominatim, Google Geocoding API и другие). Благодаря этому мы можем искать разные обьекты и их координаты по адресу.

При поиске мы можем указать как номер и улицу дома, название города, страны, так и полный адрес определенного места.

Официальную документацию можно просмотреть тут. Ознакомиться с интерактивным примером можно тут.

#geopy
Библиотека для работы с итераторами

Встроенный пакет itertools содержит сборник полезных итераторов, поговорим о нескольких из них:

combinations — возвращает кортеж в отсортированном порядке без повторяемых элементов.

chain — возвращает элементы из объекта, пока он не будет исчерпан, затем переходит к следующему, используется для обработки множества последовательностей как единой.

permutations — возвращает все возможные перестановки.

filterfalse — возвращает все элементы для которых функция вернула false.

startmap — применяет функцию к каждому элементу последовательности распаковывая его.

В самой библиотеке их намного больше, поэтому советую вам ознакомится с документацией. Ознакомиться с интерактивным примером можно тут.

#itertools
Объёмы данных растут, а компании ищут новый тип сотрудников - квалифицированных инженеров данных

Сегодня роль инженера данных востребована везде, где работа с данными влияет на успех выполнения бизнес-задач. А уже в ближайшие годы мы увидим новые «гибридные» профессии, в работе которых используются технические и бизнес-компетенции.

Обучиться новой профессии можно в Школе Инженерии Данных от билайн.

За три месяца в Школе ты сможешь:
• научиться работать с основными инструментами, используемыми в чаптере инженеров данных (sql, scala, spark, airflow, ide, linux/bash, Hadoop, ci/cd);
• освоить типовые способы интеграции, обработки, хранения данных;
• узнать во время стажировки, как устроены потоки данных внутри компании;
• закрепить полученные знания, работая сначала над учебным, а потом над реальным продуктом;
• открыть для себя новые возможности, став участником одной из продуктовых команд.

Узнать больше о Школе и зарегистрироваться ты можешь уже сегодня, пройдя по ссылке. Регистрация и вступительные испытания до 6 февраля включительно. Старт Школы — 14 февраля.

Подписывайся на телеграм-канал Школы и следи за новостями программы!
Извлечение таблиц из PDF

Camelot — это удобная библиотека, которая поможет вам извлечь любую таблицу из PDF файла.

Также есть возможность использоваться Excalibur, это веб интерфейс Camelot.

Почему вам стоит использовать Camelot:

— Каждая таблица является DataFrame;
— Возможность экспорта в множество разных форматов;
— Можно отбрасывать таблицы на основе таких метрик как точность и пробелы, без необходимости вручную просматривать таблицу.

#camelot
Определяем расстояние между двумя точками на Земле

Для работы с координатами воспользуемся библиотекой geopy, о которой уже был пост ранее.

Ознакомиться с интерактивным примером можно тут.
Официальную документацию можно просмотреть тут.

#geopy
Синхронизация потоков

Блокировка — один из фундаментальных механизмов синхронизации в threading. Зачастую блокировки используются для доступа к разделяемым ресурсам.

Для каждого такого разделяемого ресурса нам нужно создать объект типа Lock и, когда нам потребуется доступ к ресурсу, следует вызвать acquire, что бы взять контроль над блокировкой.

В том случае когда нам потребуется освободить блокировку, то мы вызываем release. Стоит учесть то, что блокировку стоит освобождать даже в случае возникновения ошибок. Для этого можно использовать try-finally.

Также все это можно заменить через оператор with. Оператор with автоматически захватывает блокировку перед входом в блок, и освобождает её после выхода.

Интерактивный пример — тут. Ссылка документация — тут.

#threading
Асинхронно скачиваем файлы

Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл for, тем самым скачав их последовательно одна за одной.

Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.

Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены.

Далее метод .map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls.

Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.

Ознакомиться с интерактивным примером можно тут.

#threading
Пишете на Python или Go и хотите работать в Яндексе?

Или хотите перейти на них с другого языка программирования? Тогда приглашаем 26–27 февраля на Fast Track для бэкенд-разработчиков. На мероприятии, которое пройдет в онлайн-формате, вы сможете за пару дней получить оффер в команду, которая разрабатывает FinOps платформу Яндекса.

FinOps платформа — это внутренняя высоконагруженная финансово-операционная система, через которую проходят денежные транзакции всех сервисов Яндекса. Приходите работать с нами, задачи сложные, но действительно интересные.

Регистрируйтесь, решайте отборочный тест и до встречи 26 и 27 февраля!
2025/02/24 12:36:33
Back to Top
HTML Embed Code: