#python python... PYTHON 🔛 🚀
11 subscribers
912 photos
7 videos
158 files
1.54K links
Download Telegram
🔁 Как писать «правильные» циклы на Python: разбираемся на примерах

Несколько соображений о том, как сделать код циклов Python более производительным и ясным с помощью функций встроенного модуля itertools: product, isslice, takewhile.

https://proglib.io/sh/QmYbLWSflt
curdir = os.path.abspath(os.path.dirname(__file__))
background_path = os.path.join(curdir,"background.psd")
star_path = os.path.join(curdir,"star.jpg")
🐍 Топ 10 трендов разработки на Python в 2020 году

Мы каждый день узнаем о новых технологиях и языках программирования. Единственный язык, который оставался неизменным на протяжении многих лет – это Python.

https://proglib.io/sh/cECwniTbgo
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Введение в Pandas на русском. https://dfedorov.spb.ru/pandas/
Вчера вышел Python 3.9! 🥳
Лично я по питону сильно соскучился, ибо уже второй месяц пишу только на C и плюсах, а тут еще и обнова подъехала 😎

Итак, что нового и действительно интересного:
1. Новые операторы для словарей: finally можно нормально их мержить:
dict1 = {'x': 1, 'y': 2}
dict2 = {'x': 4, 'z': 5}
print(dict1 | dict2) # выведет {'x': 4, 'y': 2, 'z': 5}
2. Методы строк, позволяющие получить строку без указанного префикса/суффикса:
"abcdef".removeprefix("abc")  # выведет def
"abcdef".removesuffix("def") # выведет abc
3. Более удобные декораторы, теперь там можно делать что-то такое:
@buttons[0].clicked.connect
def spam():
...

📗 Также добавили плюшек в аннотации, обновили поддержку Юникода и много других мелочей, о которых можно почитать на официальном сайте.
Отдельный респект за очередную отсылку к Монти Пайтону на странице обновы
Forwarded from Datalytics
Дмитрий Федеров перевёл официальные туториалы по Pandas на русский язык. Теперь это один из тех (немногочисленных) русскоязычных материалов, которые я могу смело рекомендовать любому, кто начинает изучать Pandas

http://dfedorov.spb.ru/pandas/
Forwarded from Datalytics
🐼 Pandas (part I) 📈

**Для начинающих**

Руководство по Pandas для начинающих
Курс по работе с Pandas
Визуальный гайд по работе с Pandas
Русскоязычный гайд про Pandas
Видеолекция Ильи Щурова про Pandas
Обзорная статья про Pandas
🔥 Русскоязычный гайд по Pandas от Алексея Куличевского
🔥 Введение в pandas: анализ данных на Python (на русском)
Как устроены Series в Pandas
Советы о том как выбирать колонки датафрейма в Pandas
Всеобъемлющий туториал по Pandas
Иллюстрированная статья про функции объединения в pandas
Чтение файлов csv, создание dataframe и фильтрация данных
100 полезных приёмов и хаков в Pandas от Kevin Markham, собранные в одном ноутбуке
Агрегация и группировка данных с помощью pandas
Мини-курс по Pandas на Kaggle
🔥 Перевод официальных туториалов Pandas на русский

**Оформление**

Вывод датафреймов с помощью styling
Форматирование таблиц в Pandas
Как создать оформленную HTML таблицу из pandas DataFrame

**Методы**

Обзор метода read_csv
Выбор сэмпла из датафрейма с помощью sample
Метод query
Трансформация данных (pivot, stack, unstack)
Как сделать ВПР (VLOOKUP) в Pandas
Map и replace
Выбор данных (slicing)
Почему Method Chaining — это хорошо
Melt в pandas
Apply и lambda
Как работают группировки
Новые методы в pandas 0.25.0
iterrows() vs itertuples()
Методы трансформации данных
Методы loc и iloc для индексации по датафрейму
Как разбить данные на диапазоны в pandas: cut и qcut
Метод resample для изменения группировки данных, содержащих дату-время
Три метода Pandas, о которых вы, возможно, не знали
4 крутых функции Numpy
Обзор пяти простых, но эффективных, методов pandas: shift, mask, value_counts, nlargest, nsmallest
Обзор нескольких новых функций в Pandas 1.0
Forwarded from Datalytics
🐼 Pandas (part II) 📊

Tips & Tricks

Шпаргалка по Pandas 1
Шпаргалка по Pandas 2
Набор небольших советов
Обзор различных хаков Pandas
Подборка полезных сниппетов 1
Подборка полезных сниппетов 2
Шпаргалка по работе с различными форматами файлов (csv, xml, json и многие другие)

Другое

Выгрузка файла csv из Jupyter Notebook через браузер
Как в Pandas разбить одну колонку на несколько
Сборник упражнений по Pandas
Примеры использования нестандартных команд в Pandas
Туториал по обработке данных
Советы для эффективной обработки данных в Pandas
Импорт данных в Pandas
Очистка и подготовка данных
Статья про индексы в датафреймах
Что под капотом у фильтрации в Pandas
Как трансформировать JSON с множественными уровнями вложенности в DataFrame
Как ухаживать за пандами [видео]
Как сделать исключение одного датафрейма из другого
Обработка данных в разных форматах
Regex with Pandas and Named Groups
Что принёс нам Pandas 1.0
Примеры использования pandas для тестирования алгоритмов сбора и обработки данных
Как использовать if-else конструкции для формирования новых колонок в pandas
Библиотека sidetable — value_counts() на стериодах
Про
преобразование значений из численного в категориальный
Индексы в Pandas

Производительность

Сравнение производительности функций
Руководство по использованию pandas для анализа больших датасетов
Организация циклов через iterrows и apply
Почему каждый Data Scientist должен знать Dask
Производительность циклов в pandas
Оптимизация памяти при работе с pandas
Советы как снизить потребление памяти в Pandas
Как анализировать большой объем данных с помощью библиотеки vaex
Ускорение обработки больших датасетов с помощью dask и parquet
Добавляем параллельные вычисления в Pandas с pandarallel
Ian Ozsvald - Making Pandas Fly
Forwarded from Hello World
​​Дженерики в Python

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

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

Рассмотрим все вышесказанное на примере такой структуры данных как стек. Создадим стек интов. При дальнейшей попытке запушить туда строку возникнет Type error.

@hw_code
Forwarded from Python Academy
Композиция классов

Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.

В этом случае один из классов (в примере выше это Salary) является полем другого (Employee). Сложного здесь, как вы видите, ничего нет.

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

#классы #ооп
Forwarded from Python Academy
Анонимные функции

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

В целом, структура очень простая – lambda <arguments>: <expression> . Сначала пишете ключевое слово lambda, далее аргументы, двоеточие и какое-то выражение, результат которого автоматически вернется.

Такие функции чаще всего используются, когда они больше нигде не понадобятся, то есть определять полноценную функцию нет смысла. Типичные примеры использования – map и filter.

#функции #lambda
Forwarded from Python Academy
Дробные числа

По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.

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

Поэтому для идеальных вычислений лучше использовать Fraction, который представляет и хранит число в виде рациональной дроби.

#числа #fraction
Forwarded from Python Academy
​​Находим соответствия в строках

В стандартной библиотеке Python существует модуль difflib, в котором есть интересный метод get_close_matches. Он позволяет найти в списке строки, похожие на некую исходную.

Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.

Также в метод можно передать необязательный аргумент n, который задаёт максимальное число возвращаемых совпадений.

#difflib #строки
Forwarded from Python Academy
​​Модуль subprocess

Всем доброго вечера, сегодня мы поговорим немного о модуле subprocess:)

Данный модуль предоставляет унифицированный интерфейс для создания дополнительных процессов с вызовом программ, а также может подключать к стандартным потокам ввода, вывода и вывода об ошибках. Модуль был добавлен в стандартную библиотеку python на замену os.system() и os.popen().

Для создания процессов в subprocess используются функции run(), call(), check_call(), check_output(), а также класс Popen.

Сегодня мы расскажем о функциях call, check_call, check_output и run, а завтра поговорим о Popen. Они используются, когда требуется запустить программу и дождаться ее выполнения.

call - вызывается для создания процесса, ожидает выполнения и возвращает код выполнения (если программа отработала корректно, вернется 0).

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

check_output - использовалась, когда нужно было захватить вывод запущенного процесса. Эта функция была нужна, так как потоки ввода и вывода запущенного процесса через call привязывались именно к вводу и выводу данного процесса, поэтому вывод таким образом захватить не получится.

run - это функция пришла в python версии 3.5 на замену трем предыдущим и умеет все, что и они и немножко больше (данные три функции были оставлены для обратной совместимости). run() возвращает объект CompletedProcess, который привязан к результату.

Для захвата вывода процесса нам нужно передать capture_output=True, после чего в аргументах объекта stdout и stderr будут записаны соответствующие выводы, запущенной программы. Но по умолчанию вывод будет вывод будет в байтах, чтобы получить читабельный текст мы также передаем флаг text=True.

Иногда программа ожидает от нас ввода из стандартного потока stdin, в этом случае мы можем передать ввод через аргумент input.

Для того, чтобы породить исключение в случае получения кода возврата об ошибке мы можем передать флаг check=True.

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

#процессы #subprocess