Содержание
- Editorial Notes
- Анализ документов HTML и XML
- defaultdict: безошибочный словарь
- Получение текста из элементов
- Данные
- Разбор XML из строки
- 16.11 Множество возможных вариантов создания пакетов Python
- Строки
- Mastering GUI Programming with Python
- Вступление
- 6. Просторность
- Визуализация данных
- namedtuple: кортеж, только именованный
- 16.9 Создание графического установщика
- Сбор данных
- Bonus: Norfair
- 16.6 Указание дополнительных файлов с помощью манифеста
- Шаги обобщения текста
- PyTorch Lightning
- Requests
- Создание документов HTML и XML
- Установка PyCharm
- Conclusions
- DataFrame
- HiPlot
- Заключение
Editorial Notes
Please avoid listing modules where…
- You are one of the developers (and you just want to promote your work somewhere).
- The modules in question do not have widespread approval or usage.
If you do want to make people aware of a module, package or library (perhaps your own), consider submitting it to one or more of the directories mentioned in PublishingPythonModules, perhaps also adding it to the topic-specific part of this site (eg. WebProgramming, GuiProgramming).
Do list modules that:
Get recommended often in the Tutor or comp.lang.python lists
Please provide a short description for each module. Try to put each module in the category that matches its «main» audience, since a module might fall into a number of categories.
Анализ документов HTML и XML
До сих пор мы рассматривали только создание новых элементов, присвоение им атрибутов и т.д. Давайте теперь рассмотрим пример, в котором у нас уже есть файл HTML или XML, и мы хотим проанализировать его, чтобы извлечь определенную информацию. Предполагая, что у нас есть файл HTML, который мы создали в первом примере, давайте попробуем получить имя тега одного конкретного элемента, а затем распечатать имена тегов всех элементов.
print(root.tag)
Вывод:
html
Теперь, чтобы перебрать все дочерние элементы в корневом узле и распечатать их теги:
for e in root: print(e.tag)
Вывод:
head title body
defaultdict: безошибочный словарь
Обычный словарь dict в Python содержит пары вида «ключ:значение». Значение из словаря можно запросить по ключу. В случае если запрашиваемого ключа в словаре нет, Python выдаст ошибку:
Поведение логичное, но не слишком удобное для работы. Словарь defaultdict из библиотеки collections поступает иначе: если запросить у такого продвинутого словаря ключ, которого в нём нет, он не обидится и не выкинет ошибку, а вместо этого:
- создаст этот ключ;
- создаст к нему значение, которое будет иметь тип, оговорённый по умолчанию («по дефолту» — отсюда, кстати, и название), — например, целое число или строку;
- и — тадамм! — вернёт вам это значение.
Строго говоря, в Python существуют стандартные методы словарей .setdefault() и .get() со сходной функциональностью, но они сложнее в использовании — надо каждый раз указывать значение по умолчанию. А здесь мы сразу задаём тип для всех таких значений и далее просто обращаемся по ключу.
Как это работает:
В первой строчке импортировали модуль defaultdict из библиотеки collections.
Во второй — превратили наш предыдущий словарь my_dict в словарь нового типа my_new_dict: «int», стоящий первым в скобках, означает, что значениями, создаваемыми по умолчанию, будут целые числа, а конкретно число ноль.
Далее мы выводим наш my_new_dict, чтобы посмотреть, что в нём. Интерпретатор Python показывает нам:
- тип словаря: defaultdict;
- тип значений по умолчанию: int;
- а также текущее содержимое нашего словаря. Ключа «d» в нём нет, как и в оригинальном словаре my_dict.
В следующей строке мы как раз и запрашиваем элемент с этим ключом. И, о чудо, my_new_dict выдаёт нам значение — оно равно .
Смотрим снова на содержимое нашего словаря и видим, что там появилась новая пара ‘d’: 0.
Вы наверняка догадались, что вместо int при создании словаря типа defaultdict можно писать любые стандартные типы данных: float, list, str — и даже другие словари dict. И новые элементы, создаваемые при первом обращении к ключу, будут именно этого типа: нули, пустые списки, строки и словари соответственно.
Получение текста из элементов
Теперь, когда мы ознакомились с основными функциями модуля etree, давайте попробуем сделать еще несколько интересных вещей с нашими файлами HTML и XML. Почти всегда в этих файлах между тегами есть текст. Итак, давайте посмотрим, как мы можем добавить текст к нашим элементам:
# Copying the code from the very first example root = et.Element('html', version="5.0") et.SubElement(root, 'head') et.SubElement(root, 'title', bgcolor="red", fontsize="22") et.SubElement(root, 'body', fontsize="15") # Add text to the Elements and SubElements root.text = "This is an HTML file" root.text = "This is the head of that file" root.text = "This is the title of that file" root.text = "This is the body of that file and would contain paragraphs etc" print(et.tostring(root, pretty_print=True).decode("utf-8"))
Вывод:
<html version="5.0">This is an HTML file<head>This is the head of that file</head><title bgcolor="red" fontsize="22">This is the title of that file</title><body fontsize="15">This is the body of that file and would contain paragraphs etc</body></html>
Данные
Чтобы было проще сравнивать библиотеки, здесь представлены реальные данные с Github из этой статьи:
I Scraped more than 1k Top Machine Learning Github Profiles and this is what I Found
В статью включены визуализации из каждой библиотеки с помощью Datapane, который представляет собой Python фреймворк и API для публикации и совместного использования Python-отчетов. Больше реальных примеров вы можете найти в пользовательских отчетах в галереи Datapane.
Вы можете скачать файл csv здесь, либо получите данные напрямую из Datapane Blob.
Не забудьте залогиниться со своим токеном авторизации в Datapane, если вы хотите использовать Blob. Это займет менее минуты.
Разбор XML из строки
Двигаясь дальше, если у нас есть файл XML или HTML, и мы хотим проанализировать необработанную строку, чтобы получить или обработать требуемую информацию, мы можем сделать это, следуя приведенному ниже примеру:
root = et.XML('<html version="5.0">This is an HTML file<head>This is the head of that file</head><title bgcolor="red" fontsize="22">This is the title of that file</title><body fontsize="15">This is the body of that file and would contain paragraphs etc</body></html>') root.text = "The title text has changed!" print(et.tostring(root, xml_declaration=True).decode('utf-8'))
Вывод:
<?xml version='1.0' encoding='ASCII'?> <html version="5.0">This is an HTML file<head>This is the head of that file</head><title bgcolor="red" fontsize="22">The title text has changed!</title><body fontsize="15">This is the body of that file and would contain paragraphs etc</body></html>
Как видите, мы успешно изменили текст в HTML-документе. Объявление XML doctype также было автоматически добавлено из-за параметра xml_declaration, который мы передали функции tostring.
16.11 Множество возможных вариантов создания пакетов Python
Distutils не является единственным инструментом создания пакетов Python, но на момент написания этой статьи (август 2009 года) это единственный фреймворк создания пакетов, который работает в Python 3. Существует ряд других платформ для Python 2; некоторые фокусируются на установке, другие – на тестировании и развертывании. Некоторые или все из них могут в конечном итоге быть перенесены на Python 3 в будущем.
Эти фреймворки ориентированы на установку:
- Setuptools (портирован)
- Pip (портирован)
- Distribute
Эти сосредоточены на тестировании и развертывании:
- (портирован)
- (портирован)
- Paver
- Fabric (портирован)
- (портирован)
Строки
Строки в Python обособляются кавычками двойными «»» или одинарными «’». Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал ‘привет’!» будет выведена на экран как «Он сказал ‘привет’!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «»»»». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.
Mastering GUI Programming with Python
Скачать
Алан Мур — аналитик данных и разработчик ПО, работающий на Python с 2006 года. Свои приложения он создает при помощи Django, Flask, Qt и Tkinter. Помимо этой книги, он написал также «Python GUI Programming with Tkinter».
Многие Python-разработчики стремятся изучить инструменты, которые позволят им создавать приложения с графическими интерфейсами. Чаще всего этим разработчикам рекомендуют набор инструментов PyQt.
Но по PyQt просто удивительно мало обучающих ресурсов. Людям приходится пользоваться устаревшими книгами, документацией C++, искать информацию в блогах и постах на Stack Overflow. Эта книга призвана восполнить пробел и послужить современным пособием по PyQt для Python-разработчиков.
В своей первой книге — «Python GUI Programming with Tkinter» — Алан Мур разбирал основы создания графических интерфейсов. В этой же он решил сосредоточиться на тех уникальных возможностях, которые предоставляет именно PyQt: мультимедиа, анимация, 3D-графика, сети, многопоточность.
Эта книга предназначена для питонистов среднего уровня, желающих изучить фреймворк PyQt и научиться создавать мощные GUI-приложения. Читатель должен знать основы Python, его функционал и идиомы, а также инструментарий стандартной библиотеки. Предварительные знания по созданию именно графических интерфейсов не требуются.
Вступление
Тема красивых интерфейсов была и будет актуальна всегда. Кто-то использует для создания графических приложений C#, кто-то использует Java, кто-то уходит в дебри C++, ну а кто-то извращается с Python, используя tkinter или PyQT. Существуют различные технологии, позволяющие совмещать красоту графических дизайнов, создаваемых на HTML, CSS и JS с гибкостью в реализации логики приложения, которую может дать другой язык. Так вот, для тех, кто пишет на самом лучшем языке программирования Python, есть возможность писать красивые интерфейсы на HTML, CSS и JS и прикручивать к ним логику на Python.
В этой статья я хочу показать на небольшом примере, как же все таки создать простое и красивое десктопное приложение на HTML, CSS, JS и Python. В качестве библиотеки для связи всех компонентов будем использовать EEL.
6. Просторность
Spacy, вероятно, не так знаменит, как предыдущие. В то время как Numpy и Pandas являются библиотеками, работающими с числовыми и структурированными данными, Spacy помогает нам преобразовывать свободный текст в структурированные данные.
Spacy — одна из самых популярных библиотек NLP (обработка естественного языка) для Python. Представьте себе, что, когда вы удалили множество обзоров продуктов с веб-сайта электронной коммерции, вы должны извлечь полезную информацию из этого свободного текста, прежде чем сможете их проанализировать. Spacy имеет множество встроенных функций, таких как рабочий токенизатор, распознавание именованных объектов и обнаружение части речи.
Кроме того, Spacy поддерживает множество различных человеческих языков. На его официальном сайте заявлено, что он поддерживает более 55.
Визуализация данных
Визуализация данных является абсолютно необходимой потребностью в аналитике данных. Нам нужно визуализировать результаты и результаты и рассказать историю данных, которую мы нашли.
namedtuple: кортеж, только именованный
Кортеж (tuple, его часто называют «неизменяемым списком») в Python содержит некоторое количество элементов, к каждому из которых можно обратиться только по его индексу.
Для простых задач этого хватает, но как только число элементов в кортеже начинает расти, их вызов по индексу становится головной болью, потому что существенно снижает читаемость кода.
Здесь снова приходит на помощь библиотека collections, а конкретно её функция namedtuple. Это расширение над встроенными кортежами, которое даёт имя каждому элементу кортежа, а точнее — создаёт именованные поля, в которые мы, как в строку в таблице, складываем значения.
В итоге получаем что-то вроде неизменяемого (immutable) словаря, только гораздо легче читаемого.
Мы импортировали функцию namedtuple из collections. Затем создали конструктор именованных кортежей fruit, указав:
- общее название тех кортежей, которые мы будем создавать (‘fruit’);
- строку, содержащую имена полей именованного кортежа. Имена разделены в строке пробелом.
А после этого создали два именованных кортежа: apple и orange.
Теперь можно обращаться к элементам этих кортежей не по индексу, а по именам полей number, sort и color. Они являются атрибутами именованных кортежей, то есть используются через точку и без скобок.
16.9 Создание графического установщика
По-моему, каждая библиотека Python заслуживает наличие графического установщика для пользователей Windows. Его легко обеспечить (даже если вы сами не работаете под Windows), а пользователи Windows это ценят.
Distutils может создать для вас графический установщик Windows, если передадите в ваш скрипт установки Distutils команду .
16.9.1 Сборка устанавливаемых пакетов для других операционных систем
Distutils может помочь вам . На мой взгляд, возможно, это не стоит вашего времени. Если вы хотите, чтобы ваше программное обеспечение распространялось для Linux, вам лучше было бы потратить время на работу с членами сообщества, которые специализируются на создании пакетов программного обеспечения для основных дистрибутивов Linux.
Например, моя библиотека находится в репозиториях Debian GNU/Linux (и, следовательно, в репозиториях Ubuntu). Я не имел ничего общего с этим; пакеты просто появились там однажды. Сообщество Debian имеет свои собственные политики для создания пакетов библиотек Python, а пакет Debian python-chardet разработан в соответствии с этими соглашениями. А поскольку пакет находится в репозиториях Debian, пользователи Debian будут получать обновления безопасности и/или новые версии в зависимости от общесистемных настроек, выбранных ими для управления своими компьютерами.
Пакеты Linux, которые собирает Distutils, не предлагают ни одно из этих преимуществ. Лучше потратить время на что-то другое.
Сбор данных
Наука о данных включает в себя обработку данных, чтобы данные могли хорошо работать с алгоритмами данных. Data Wrangling – это процесс обработки данных, такой как слияние, группировка и конкатенация.
Библиотека Pandas предоставляет полезные функции, такие как merge(), groupby() и concat() для поддержки задач Data Wrangling.
import pandas as pd d = { 'Employee_id': , 'Employee_name': } df1 = pd.DataFrame(d, columns=) print(df1)
import pandas as pd data = { 'Employee_id': , 'Employee_name': } df2 = pd.DataFrame(data, columns=) print(df2)
а. merge()
print(pd.merge(df1, df2, on='Employee_id'))
Мы видим, что функция merge() возвращает строки из обоих DataFrames, имеющих то же значение столбца, которое использовалось при слиянии.
b. Группировка
import pandas as pd import numpy as np data = { 'Employee_id': , 'Employee_name': } df2 = pd.DataFrame(data) group = df2.groupby('Employee_name') print(group.get_group('Meera'))
Поле «Employee_name» со значением «Meera» сгруппировано по столбцу «Employee_name». Пример вывода приведен ниже:
Bonus: Norfair
We couldn’t finish this list without including our own homegrown baby for video analytics applications.
Norfair is a customizable lightweight Python library for real-time object tracking. In other words, it assigns a unique id to every detected object in different frames, letting you identify them as they move through time. Using Norfair, you can add tracking capabilities to any detector with just a few lines of code. “Any detector”? Yes. No matter what the object representation looks like: a bounding box (4 coordinates), a single point centroid, the output of a human pose estimation system with a variable number of key points above a certain probability threshold, or anything else.
The function used to calculate the distance between tracked objects and detections is defined by the user, making it fully customizable if you need it.
It’s also fast and it can run real-time. However, the real beauty is that it is very modular, and you can take your existing detection codebase and add tracking capabilities to it, with only a few lines of code. We are welcoming any comments and suggestions, and work on improving the capabilities of Norfair every day!
16.6 Указание дополнительных файлов с помощью манифеста
По умолчанию Distutils будет включать в ваш пакет следующие файлы:
- README.txt
- setup.py
- Файлы .py, необходимые для многофайловых модулей, перечисленных в параметре
- Отдельные .py файлы, перечисленные в параметре
Это охватывает . Но для проекта мы также хотим включить файл лицензии COPYING.txt и весь каталог docs/, содержащий изображения и HTML файлы. Чтобы указать Distutils, чтобы он при сборке пакета включил эти дополнительные файлы и каталоги, вам понадобится файл манифеста.
Файл манифеста – это текстовый файл с именем MANIFEST.in. Поместите его в корневой каталог проекта, рядом с README.txt и setup.py. Файлы манифеста – это не скрипты Python; это текстовые файлы, которые содержат серию «команд» в формате, определенном Distutils. Команды манифеста позволяют включать или исключать определенные файлы и каталоги.
Это весь файл манифеста для проекта :
- Строка 1. Первая строка не требует пояснений: включить файл COPYING.txt из корневого каталога проекта.
- Строка 2. Вторая строка немного сложнее. Команда принимает имя каталога и одно или несколько имен файлов. Имена файлов не ограничены конкретными файлами; они могут включать подстановочные знаки. Эта строка означает «Видите этот каталог docs/ в корневом каталоге проекта? Ищите там (рекурсивно) файлы .html, .css, .png и .gif. Я хочу, чтобы все они были в релизе моего пакета.»
Все команды манифеста сохраняют структуру каталогов, заданную вами в каталоге вашего проекта. Эта команда не собирается помещать кучу файлов .html и .png в корневой каталог выпускаемого пакета. Она сохранит существующую структуру каталога docs/, но включая в себя только те файлы в этом каталоге, которые соответствуют заданным подстановочным символам. (Я не упоминал об этом ранее, но документация на самом деле написана в формате XML и преобразована в HTML отдельным скриптом. Я не хочу включать файлы XML в релиз пакета, мне нужны только HTML и изображения.)
Файлы манифеста имеют свой уникальный формат. Для получения подробной информации смотрите и .
Повторим: вам нужно создавать файл манифеста, только если вы хотите включить файлы, которые Distutils не включает по умолчанию. Если вам нужен файл манифеста, он должен включать только те файлы и каталоги, которые Distutils не смог бы найти самостоятельно.
Шаги обобщения текста
Я объясню этапы реферирования текста с помощью методов НЛП на примере.
Ниже приводится отрывок из одного из известных выступлений Дензела Вашингтона на 48-й церемонии вручения награды NAACP Image Awards:
Итак, продолжайте работать. Продолжайте стремиться. Никогда не сдавайся. Семь раз падай, восемь вставай. Легкость – большая угроза для прогресса, чем трудности. Итак, продолжайте двигаться, продолжайте расти, продолжайте учиться. Увидимся на работе.
Из приведенного выше абзаца видно, что он в основном мотивирует других много работать и никогда не сдаваться. Чтобы подытожить приведенный выше абзац с использованием методов, основанных на НЛП, нам необходимо выполнить ряд шагов, которые будут описаны в следующих разделах.
Как преобразовать абзацы в предложения?
Сначала нам нужно преобразовать весь абзац в предложения. Самый распространенный способ преобразования абзацев в предложения – разбивать абзацы всякий раз, когда встречается точка. Итак, если мы разделим обсуждаемый абзац на предложения, мы получим следующие предложения:
- Итак, продолжайте работать.
- Продолжай стремиться.
- Никогда не сдавайся.
- Семь раз падай, восемь вставай
- Легкость — большая угроза для прогресса, чем трудности.
- Итак, продолжайте двигаться, продолжайте расти, продолжайте учиться.
- Увидимся на работе.
Предварительная обработка текста
После преобразования абзаца в предложения нам нужно удалить все специальные символы, стоп-слова и числа из всех предложений. После предварительной обработки получаем следующие предложения:
- Продолжать работать.
- Продолжай стремиться.
- Никогда не давай.
- Упасть семь раз получить восемь.
- Облегчить большую угрозу прогрессировать трудности.
- Продолжай двигаться продолжай расти продолжай учиться.
- Посмотреть работу.
Токенизация предложений
Нам нужно токенизировать все предложения, чтобы получить все слова, которые существуют в предложениях. После токенизации предложений мы получаем список следующих слов, работаем с оригиналом на английском:
Как найти взвешенную частоту?
Далее нам нужно найти взвешенную частоту встречаемости всех слов. Для этого нужно, разделить его частоту на частоту наиболее часто встречающегося слова. Следующая таблица содержит взвешенные частоты для каждого слова:
Слово | Частота | Взвешенная частота |
---|---|---|
ease | 2 | 0.40 |
eight | 1 | 0.20 |
fall | 1 | 0.20 |
get | 1 | 0.20 |
give | 1 | 0.20 |
greater | 2 | 0.40 |
growing | 1 | 0.20 |
hardship | 2 | 0.40 |
keep | 5 | 1.00 |
learning | 1 | 0.20 |
moving | 1 | 0.20 |
never | 1 | 0.20 |
progress | 2 | 0.40 |
see | 1 | 0.20 |
seven | 1 | 0.20 |
striving | 1 | 0.20 |
threat | 2 | 0.40 |
time | 1 | 0.20 |
work | 1 | 0.20 |
working | 1 | 0.20 |
Поскольку слово «keep» имеет самую высокую частоту, равную 5, взвешенная частота всех слов была рассчитана путем деления их количества появлений на 5.
Замена слова взвешенной частотой в оригинальных предложениях
Последний шаг – подставить взвешенную частоту вместо соответствующих слов в исходных предложениях и найти их сумму
Важно отметить, что взвешенная частота для слов, удаленных во время предварительной обработки (стоп-слова, знаки препинания, цифры и т.д.), будет равна нулю и поэтому не требуется добавлять, как указано ниже:
Выражение | Сумма взвешенных частот |
---|---|
So, keep working | 1 + 0.20 = 1.20 |
Keep striving | 1 + 0.20 = 1.20 |
Never give up | 0.20 + 0.20 = 0.40 |
Fall down seven times, get up eight | 0.20 + 0.20 + 0.20 + 0.20 + 0.20 = 1.0 |
Ease is a greater threat to progress than hardship | 0.40 + 0.40 + 0.40 + 0.40 + 0.40 = 2.0 |
Ease is a greater threat to progress than hardship | 0.40 + 0.40 + 0.40 + 0.40 + 0.40 = 2.0 |
So, keep moving, keep growing, keep learning | 1 + 0.20 + 1 + 0.20 + 1 + 0.20 = 3.60 |
See you at work | 0.20 + 0.20 = 0.40 |
PyTorch Lightning
Every tool that increases the productivity of a data science team is worth gold. There is no reason to make people that work in data science projects re-invent the wheel every time, think over and over again how to better organize the code in their project, use some “PyTorch boilerplate” that is not very well maintained, or trade potential control for using a higher level abstraction.
Lightning helps boost productivity by decoupling the science from the engineering. It is sort of like Keras for TensorFlow, in the sense that it makes your code a lot more concise. However, it does not take your control away. It’s still PyTorch, and you have access to all the usual APIs.
This library helps teams leverage software engineering’s good practices around organization and clear responsibilities of components, to build high quality code that can easily scale to train on multiple GPUs, TPUs and CPUs.
A library that will help those junior members of the data science team produce better results, but also, more experienced members will love it because of the increase in overall productivity, without giving up control.
Requests
Основное назначение: упрощение HTTP-запросов.
Requests — Это одна из самых популярных библиотек на Python, целью которой является сделать все HTTP-запросы более простым и более удобным. Библиотека, сертифицирована по лицензии Apache2 и полностью написанный на языке Python. По сути, он является фактическим стандартом, который используется всеми разработчиками для выполнения HTTP-запросов.
Помимо стандартных запросов на сервер, библиотека также позволяет добавлять данные для формы, содержимое или контент, заголовки, файлы из нескольких частей и т.д. С данной библиотекой разработчикам не нужно добавлять запрос в URL или кодировать POST данные вручную.
Особенности:
- Позволяет многокомпонентную и потоковую загрузку файлов загрузку
- Автоматическое декодирование контента и автоматическая распаковка
- Проверка SSL
Создание документов HTML и XML
Используя модуль etree, мы можем создавать элементы XML и HTML и их подэлементы, что очень полезно, если мы пытаемся писать или манипулировать файлом. Попробуем создать базовую структуру HTML-файла с помощью etree:
root = et.Element('html', version="5.0") # Pass the parent node, name of the child node, # and any number of optional attributes et.SubElement(root, 'head') et.SubElement(root, 'title', bgcolor="red", fontsize='22') et.SubElement(root, 'body', fontsize="15")
В приведенном выше коде вам необходимо знать, что для функции Element требуется как минимум один параметр, а для функции SubElement требуется как минимум два. Это связано с тем, что функция Element «требует» только имя создаваемого элемента, тогда как функция SubElement требует создания имени как корневого узла, так и дочернего узла.
Также важно знать, что обе эти функции имеют только нижнюю границу количества аргументов, которые они могут принимать, но не имеют верхней границы, потому что вы можете связать с ними столько атрибутов, сколько захотите. Чтобы добавить атрибут к элементу, просто добавьте дополнительный параметр к функции (Sub) Element и укажите свой атрибут в форме attributeName = ‘attribute value’.. Давайте попробуем запустить код, который мы написали выше, чтобы лучше понять эти функции:
Давайте попробуем запустить код, который мы написали выше, чтобы лучше понять эти функции:
# Use pretty_print=True to indent the HTML output print (et.tostring(root, pretty_print=True).decode("utf-8"))
Вывод:
<html version="5.0"> <head/> <title bgcolor="red" fontsize="22"/> <body fontsize="15"/> </html>
Есть еще один способ создания и организации ваших элементов в иерархическом порядке. Давайте также исследуем это:
root = et.Element('html') root.append(et.SubElement('head')) root.append(et.SubElement('body'))
Поэтому в этом случае всякий раз, когда мы создаем новый элемент, мы просто добавляем его к корневому или родительскому узлу.
Установка PyCharm
PyCharm — интегрированная среда разработки для языка программирования Python. Обладает всеми базовыми вещами необходимых для разработки. В нашем случае огромное значение имеет хорошее взаимодействие PyCharm с VirtualEnv и Pip, чем мы и будем пользоваться.
Установка PyCharm в Windows
В самой установке ничего особенного нету. По сути только нажимаем на кнопки next, и в завершение на кнопку Install. Единственно, можно убрать версию из имени папки установки, т.к. PyCharm постоянно обновляется и указанная версия в будущем станет не правильной.
Установка PyCharm в Ubuntu
Распаковываем архив с PyCharm и переименовываем папку с программой в , убрав версию из названия.
Теперь в директории (Ctrl + H — Показ скрытый файлов), создаем папку , куда и перемещаем . В результате по пути должны размещаться папки , и т.д. Таким образом PyCharm будет находится в своём скромном месте и никому не будет мешать.
Далее выполняем команды в терминале:
Производим установку
И очень важно в конце не забыть создать desktop файл для запуска PyCharm. Для этого в Окне приветствия в нижнем правом углу нажимаем на Configure → Create Desktop Entry
Установка PyCharm в Ubuntu из snap-пакета
PyCharm теперь можно устанавливать из snap-пакета. Если вы используете Ubuntu 16.04 или более позднюю версию, можете установить PyCharm из командной строки.
Conclusions
There are many Python libraries to choose from. It is the same as walking into a store that offers a vast selection of treats. How to decide which sweet treat, or in this case, library, you want? Well, different libraries provide modules for separate tasks. Therefore, you need to decide what type of modules you need for your code. Now, let’s briefly sum up this article for you:
- For API creation, developers choose from libraries for Python like Flask, Django, Eve, Falcon.
- For artificial intelligence and deep learning purposes, the best choices include these libraries: TensorFlow, PyTorch, Theano, Keras, Sklearn.
- The two top Python libraries are PyTorch and TensorFlow. They provide modules for machine learning, deep learning, and neural network management. They both lure programmers with similar treats, but there are some differences you need to consider. One of the most defining differences is that PyTorch allows developers to create dynamic graphs. TensorFlow graph-creation process is static and requires knowledge about more concepts.
- NumPy is another free Python library, providing high-level mathematical functions for the management of multi-dimensional arrays.
- Sklearn is yet another free Python library, closely-related to procedures of machine learning. It consists of algorithms such as support vector machines, gradient boosting, k-means, random forests, and DBSCAN.
DataFrame
DataFrame – самая важная и широко используемая структура данных, а также стандартный способ хранения данных. Она содержит данные, выровненные по строкам и столбцам, как в таблице SQL или в базе данных электронной таблицы.
Мы можем либо жестко закодировать данные в DataFrame, либо импортировать файл CSV, файл tsv, файл Excel, таблицу SQL и т.д.
Мы можем использовать приведенный ниже конструктор для создания объекта DataFrame.
pandas.DataFrame(data, index, columns, dtype, copy)
Ниже приводится краткое описание параметров:
- data – создать объект DataFrame из входных данных. Это может быть список, dict, series, Numpy ndarrays или даже любой другой DataFrame;
- index – имеет метки строк;
- columns – используются для создания подписей столбцов;
- dtype – используется для указания типа данных каждого столбца, необязательный параметр;
- copy – используется для копирования данных, если есть.
Есть много способов создать DataFrame. Мы можем создать объект из словарей или списка словарей. Мы также можем создать его из списка кортежей, CSV, файла Excel и т.д.
Давайте запустим простой код для создания DataFrame из списка словарей.
import pandas as pd import numpy as np df = pd.DataFrame({ "State": , "Capital": , "Literacy %": , "Avg High Temp(c)": }) print(df)
Вывод:
Первый шаг – создать словарь. Второй шаг – передать словарь в качестве аргумента в метод DataFrame(). Последний шаг – распечатать DataFrame.
Как видите, DataFrame можно сравнить с таблицей, имеющей неоднородное значение. Кроме того, можно изменить размер.
Мы предоставили данные в виде карты, и ключи карты рассматриваются Pandas, как метки строк.
Индекс отображается в крайнем левом столбце и имеет метки строк. Заголовок столбца и данные отображаются в виде таблицы.
Также возможно создавать индексированные DataFrames. Это можно сделать, настроив параметр индекса.
HiPlot
Nearly every data scientist has worked with high dimensional data at some point during their career. Unfortunately, human brains are not adequately wired for dealing with this kind of data intuitively, so we must resort to other techniques.
Early this year, Facebook released HiPlot, a library that helps discover correlations and patterns in high-dimensional data using parallel plots and other graphical ways to represent information. The concept is explained in their launch blog post, but it’s basically a nice and convenient way of visualizing and filtering high dimensional data.
HiPlot is interactive, extensible, and you can use it from your standard Jupyter Notebooks or via it’s own server.
Заключение
Все эти библиотеки заслуживают отдельной статьи и того, чтобы вы узнали о них, потому что они превращают сложные задачи в прямолинейно простые. Работая с этими библиотеками, вы сохраняете драгоценное время для действительно важных задач. Я рекомендую попробовать их, а также исследовать не упомянутую здесь функциональность. На Github вы найдёте блокнот Jupyter, который я написал, чтобы посмотреть на эти библиотеки в деле.
Этот материал не только даёт представление о полезных пакетах экосистемы Python, но и напоминает о широте и разнообразии проектов, в которых можно работать на этом языке. Python предельно лаконичен, он позволяет экономить время и в процессе написания кода, выражать идеи максимально быстро и эффективно, то есть беречь силы, чтобы придумывать новые подходы и решения задач, в том числе в области искусственного интеллекта, получить широкое и глубокое представление о котором вы можете на нашем курсе «Machine Learning и Deep Learning».
Узнайте, как прокачаться и в других специальностях или освоить их с нуля: