IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте авторский блог


Новый материал в ленте
  coverage - 7.6.10

Утилита позволяющая измерить процент покрытия тестами. Скачать можно по ссылке: https://pypi.python.org/pypi/coverage/


Python Дайджест. Выпуск 117

Анализ данных и производительность

(14.03.2016 - 20.03.2016)

поделиться выпуском 
pythondigest.ru: Выпуск 117

Конференции, события, встречи разработчиков

  Прошел Moscow Python Meetup, 18 марта

18 марта, в пятницу, прошел на Moscow Python Meetup 33 в офисе Mail.Ru Group. 

Статьи

  Линейные модели: простая регрессия

В прошлый раз мы подробно рассмотрели многообразие линейных моделей. Теперь перейдем от теории к практике и построим самую простую, но все же полезную модель, которую вы легко сможете адаптировать к своим задачам. Модель будет проиллюстрирована кодом на R и Python, причем сразу в трех ароматах: scikit-learn, statsmodels и Patsy.

  Передаем Python генераторы как обычный аргумент

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

  Релиз PyCharm 2016.1 RC (EAP)

Новый PyCharm уже доступен. 

Начиная с этой версии PyCharm меняет версионирование. Теперь версии будут иметь названия в формате YYYY.R

  Что есть в Visual Studio 2015 для разработчика на Python

С версией Visual Studio 2015 Community компания Microsoft впервые предложила разработчикам совершенно бесплатно пользоваться полнофункциональной версией своего мощного инструмента для разработки. Напомню, что функционал Visual Studio 2015 Community почти полностью предоставляет функционал версии Professional, но имеет некоторые лицензионные ограничения по использованию в коммерческой разработке.

Visual Studio 2015 Community так же, как и остальные версии инструмента, расширяема, благодаря Visual Studio Marketplace и всем официальным обновлениям инструмента. То есть огромное, постоянно увеличивающееся количество функционала доступно разработчикам совершенно бесплатно. Это касается и инструментов для разработки на языке Python.

Поддержка Python станет доступна, если отметить соответствующий пункт при установке среды. Это касается и CPython, PyPy, IronPython, поддержки IntelliSense, интерактивной отладки, интеграции и других возможностей Visual Studio для Python

  Настройка LaTeX-шаблонов для Jupyter notebook

Есть отличный инструмент для обучения/отчётов/написания умных книг про код — Jupyter Notebook. Если отчёт или книга, например, пишутся на кириллице, а нужно быстро сделать из этого PDF с красивыми формулами и тире правильной длины, то сразу обнаруживается проблема: в стандартном шаблоне, который Jupyter использует для конвертации блокнотов в PDF через LaTeX, нет подключения нужных пакетов с нужными параметрами, поэтому LaTeX просто не компилируется и PDF не получить.

  Модули расширения Python на Rust

“Absolute statements are the root of all evil.
The key is balance. There are no answers, only questions.”
????


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

Исходя из YAGNI принципа, Python позволяет программисту сосредоточиться на реализации ПО, избавив его от необходимости заботиться о низкоуровневых вещах таких как регионых памяти, в которых выделяются объекты, об её освобождении или о соглашениях о вызовах. 

На обратную проблему в одной из его лекций о Haskell указал Саймон Джонс. У него был слайд, на котором была нарисована стрелка, закрашенная градиентом: в начале было написано “no types”, посередине — “Haskell”, в конце — “Coq”. При этом, когда он указал на Coq, он сказал такую фразу: “This stresses power over usability. Right?! You need a PhD here!”[1]. Несмотря на то, что это была шутка, мантара Python – одна из любимых программистами особенностей этого языка. И из моего опыта, это то, что позволяет выпускать готовый продукт несколько быстрее.

  Профилирование Python в Production

Статья описывает опыт профилирования кода прям в продакшене.  Автору удалось сократить потребление CPU на 80%

  Парадокс Симпсона и немного Pandas

В этой статье я хочу рассмотреть один из наиболее известных примеров парадокса Симпсона, попутно немного рассказав о MultiIndex в Pandas.
Обо всем по порядку.

  Pandasql vs Pandas для решения задач анализа данных

В этой статье я бы хотела рассказать о применении python-библиотеки Pandasql. 

Многие люди, сталкивающиеся с задачами анализа данных, уже, скорее всего, знакомы с библиотекой Pandas. Pandas позволяет быстро и удобно работать с табличными данными: фильтровать, группировать, делать join над данными; строить сводные таблицы и даже рисовать графики (для простых визуализации достаточно функции plot(), а если хочется чего-то позаковыристее, то поможет библиотека matplotlib). На Хабре не раз рассказывали о применении этой библиотеки для работы с данными: раз, два, три.

Но по моему опыту далеко не все знают о библиотеке Pandasql, которая позволяет работать с Pandas DataFrames как с таблицами и обращаться к ним, используя язык SQL. В некоторых задачах проще выразить желаемое с помощью декларативного языка SQL, поэтому я считаю, что людям, работающим с данными, полезно знать о наличии такой функциональности. Если говорить о реальных задачах, то я использовала эту библиотеку для решения задачи join'a таблиц по нечетким условиям (необходимо было объединить записи о событиях из разных систем по примерно совпадающему времени, разрыв порядка 5 секунд).

Рассмотрим использование этой библиотеки на конкретных примерах.

  Введение в теорию вероятности (используем Python)

В посте вы найдете введение в теорию вероятности, об ее основах и некоторое количества кода на Python

Интересные проекты, инструменты, библиотеки

  irc-autobot - Context Manager для элементарного создания IRC ботов

from autobot import Autobot

with Autobot('irc.freenode.net', '#python', '[Wally]',
           log='transcript.log') as bot:
while True:
  r = bot.read() #  read will write to the specified log
  if "some trigger" in r['message']:
    bot.send("some message back to the chat")
  #respond to privmsg
  if r['command'] == 'PRIVMSG':
    bot.send("some message or command")

  awesome-tdd - сборник ресурсов про TDD

Список удивительных ресурсов: книги, видео, статьи об использовании TDD (Test Driven Development) в разных языках программирования, на данным момент имеются разделы по Python, PHP, Javascript, Ruby

  pysee - легковесная утилита для создания скриншотов на Linux и Mac OSX

Утилита позволяет сразу загрузить изображение на хостинг

  streampie - небольшая библиотека для простого параллельного исполнения кода

Библиотека реализована на threading и multiprocessing

from streampie import *

ints = [2498834631017, 14536621517459, 6528633441793, 1941760544137, 7311548077279, 
        8567757849149, 5012823744127, 806981130983, 15687248010773, 7750678781801, 
        2703878052163, 3581512537619, 12656415588017, 468180585877, 19268446801283, 
        5719647740869, 11493581481859, 366611086739]

def factor(n):
   result = set()
   for i in range(1, int(n ** 0.5) + 1):
      div, mod = divmod(n, i)
      if mod == 0:
         result |= {i, div}
   return sorted(list(result))[:-1]

def do_work(wid, items):
   for i in items:
      yield factor(i)

print ints >> ProcessPool(do_work, poolsize=8) >> list

  neo4j-driver - Neo4j драйвер для Python

from neo4j.v1 import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost")
session = driver.session()
session.run("CREATE (a:Person {name:'Bob'})")
result = session.run("MATCH (a:Person) RETURN a.name AS name")
for record in result:
    print(record["name"])
result.close()
session.close()

  rop_compiler - мульти-архитектурный ROP компилятор написанный на Python

ROP = Возвратно-ориентированное программирование

Релизы

  supervisor - 3.2.3

Система контроля и управления процессами. Изменения описаны по ссылке https://allmychanges.com/p/python/supervisor/#3.2.3. Скачать можно по ссылке: http://pypi.python.org/pypi/supervisor/

  lxml - 3.6.0

Мощный и быстрый модуль для обработки XML/HTML . Изменения описаны по ссылке https://allmychanges.com/p/python/lxml/#3.6.0. Скачать можно по ссылке: http://pypi.python.org/pypi/lxml/

  pymongo - 2.9.3

Python интерфейс для MongoDB. Изменения описаны по ссылке https://allmychanges.com/p/python/pymongo/#2.9.3. Скачать можно по ссылке: http://pypi.python.org/pypi/pymongo/

  virtualenv - 15.0.1

Инструмент создания виртуального рабочего окружения. Изменения описаны по ссылке https://allmychanges.com/p/python/virtualenv/#15.0.1. Скачать можно по ссылке: http://pypi.python.org/pypi/virtualenv/

  pip - 8.1.1

Утилита для управления модулями в Python. Изменения описаны по ссылке https://allmychanges.com/p/python/pip/#8.1.1. Скачать можно по ссылке: http://pypi.python.org/pypi/pip/

  pytest - 2.9.1

Простой мощный инструмент тестирования в Python. Изменения описаны по ссылке https://allmychanges.com/p/python/pytest/#2.9.1. Скачать можно по ссылке: http://pypi.python.org/pypi/pytest/

  ptpython - 0.31

Хороший REPL для Python. Изменения описаны по ссылке https://allmychanges.com/p/python/ptpython/#0.31. Скачать можно по ссылке: https://pypi.python.org/pypi/ptpython