Forwarded from Библиотека питониста | Python, Django, Flask
🔁 Как писать «правильные» циклы на Python: разбираемся на примерах
Несколько соображений о том, как сделать код циклов Python более производительным и ясным с помощью функций встроенного модуля itertools: product, isslice, takewhile.
https://proglib.io/sh/QmYbLWSflt
Несколько соображений о том, как сделать код циклов 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")
background_path = os.path.join(curdir,"background.psd")
star_path = os.path.join(curdir,"star.jpg")
Forwarded from Библиотека питониста | Python, Django, Flask
🐍 Топ 10 трендов разработки на Python в 2020 году
Мы каждый день узнаем о новых технологиях и языках программирования. Единственный язык, который оставался неизменным на протяжении многих лет – это Python.
https://proglib.io/sh/cECwniTbgo
Мы каждый день узнаем о новых технологиях и языках программирования. Единственный язык, который оставался неизменным на протяжении многих лет – это Python.
https://proglib.io/sh/cECwniTbgo
Forwarded from Инжиниринг Данных (Dmitry Anoshin)
Введение в Pandas на русском. https://dfedorov.spb.ru/pandas/
Forwarded from местный датасасер ☮️
Вчера вышел Python 3.9! 🥳
Лично я по питону сильно соскучился, ибо уже второй месяц пишу только на C и плюсах, а тут еще и обнова подъехала 😎
Итак, что нового и действительно интересного:
1. Новые операторы для словарей: finally можно нормально их мержить:
Отдельный респект за очередную отсылку к Монти Пайтону на странице обновы
Лично я по питону сильно соскучился, ибо уже второй месяц пишу только на 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") # выведет def3. Более удобные декораторы, теперь там можно делать что-то такое:
"abcdef".removesuffix("def") # выведет abc
@buttons[0].clicked.connect📗 Также добавили плюшек в аннотации, обновили поддержку Юникода и много других мелочей, о которых можно почитать на официальном сайте.
def spam():
...
Отдельный респект за очередную отсылку к Монти Пайтону на странице обновы
Forwarded from Datalytics
Дмитрий Федеров перевёл официальные туториалы по Pandas на русский язык. Теперь это один из тех (немногочисленных) русскоязычных материалов, которые я могу смело рекомендовать любому, кто начинает изучать Pandas
http://dfedorov.spb.ru/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
**Для начинающих**
Руководство по 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
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 использует утиную типизацию, так что по сути вам не нужны никакие дженерики, чтобы работать с множественными типами данных.
Однако, если вы все же хотите внести немного типизации в ваш суровый говнокод, существует решение в виде библиотеки
Рассмотрим все вышесказанное на примере такой структуры данных как стек. Создадим стек интов. При дальнейшей попытке запушить туда строку возникнет
@hw_code
А теперь, когда я забайтил вас этим заголовком, перейдем к делу. Python использует утиную типизацию, так что по сути вам не нужны никакие дженерики, чтобы работать с множественными типами данных.
Однако, если вы все же хотите внести немного типизации в ваш суровый говнокод, существует решение в виде библиотеки
typing
, которое будет работать только для версий Python выше 3.5.Рассмотрим все вышесказанное на примере такой структуры данных как стек. Создадим стек интов. При дальнейшей попытке запушить туда строку возникнет
Type error
.@hw_code
Forwarded from Python Academy
Композиция классов
Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.
В этом случае один из классов (в примере выше это
Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора. В таком случае необходимо использовать слабые ссылки из модуля
#классы #ооп
Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.
В этом случае один из классов (в примере выше это
Salary
) является полем другого (Employee
). Сложного здесь, как вы видите, ничего нет.Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора. В таком случае необходимо использовать слабые ссылки из модуля
weakref
, о котором поговорим позже.#классы #ооп
Forwarded from Python Academy
Анонимные функции
Анонимные функции являются крайне полезным аспектом, которым либо пренебрегают, либо чрезмерно пользуются. Новичкам они могут показаться сложными, но это совсем не так.
В целом, структура очень простая –
Такие функции чаще всего используются, когда они больше нигде не понадобятся, то есть определять полноценную функцию нет смысла. Типичные примеры использования –
#функции #lambda
Анонимные функции являются крайне полезным аспектом, которым либо пренебрегают, либо чрезмерно пользуются. Новичкам они могут показаться сложными, но это совсем не так.
В целом, структура очень простая –
lambda <arguments>: <expression>
. Сначала пишете ключевое слово lambda
, далее аргументы, двоеточие и какое-то выражение, результат которого автоматически вернется.Такие функции чаще всего используются, когда они больше нигде не понадобятся, то есть определять полноценную функцию нет смысла. Типичные примеры использования –
map
и filter
.#функции #lambda
Forwarded from Python Academy
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction
Forwarded from Python Academy
Находим соответствия в строках
В стандартной библиотеке Python существует модуль
Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
#difflib #строки
В стандартной библиотеке Python существует модуль
difflib
, в котором есть интересный метод get_close_matches
. Он позволяет найти в списке строки, похожие на некую исходную.Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
n
, который задаёт максимальное число возвращаемых совпадений.#difflib #строки
Forwarded from Python Academy
Модуль subprocess
Всем доброго вечера, сегодня мы поговорим немного о модуле
Данный модуль предоставляет унифицированный интерфейс для создания дополнительных процессов с вызовом программ, а также может подключать к стандартным потокам ввода, вывода и вывода об ошибках. Модуль был добавлен в стандартную библиотеку
Для создания процессов в
Сегодня мы расскажем о функциях
Для захвата вывода процесса нам нужно передать
Иногда программа ожидает от нас ввода из стандартного потока
Для того, чтобы породить исключение в случае получения кода возврата об ошибке мы можем передать флаг
И как бонус у этой функции есть аргумент
#процессы #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