Python академия
Відкрити в Telegram
Учи Python быстро и легко. Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам. ✔ Подходит для прокачки навыков кодирования. По всем вопросам @evgenycarter
Показати більше7 291
Підписники
Немає даних24 години
-17 днів
-3930 день
Архів дописів
7 291
Чтение файлов и запись в них
Чтобы выполнить любую из операций чтения и записи, нам нужно сделать три основных шага:
Открыть файл
Выполнить операцию
Закрыть файл
Мы можем проделывать эти шаги, используя два паттерна. Объяснить их на словах сложно, но мы сделаем это при помощи кода.
Подписывайтесь на канал 👉@pythonofff
7 291
Missingno
Большие грязные наборы данных и часто отсутствующие значения в них — это одна из частых проблем при работы с датасетами, и это важно отлавливать такие моменты.
Для таких целей существует Missingo — библиотека, которая имеет в себе небольшой набор простых в использовании средств для визуализации отсутствующих данных и утилит, которые позволяют быстро получить сводку полноты или отсутствия вашего набора данных.
Подписывайтесь на канал 👉@pythonofff
7 291
❓ Как выглядит типичный рабочий стол Python-разработчика?
📆 25 мая в 20:00 мск
Вебинар: Рабочее место Python-разработчика
👉 На занятии вы узнаете:
- Что такое IDE и какие IDE существуют;
- Как настроить самую полнофункциональную IDE для Python — PyCharm Community Edition;
- Какие бывают версии Python и почему их так много;
- Что такое виртуальные среды, и как разрабатывать несколько проектов на одной машине;
- Как запустить приложение в Docker-контейнере
💪 В результате занятия вы сможете организовать изолированную среду для разработки и запуска приложения с помощью venv и docker, узнаете, почему существуют различные версии Python, а также как организовать свое рабочее место, чтобы разрабатывать несколько различных проектов.
👉 Зарегистрируйтесь, чтобы участвовать https://otus.pw/BCjl/
📌 Вебинар приурочен к старту онлайн-курса «Специализация Python Developer» для начинающих Python-разработчиков.
Нативная интеграция. Информация о продукте www.otus.ru
7 291
Дальнейшая обработка данных
Иногда, чтобы очистить данные, бывает нужно отбросить некоторые столбцы, создать новый столбец из существующих данных или удалить строки, не содержащие определенных данных.
Здесь в третьей строке мы отбрасываем два столбца с именами Id и Name и возвращаем копию нового датафрейма.
Четвертая строка проверяет, содержит ли столбец Type строку frozen или green, затем возвращает True и сохраняет эту строку.
Подписывайтесь на канал 👉@pythonofff
7 291
Работаем с картинками в Python
Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в Python.
В сегодняшнем примере мы применим ее для конвертации картинки в черно-белую, обратим цвета, вертикально отзеркалим и сохраним в файл.
Метод Image.open('resources/img/cat.jpg') считывает картинку из папки.
img.convert('L') трансформирует картинку в черно-белую.
ImageOps.invert(image) обращает цвета.
img.transpose(Image.FLIP_LEFT_RIGHT) вертикально отзеркаливает картинку.
img.save('grayscale_cat.jpg') сохранит картинку на диске.
Больше официальных примеров и документацию можно посмотреть тут.
Подписывайтесь на канал 👉@pythonofff
7 291
Перемещение и удаление файлов в Python
Чтобы переместить файл, мы можем воспользоваться модулем os или модулем shutil. Вы увидите перемещение файла при помощи метода rename() из модуля os.
Синтаксис rename() тот же, только в качестве второго аргумента указывается путь к целевому файлу с именем самого файла.
os.rename(исходноеместонахождение, целевоеместонахождение)
Подписывайтесь на канал 👉@pythonofff
7 291
Захват экрана Windows
Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot.
Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана.
Её можно применить, например, в реализации игровых ботов.
7 291
Отбрасываем строки с пустыми данными
После выполнения предыдущих шагов по очистке в столбцах остаются пустые данные. От этих пустых строк нужно избавиться, иначе это создаст неопределенность при обучении модели.
Подписывайтесь на канал 👉@pythonofff
7 291
Цикл событий в Python
Цикл событий — это ядро для каждого асинхронного приложения. Он нужен для того, что бы запускать асинхронные задачи и функции обратного вызова.
Поговорим теперь о низкоуровневых методах:
get_running_loop — Возвращает текущий цикл событий в потоке. Если его нет, то будет RuntimeError. Может быть вызвана только с корутины или функции обратного вызова.
get_event_loop — Делает тоже самое что и функция выше, но если set_event_loop не был вызван, то в добавок ещё закрепит новый цикл.
new_event_loop — Создает новый цикл событий.
set_event_loop — Устанавливает цикл событий для текущего потока.
Немного о методах для работы с циклами событий:
run_forever — Запускает цикл событий до тех пока stop не будет вызван.
stop — Останавливает цикл событий.
Также есть методы is_closed и is_running для проверки состояния.
Пример можете посмотреть на картинке выше. Много другого полезного вы можете прочитать в документации.
Подписывайтесь на канал 👉@pythonofff
7 291
#вакансия #удалённо #parttime #python #преподаватель
OTUS – образовательная платформа. У нас авторские курсы разной степени сложности, вступительное тестирование для студентов и преподаватели-практики из крупнейших компаний. 6 лет мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT.
Вакансия: преподаватель онлайн-курса на английском языке Python Backend Developer. Professional
Можно без опыта преподавания, мы поможем вам освоить best practices.
Локация: удаленно
Преподаватель раскрывает тему с помощью теории и примеров из практики. Занятия проходят в Zoom в вечернее время.
Условия: 100 евро за один вебинар (полтора часа), дополнительные активности, которые оплачиваются отдельно: перевод презентаций, проверка домашнего задания, проверка проекта и т.д.
С нами вы сможете ✅
- структурировать свой опыт и знания;
- прокачать софт-скиллы;
- прокачать свой английский
Бонусы 🎁
- наши курсы со скидкой/бесплатно;
- можно приглашать лучших выпускников к себе на работу;
- воркшопы и конференции для наших преподавателей.
Обсудить подробнее @anna_phoenix7
7 291
Дальнейшая обработка данных
Иногда, чтобы очистить данные, бывает нужно отбросить некоторые столбцы, создать новый столбец из существующих данных или удалить строки, не содержащие определенных данных.
Здесь в третьей строке мы отбрасываем два столбца с именами Id и Name и возвращаем копию нового датафрейма.
Четвертая строка проверяет, содержит ли столбец Type строку frozen или green, затем возвращает True и сохраняет эту строку.
Подписывайтесь на канал 👉@pythonofff
7 291
Воспроизводим аудиофайлы
Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через pip.
Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла: playsound('path/to/file.mp3')
В качестве параметра функции можно указать путь к .mp3 или .wav файлу, или вообще его url.
https://docs.python.org/3/library/concurrent.futures.html
7 291
Новички-бэкендеры часто выбирают между Java и Python. На бесплатном вебинаре Яндекс Практикума разберёмся, чем отличаются эти языки.
→ 22 мая в 19:00
Вести вебинар будут действующие программисты — эксперты и выпускники Практикума. Они расскажут:
— что это за языки и зачем нужны;
— какой язык подойдёт для игр, корпоративных приложений, машинного обучения или автоматизации;
— какие сложности есть в изучении;
— как выбрать язык под себя;
— какие специалисты нужнее на рынке труда.
В конце встречи можно будет задать вопросы и получить совет.
→ Приходите на встречу, чтобы сделать первый шаг к карьере.
7 291
Как исправить «NameError: Name Is Not Defined» в Python
Мы получили сообщение об ошибке: NameError: name 'age' is not defined. Это означает, что переменная age не существует, мы её не задали.
Чтобы исправить это, мы можем создать переменную, и наш код будет работать нормально. К примеру, это можно сделать следующим образом.
Подписывайтесь на канал 👉@pythonofff
7 291
Асинхронно скачиваем файлы
Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл for, тем самым скачав их последовательно одна за одной.
Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.
Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены.
Далее метод .map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls.
Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.
Подписывайтесь на канал 👉@pythonofff
7 291
Определение метода тестирования
Это нужно для того, чтобы мы могли оценивать нашу модель и выводить точность на тестовом наборе.
Большие отличия от метода тестирования заключаются в том, что мы используем model.eval(), чтобы перевести модель в режим тестирования, и torch.no_grad(), который отключит вычисление градиента, так как мы не используем обратное распространение во время тестирования.
Наконец, мы вычисляем средние потери для набора тестов и общую точность.
Подписывайтесь на канал 👉@pythonofff
7 291
Синхронизация потоков
Блокировка — один из фундаментальных механизмов синхронизации в threading. Зачастую блокировки используются для доступа к разделяемым ресурсам.
Для каждого такого разделяемого ресурса нам нужно создать объект типа Lock и, когда нам потребуется доступ к ресурсу, следует вызвать acquire, что бы взять контроль над блокировкой.
В том случае когда нам потребуется освободить блокировку, то мы вызываем release. Стоит учесть то, что блокировку стоит освобождать даже в случае возникновения ошибок. Для этого можно использовать try-finally.
Также все это можно заменить через оператор with. Оператор with автоматически захватывает блокировку перед входом в блок, и освобождает её после выхода.
Интерактивный пример — тут. Ссылка документация — тут.
Подписывайтесь на канал 👉@pythonofff
7 291
Модуль os
Данный модуль предоставляет доступ к уникальным функциям, зависящим от конкретной системы. Атрибут os.name покажет тип операционной системы:
posix — для linux и macOS
nt — для операционных систем семейства Windows
java — для систем, работающих в виртуальной Java-машине (например, Android)
Модуль позволяет создавать, удалять, переименовывать файлы и папки. Возможность менять директорию и писать вместо /foler/file1, /foler/file2 и тд, можно просто сменить директорию через функцию os.chdir().
os.access() - проверить наличие файла и возможность записи/чтение.
os.listdir() - список файлов и вложенных каталогов.
os.path.abspath() - вернет абсолютный путь по относительному.
Полный список и документацию можно посмотреть через dir() и help() соответственно.
Подписывайтесь на канал 👉@pythonofff
7 291
Извлечение таблиц из PDF
Camelot — это удобная библиотека, которая поможет вам извлечь любую таблицу из PDF файла.
Также есть возможность использоваться Excalibur, это веб интерфейс Camelot.
Почему вам стоит использовать Camelot:
— Каждая таблица является DataFrame;
— Возможность экспорта в множество разных форматов;
— Можно отбрасывать таблицы на основе таких метрик как точность и пробелы, без необходимости вручную просматривать таблицу.
Подписывайтесь на канал 👉@pythonofff
7 291
Как заменить атрибут в именованном кортеже
Что делать, если значение одного атрибута необходимо изменить?
Вам нужно обновить его в данных. Для этого просто воспользуемся методом ._replace()
Подписывайтесь на канал 👉@pythonofff
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
