Обновить
829.42

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Кому на бюджете жить хорошо?

Время на прочтение31 мин
Охват и читатели9.1K


ВСТУПЛЕНИЕ


В каком году — рассчитывай,
В какой земле — угадывай,
На столбовой дороженьке
Сошлись семь мужиков:
Семь временнообязанных,
Подтянутой губернии,
Уезда Терпигорева,
Пустопорожней волости,
Из смежных деревень:
Заплатова, Дырявина,
Разутова, Знобишина.
Горелова, Неелова —
Неурожайка тож,
Сошлися — и заспорили:
Кому живется весело,
Вольготно на Руси?

Н.Некрасов

Пару месяцев назад на одном IT мероприятии мне довелось лицезреть в работе Pandas. Парень, который с ним работал не делал ничего особенно удивительного. Но простые сложения значений, вычисления средних, группировки проиводились так виртуозно, что, даже при всей своей предвзятости к Питону, я был очарован. Манипуляции выполнялись на довольно приличных датасетах по данным капитального ремонта за период кажется с 2004 по 2019 год. Сотни тысяч строк, но все работало очень быстро.


В общем когда мне еще через пару месяцев пришлось кое-что анализировать, я решил попробовать сделать это с помощью Pandas. Провозился пару дней с тем, что с помощью Excel я бы смог сделать за день. Тем не менее мне удалось.


С апреля мы все сидим на карантине. Сидел я и думал, что бы мне такое сделать, чтобы не очень сложное и чтобы стильно и модно было. К тому времени я уже видел кучу всякой инфографики про коронавирус, про пожары в лесу, про выборы. Делать то, что уже делали не хотелось, да и браться сразу за сложное не решался, сомневаясь, что смогу закончить. Тут мне попалась какая-то статья про уже отшумевшее явление "barchart race" или по-русски "гонки столбчатых диаграмм". Вы можете подумать, что эта статья будет про barchart race. Да, но только отчасти. Barchart race будет только в конце, а статья скорее о том, как не обладая, какими-то выдающимися способностями и знаниями в области матана и прочей черной магии, можно сделать анализ больших данных и представить результат в доступной для широких масс форме. Итак, поехали.

Пагинация для телеграм бота на Python

Время на прочтение2 мин
Охват и читатели17K

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

Читать дальше →

Пилим веб-опросник как у Meduza: пошаговый гайд для начинающих

Время на прочтение6 мин
Охват и читатели31K
Меня зовут Егор, я Full-stack разработчик в Leader-ID. В этой статье я хочу поделиться простым рецептом по созданию красивого и удобного веб-опросника наподобие тех, что делает Meduza. Он умеет показывать статистику после ответа на отдельные вопросы, подсчитывать общий балл, выдавать комментарии, выгружать данные для анализа и шарить результаты в соцсети. Для реализации этой задачи я выбрал Django, DRF, Python и базу данных PostgreSQL.



Все детали — под катом.
Читать дальше →

Мобильный eye-tracking на PyTorch

Время на прочтение12 мин
Охват и читатели7.3K

Рынок eye-tracking'а, как ожидается, будет расти и расти: с $560 млн в 2020 до $1,786 млрд в 2025. Так какая есть альтернатива относительно дорогим устройствам? Конечно, простая вебка! Как и другие, этот подход встречает много сложностей, будь то: большое разнообразие устройств (следовательно, сложно подобрать настройки, которые будут работать на всех камерах одинаково), сильная вариативность параметров (от освещения до наклона камеры и ее положения относительно лица), порядочные вычислительные мощности (несколько cuda-ядер и Xeon — самое то)...


Хотя подождите-ка, действительно ли надо тратиться на топовое железо да еще и видеокарту закупать? Может, есть способ уместить все вычисления на cpu и не потерять при этом в скорости?


(Well, если бы не было такого способа, то не было бы и статьи про то, как обучить нейронку на PyTorch)

Читать дальше →

Безопасная работа с секретами при сборке в Docker Compose

Время на прочтение5 мин
Охват и читатели19K
Перевод статьи подготовлен в преддверии старта курса «Web-разработчик на Python».




Когда вы собираете Docker-образ вам могут понадобиться секреты, например, пароль к приватному репозиторию пакетов. Вы не хотите, чтобы этот секрет в конечном итоге оказался в образе, потому что тогда любой, кто получит доступ к образу, получит доступ и к вашу приватному репозиторию.
Примечание: Если вы думаете «Почему бы просто не использовать переменные среды?», которые используются для секретов в рантайме при создании образа. Эта статья посвящена секретам сборки, которые используются при создании образа с помощью Docker-файла.
Более новые версии Docker поддерживают секреты с помощью экспериментального сервиса BuildKit, а в Docker Compose 1.25 и более поздних версиях уже можно создавать образы с помощью BuildKit. К сожалению, по состоянию на март 2020 года, возможность безопасной работы с секретами из Compose все еще находится в процессе разработки.
Читать дальше →

Внутри виртуальной машины Python. Часть 1

Время на прочтение9 мин
Охват и читатели38K

Оглавление



Введение


Примечание к переводу
В Python есть такое понятие, как «code object», которое (насколько я знаю) не встречается в других языках. Привожу определение этого термина, а подробности можно узнать в этой единственной статье на русском языке.
Читать дальше →

Отступы в Python — вариант решения

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

Казалось бы, в случае с Python такая операция не возможна.

По крайней мере, я нигде не смог найти, как моментально обнаружить случайно смещенные отступы в Python. Пришлось решить эту проблему самому.

Читать дальше →

MASK-RCNN для поиска крыш по снимкам с беспилотников

Время на прочтение11 мин
Охват и читатели9K

В белом-белом городе на белой-белой улице стояли белые-белые дома… А как быстро вы можете найти все крыши домов на этой фотографии?

Все чаще можно слышать про планы правительства провести полную инвентаризацию объектов недвижимости с целью уточнения кадастровых данных. Для первичного решения этой задачи можно применить простой способ, основанный на расчете площади крыш капитальных строений по аэрофотоснимкам и дальнейшее сопоставление с кадастровыми данными. К сожалению, ручной поиск и расчет занимает много времени, а поскольку новые дома сносятся и строятся непрерывно, то расчет требуется повторять снова и снова. Сразу возникает гипотеза, что этот процесс можно автоматизировать с помощью  алгоритмов машинного обучения, в частности, Computer Vision. В этой статье я расскажу о том, как мы в «НОРБИТ» решали эту задачу и с какими сложностями столкнулись.
Читать дальше →

Повторяем когортный анализ, выполненный в Power BI, силами Python

Время на прочтение7 мин
Охват и читатели13K
Добрый день уважаемые читатели! Поводом для написания данной публикации послужил вебинар, который я посмотрел на Youtube. Он был посвящен когортному анализу продаж. Автор использовал для работы с данными платформу Power BI Desktop. Ссылку на указанное видео приводить не буду, чтобы эта статья не была расценена как реклама, но по ходу повествования постараюсь делать спойлеры к первоисточнику, чтобы лучше объяснять логику собственного решения. Данный вебинар натолкнул меня на идею, что интересно было бы повторить возможности формул DAХ функциями библиотеки Pandas.

Два момента, на которых хочу заострить внимание. Во-первых, данный материал рассчитан на начинающих аналитиков, которые только делают свои первые шаги в применении языка программирования Python. Идеальный вариант, если читатели обзорно знакомы с платформой для BI-аналитики Power BI. Во-вторых, так как источником вдохновения послужили расчеты DAX, я буду по мере возможности «копировать» алгоритмы автора, при этом неизбежно произойдет отход от основных парадигм программирования.

Со вступительным словом все. В путь!

Читать дальше →

Визуализация сетевых топологий, или зачем еще сетевому инженеру Python #2

Время на прочтение49 мин
Охват и читатели39K

Привет, Хабр! Эта статья написана по мотивам решения задания на недавно прошедшем онлайн-марафоне DevNet от Cisco. Участникам предлагалось автоматизировать анализ и визуализацию произвольной сетевой топологии и, опционально, происходящих в ней изменений.


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

Всем заинтересовавшимся добро пожаловать под кат!


Читать дальше →

Домашний кластер на Dask

Время на прочтение9 мин
Охват и читатели7.8K

image


Я недавно проводил исследование, в рамках которого было необходимо обработать несколько сотен тысяч наборов входных данных. Для каждого набора — провести некоторые расчеты, результаты всех расчетов собрать вместе и выбрать "лучший" по некоторым критериям. По сути это bruteforce перебор. Тоже самое происходит при подборе параметров ML моделей с помощью GridSearch.


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


И поскольку в современной квартире сейчас можно найти больше одного "недогруженного" компьютера, а задача явно подходит для массового параллелизма — пора собрать свой домашний кластер и запускать такие задачи на нем.

Читать дальше →

Правильные графики Covid-19

Время на прочтение5 мин
Охват и читатели15K

Во времена повсеместной одержимости библиотеками и веб-фреймворками мы стали забывать радость от решения задач минимальными средствами. В этой статье, мы запилим веб-сервис на актуальную тему, используя ванильные Python и JavaScript, а также, задеплоим его в GitLab Pages. Быстро, минималистично, без лишних зависимостей, и максимально элегантно.


Вдохновившись видосом How To Tell If We're Beating COVID-19 от minutephysics, я набросал в свободное (от удаленной работы и домашних дел) время сервис, который на основе данных с Карты распространения коронавируса в России и мире от Яндекса строит графики, аналогичные тем, что на странице Covid Trends. Вот, что из этого вышло:



Интересно? Погнали!

Читать дальше →

Python, pandas и решение трёх задач из мира Excel

Время на прочтение5 мин
Охват и читатели98K
Excel — это чрезвычайно распространённый инструмент для анализа данных. С ним легко научиться работать, есть он практически на каждом компьютере, а тот, кто его освоил, может с его помощью решать довольно сложные задачи. Python часто считают инструментом, возможности которого практически безграничны, но который освоить сложнее, чем Excel. Автор материала, перевод которого мы сегодня публикуем, хочет рассказать о решении с помощью Python трёх задач, которые обычно решают в Excel. Эта статья представляет собой нечто вроде введения в Python для тех, кто хорошо знает Excel.


Читать дальше →

Ближайшие события

Groupby aggregation в pandas

Время на прочтение3 мин
Охват и читатели83K


Агрегация является одной из самых частых операций при анализе данных. Разные технологии предлагают нам кучу способов эффективно группировать и агрегировать интересующие нас поля(столбцы, признаки). В этой статье будет рассказано про реализацию агрегации в pandas.
По своей специализации я очень мало работаю с python, но часто слышу про плюсы и мощь этого языка, в особенности когда речь заходит про работу с данными. Поэтому я проведу здесь параллель операций с T-SQL и приведу некотрые примеры кода. В качестве данных я буду использовать наверное самый популярный data set — Ирисы Фишера.
Читать дальше →

Основы easygui python. Часть 1

Время на прочтение3 мин
Охват и читатели17K
Это статья об основах модуля easygui для языка Python. Рекомендую использовать Python ветки 2-x, так как это позволит совместить табуляцию и пробелы. Конечно же, данный модуль не для написания программ, а в качестве дополнения. Статья написана для самых начинающих, поэтому будет много комментариев.
Дать статье небольшой шанс

HackTheBox. Прохождение Obscurity. OS Command Injection и Race Condition

Время на прочтение4 мин
Охват и читатели5.2K
image

Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.

В данной статье эксплуатируем уязвимость в программном коде python, а также выполняем атаку Race Condition.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Читать дальше →

Как помочь pandas в обработке больших объёмов данных?

Время на прочтение4 мин
Охват и читатели12K
Библиотека pandas — это один из лучших инструментов для разведочного анализа данных. Но это не означает, что pandas — это универсальное средство, подходящее для решения любых задач. В частности, речь идёт об обработке больших объемов данных. Мне довелось провести очень и очень много времени, ожидая, пока pandas прочтёт множество файлов, или обработает их, вычислив на основе находящихся в них сведений какие-то интересующие меня показатели. Дело в том, что pandas не поддерживает механизмы параллельной обработки данных. В результате этому пакету не удаётся на полную мощность воспользоваться возможностями современных многоядерных процессоров. Большие наборы данных в pandas обрабатываются медленно.



Недавно я задался целью найти что-то такое, что позволит помочь мне в деле обработки больших данных. Мне удалось найти то, что я искал, я встроил найденный инструмент в свой конвейер обработки данных. Я использую его для работы с большими объёмами данных. Например — для чтения файлов, содержащих 10 гигабайт данных, для их фильтрации и агрегирования. Когда я справляюсь с решением подобных задач, я сохраняю то, что у меня получилось, в CSV-файле меньшего размера, который подходит для pandas, после чего приступаю к работе с полученными данными с помощью pandas.

Вот блокнот Jupyter, содержащий примеры к этому материалу, с которыми можно поэкспериментировать.
Читать дальше →

Простейший тренажер английских слов с использованием Питона и Балаболки

Время на прочтение3 мин
Охват и читатели7.2K
Существует большое количество различных методик изучения иностранных языков вообще и английского в частности. Но какая бы методика ни была, учить слова все равно надо.

Для этих целей есть очень много различных тренажеров с выбором слов для изучения. Тем не менее, их возможностей иногда не хватает.

На одном из таких тренажеров я уже изучила достаточное количество слов. И столкнулась с одной проблемой. Тренажер предлагает русское слово, в ответ нужно написать это слово на английском, диктор (на самом деле синтезатор речи) потом озвучивает английский вариант. Все слова я пишу отлично, однако, когда я вижу английский текст, я помню только то, что я это слово учила, но не помню, что оно означает. То есть я поняла, что мне не хватает узнаваемости слов.

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

Исходя из этих соображений, я поняла, что я хочу сделать свой тренажер для повторения изученных мною слов. Этот тренажер должен быть англо-русским по направлению перевода и с озвучкой английского текста, чтобы тренировать аудирование.

Порядок решения задачи был следующим:

  • Я подготовила csv файл из двух столбцов: 'word' и 'translate', в который включила все нужные мне слова.
  • Я скачала консольную версию Балаболки — известной бесплатной программы tts (text-to-speach), предназначенной для озвучки любого текста как из файла, так и из буфера обмена.
  • Написала работающий код в Jupiter Notebook под операционкой Windows 10.

К использованию Балаболки я пришла не сразу. Сначала я хотела использовать библиотеку pyttsx3, но при инициализации пакета pyttsx3.init() вылетала куча ошибок, а при запуске pyttsx3.init('dummy') не было звука. Пробиться через взаимное непонимание с этим пакетом мне не удалось, поэтому пришлось искать другие варианты, и с Балаболкой у меня получилось.
Читать дальше →

Отложенные ретраи силами RabbitMQ

Время на прочтение7 мин
Охват и читатели36K

Меня зовут Алексей Казаков, я техлид команды Клиентских коммуникаций в ДомКлике. В этой статье я хочу поделиться с вами «рецептом», который позволил нам реализовать отложенные ретраи при использовании брокера сообщений RabbitMQ


rabbit_retry
Читать дальше →

Python: Работа с базой данных, часть 2/2: Используем ORM

Время на прочтение14 мин
Охват и читатели129K
часть 1/2: Используем DB-API часть 2/2: Используем ORM
Это вторая часть моей статьи по работе с базой данных в Python. В первой части мы рассмотрели основные принципы коммуникации с SQL базой данных, а в этой познакомимся с инструментарием, позволяющим облегчить нам это взаимодействие и сократить количество нашего кода в типовых задачах.

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


Требуемый уровень подготовки: базовое понимание SQL и Python (код статьи проверялся под Python 3.6). Желательно ознакомится с первой частью, так как к ней будут неоднократные отсылки и сравнения. В конце статьи есть весь код примеров под спойлером в едином файле и список ссылок для более углубленного изучения материала.
Читать дальше →

Вклад авторов