Как сделать таблицу в питоне

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Мы в Netpeak довольно активно используем дайджесты, это такие небольшие, информационные письма с таблицами и графиками которые помогают нам в общей массе информации контролировать основные показатели бизнеса, а каждому сотруднику выполнение его KPI.

Более подробно о том, что такое дайжесты и как мы их используем я уже рассказывал на GoAnalytics в 2019 году. Кому это интересно по ссылке доступна запись доклада.

В этой статье речь пойдёт о технической реализации таких писем на Python, а не о самих дайджестах.

Переводим pandas DataFrame в HTML таблицу с применением CSS стилей

По сути письмо — это HTML документ, и для того, что бы в него включить таблицу созданную с помощью pandas , её предварительно необходимо преобразовать в HTML формат. В pandas есть встроенный метод to_html() который выполняет эту операцию, но форматирование таблицы в таком виде оставляет желать лучшего.

Метод to_html()

Для начала давайте создадим тестовый DataFrame, и воспользуемся стандартным методом, для конвертации его в HTML таблицу.

Наш DataFrame при этом будет конвертирован вот в такую HTML таблицу.


Вроде и получилось то, что хотели, но выглядит мягко говоря так себе.

Метод style

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

Аргумент classes

Второй вариант прописывать CSS стили в отдельном файле, и использовать аргумент classes метода to_html() , пример реализации можно подсмотреть на stackowerflof.

Если вкратце, вы создаёте файл с описанием CSS стилей, например такой:

Сохраняем этот CSS код в файл df_style.css, в нашей рабочей директории.

Далее создаём каркас HTML страницы, в которую добавим наш DataFrame с применёнными CSS стилями.

Далее применяем к нашему DataFrame метод to_html() используя аргумент classes , и с помощью format() внедряем полученную HTML таблиц в созданный ранее каркас.

На выходе получим вот такую таблицу HTML таблицу:


Такая таблица выглядит уже значительно привлекательнее, но есть одна проблема, большинство почтовых сервисов, включая Gmail при отображении таблиц в письмах вырезают тег style, поэтому в письме всё равно ваша таблица будет выглядеть так же как и первый вариант, приведённый в статье в описании метода to_html() .

Библиотека pretty-html-table

Мы уже рассмотрели несколько способов привести DataFrame в формат HTML таблицы, но все они к сожалению имеют ряд недостатков.

Наиболее удобным и универсальным способом превратить DataFrame в элементную HTML таблицу предоставляет библиотека pretty-html-table .

Для начала её надо установить, откройте командную строку, или терминал, в зависимости от вашей операционной системы и выполните следую команду.

Далее возвращаемся в python, и используем метод build_table() для создания HTML таблицы.

В результате получим вот такую HTML таблицу:


Преимущество библиотеки pretty-html-table не только в том, что она создаёт более привлекательные таблицы, но и в том, что она применяет стили к каждому элементу таблицы. В этом случае все почтовые сервисы отображают ваши HTML таблиц корректно.

Как вы заметили аргумент color метода build_table() отвечает за цветовую схему вашей таблицы, на данный момент вы можете применять одну из следующих цветовых схем:

Namefont styleHeaderRows
‘blue_light’Century GothicBold: yes / Background color: white / Font color: dark blueOdd background color: light blue / Even background color: white
blue_dark’Century GothicBold: yes / Background color: dark blue / Font color: whiteOdd background color: light blue / Even background color: white
grey_light’Century GothicBold: yes / Background color: white / Font color: dark greyOdd background color: light grey / Even background color: white
grey_dark’Century GothicBold: yes / Background color: dark grey / Font color: whiteOdd background color: light grey / Even background color: white
orange_light’Century GothicBold: yes / Background color: white / Font color: dark orangeOdd background color: light orange / Even background color: white
orange_dark’Century GothicBold: yes / Background color: dark orange / Font color: whiteOdd background color: light orange / Even background color: white
yellow_light’Century GothicBold: yes / Background color: white / Font color: dark yellowOdd background color: light yellow / Even background color: white
yellow_dark’Century GothicBold: yes / Background color: dark yellow / Font color: whiteOdd background color: light yellow / Even background color: white
green_light’Century GothicBold: yes / Background color: white / Font color: dark greenOdd background color: light green / Even background color: white
green_dark’Century GothicBold: yes / Background color: dark green / Font color: whiteOdd background color: light green / Even background color: white
Таблицы с описанием названий и CSS компонентов доступных стилей

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

  • font_size — размер текста, по умолчанию 'medium' , возможные значения: xx-small, x-small, small, medium, large, x-large, xx-large;
  • font_family — шрифт, по умолчанию 'Century Gothic' ;
  • text_align — выравнивание текста, по умолчанию 'left' .

Отправляем отформатированную таблицу в письме

Полученную таблицу теперь не сложно добавить в текст письма:

В приведённом примере кода подставьте свои значения вместо:

В результате выполнения кода вы отправите на указанные адреса следующее письмо:


Пример готового письма

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

С помощью Python вы можете легко установить соединение с вашей базой данных PostgreSQL. Для PostgreSQL существует множество драйверов Python, из которых наиболее популярным является psycopg. Текущая версия – psycopg2.

В этой статье мы обсудим, как получить доступ к базе данных PostgreSQL в Python с помощью драйвера psycopg2.

Модуль psycopg2

Мы можем интегрировать Postgres с Python с помощью модуля psycopg2 – это адаптер базы данных Postgres. Чтобы использовать этот модуль, вы должны сначала его установить. Это можно сделать с помощью команды pip, как показано ниже:

Обратите внимание, что я использую Python 3.5, поэтому я взял pip3 вместо pip.

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

Подключение к базе данных

Чтобы подключиться к вашей базе данных, вы должны сначала создать объект подключения, представляющий базу данных. Затем вы должны создать объект курсора, который поможет вам в выполнении ваших операторов SQL.

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

Создание таблицы

Чтобы создать таблицу Postgres в Python, мы используем SQL-оператор CREATE TABLE. Этот запрос следует выполнить после установления соединения с базой данных. Мы также создаем объект курсора, вызывая метод cursor(), принадлежащий объекту соединения. Этот объект курсора используется для фактического выполнения ваших команд.

Следующий пример демонстрирует это:

Метод commit() помогает нам применить изменения, которые мы внесли в базу данных, и эти изменения не могут быть отменены, если commit() выполняется успешно. Метод close() закроет соединение с базой данных.

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

Вставка данных

Мы можем вставить одну или несколько записей в таблицу базы данных Postgres. Опять же, мы должны сначала установить соединение с сервером базы данных, вызвав функцию connect(). Затем мы должны создать объект курсора, вызвав метод cursor(). Наконец, мы должны запустить оператор INSERT через метод execute(), чтобы добавить данные в таблицу.

Вот пример этого в действии:

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

Извлечение данных

Вы можете выбрать данные из базы данных Postgres и просмотреть записи таблицы. Во-первых, вы должны установить соединение с базой данных с помощью функции connect(). Затем следует создать новый курсор, вызвав метод cursor(). Созданный объект курсора затем можно использовать для выполнения оператора SELECT для запроса данных из базы данных.

Обновление таблиц

Мы можем обновить или изменить детали записи, которая уже была вставлена в таблицу базы данных. Во-первых, мы должны установить соединение с базой данных с помощью метода connect(). Затем мы вызываем функцию cursor() для создания объекта курсора. Наконец, мы запускаем метод execute() для выполнения оператора UPDATE с входными значениями.

В приведенном выше примере мы обновили значение столбца AGE для всех строк, в которых ADMISSION равно 3420. После выполнения обновления мы затем извлекаем эти данные, чтобы убедиться, что соответствующие строки и столбцы были обновлены.

Удаление строк

Чтобы удалить запись из таблицы базы данных Postgres, мы должны сначала установить соединение с сервером базы данных. Во-вторых, объект курсора должен быть создан путем вызова функции cursor(). Затем мы запускаем оператор DELETE, чтобы выполнить удаление.

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

Заключение

С помощью Python мы можем получить доступ к базе данных PostgreSQL различными способами. Есть много драйверов баз данных для Python, которые мы можем использовать для этой цели, но psycopg – самый популярный. В этой статье мы показали, как установить модуль, установить соединение с вашей базой данных PostgreSQL и выполнить стандартные SQL-запросы с использованием кода Python.


Недавно я пишу небольшой инструмент на python. Этот инструмент в основном используется для управления различной информацией о ресурсах, например ECS Alibaba Cloud и другой информацией. Поскольку мой рабочий компьютер использует LINUX, я хочу написать командную строку на Python. Основная функция инструмента управления - синхронизировать информацию о ресурсах Alibaba Cloud с базой данных, а затем вы можете использовать командную строку для запроса.

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

Библиотека prettytable - такой инструмент, prettytable может печатать красивые таблицы, а поддержка китайского языка неплохая (если вы попытаетесь распечатать таблицу самостоятельно, вы должны знать, насколько сложно обрабатывать китайский язык)

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


установка

prettytable не является встроенной библиотекой python, прошло pip install prettytable Вы можете установить это.


Небольшой пример

Давайте сначала посмотрим на пример:

Результаты приведенного выше примера следующие:

В приведенном выше примере мы передали form Импортировала библиотеку таблиц. table Создал экземпляр библиотеки таблиц и добавил ['Номер', 'номер облака', 'имя', 'IP-адрес'] Это заголовок, если заголовок не добавлен, он будет отображаться с полем по умолчанию + номер, например:

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


добавление данных

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

A. Добавить данные по строкам table.add_row

В простом примере выше мы добавляем данные в строки.

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

Б. Добавить данные по столбцу table.add_column ()

Взгляните на следующий пример:

Результаты приведены ниже:

В приведенном выше примере мы прошли add_column Чтобы добавить данные по столбцу, добавить данные по столбцу не нужно указывать заголовок при создании экземпляра таблицы, а его заголовок указывается при добавлении столбца.

C. Добавить данные из файла CSV

PrettyTable не только обеспечивает ручное добавление данных по строкам и столбцам, но также поддерживает чтение данных непосредственно из файлов CSV.

Если вы хотите прочитать данные файла cvs, вы должны сначала импортировать from_csv , В противном случае он не может работать. Результаты приведенного выше примера следующие:

Файл csv нельзя переименовать напрямую через xls, и будет сообщено об ошибке. Если это файл xls, сохраните его как csv, чтобы получить файл csv

D, добавить из значения запроса sql

Данные, запрошенные из базы данных, можно напрямую импортировать в форму для печати. ​​В следующем примере используется sqlite3 , Если вы используете mysql, это то же самое, пока вы можете запрашивать данные, вы можете импортировать их в таблицу

Результаты приведены ниже:

E. Импортировать данные из HTML

Поддержка импорта из таблицы html, см. Следующий пример:

Результаты приведены ниже:

В приведенном выше примере мы можем импортировать таблицы HTML, но разница в print Заявление, при использовании таблицы html для импорта данных, print должен быть первым элементом в списке, иначе он может сообщить [] Такая ошибка.

Это потому что table Это не объект PrettyTable, а список, содержащий единственный объект PrettyTable, полученный в результате синтаксического анализа html, поэтому его нельзя распечатать напрямую. table , И нужно распечатать table[0]


Формат вывода таблицы

Так же, как он поддерживает несколько входов, вывод таблицы также поддерживает несколько форматов.В приведенном выше примере мы использовали вывод на печать, который является распространенным методом вывода.

A、print

Пройти напрямую print Распечатайте форму. Форма, напечатанная таким образом, будет иметь рамку.

Б. Вывести форму в формате HTML

print(table.get_html_string()) Можно распечатать форму HTML-этикетки.

В приведенном выше примере используйте print(table.get_html_string()) Распечатает следующие результаты:


Выборочный вывод

Prettytable После создания таблицы вы все равно можете выборочно выводить определенные строки.

A. Выведите указанный столбец

print table.get_string (fields = ["Число", "IP-адрес"]) Может выводить указанный столбец

Б. Выведите первые две строки

от print(table.get_string(start = 0, end = 2)) Конечно, можно распечатать указанный столбец start с участием end Параметры позволяют мне свободно контролировать интервал отображения. Конечно интервал содержит start Не содержит end , Вы знакомы с таким использованием?

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

C. Разрезать стол

Исходя из вышеприведенного интервала вывода, мы делаем смелое предположение, поскольку интервал содержит start Не содержит end Это правило такое же, как и для нарезки, мы не можем использовать нарезку для создания новой таблицы, а затем ее печати.

На самом деле это возможно.

Как и в приведенном выше фрагменте кода, мы можем распечатать таблицу, содержащую в общей сложности 2 строки от 0 до 1. Функция нарезки Python чрезвычайно мощная. С помощью нарезки мы можем свободно вводить любую строку.

D, сортировка вывода

Иногда нам нужно отсортировать таблицу вывода, используйте print table.get_string (sortby = "number", reversesort = True) Вы можете отсортировать таблицу, где reversesort Указывает, следует ли выполнять сортировку в обратном порядке, по умолчанию False , То есть сортировка прямой последовательности по умолчанию.

sortby Поле сортировки указано.


Стиль таблицы

А. Встроенный стиль

от set_style() Вы можете установить стиль таблицы, у prettytable есть множество встроенных стилей. MSWORD_FRIENDLY , PLAIN_COLUMNS , DEFAULT Эти три стиля выглядят относительно освежающе: отображение формы под терминалом сначала утомляет, а добавление каких-то необычных вещей утомляет.

В дополнение к трем рекомендованным выше стилям, я должен сказать, что есть еще один стиль, а именно: RANDOM , Это случайный стиль, и один из встроенных стилей будет случайным образом выбираться при каждой печати, что гораздо интереснее.

Есть несколько встроенных стилей, обратитесь на официальный сайт и попробуйте сами.

Б. Индивидуальный стиль

В дополнение к встроенным стилям PrettyTable также обеспечивает пользовательскую настройку, такую ​​как выравнивание, формат цифрового вывода, соединитель границ и т. Д.

C. Установить выравнивание

align Предоставляет пользователям возможность установить выравнивание, значения l , r , c Удобно обозначает выравнивание по левому краю, выравнивание по правому краю и выравнивание по центру. Если не установлено, выравнивание по умолчанию центрируется.

D. Управление стилем границы

В PrettyTable граница состоит из трех частей: горизонтальной границы, вертикальной границы и соединительной границы (символ перекрестной и вертикальной ссылки).

table.junction_char Соединитель контрольной границы

table.horizontal_char Управление символом горизонтальной границы

table.vertical_char Управляйте символом вертикальной границы

Приведенный выше пример работает следующим образом:

Выше кратко описаны некоторые часто используемые настройки стилей для таблиц. Подробнее см. На официальном сайте.


Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Pandas — главная Python-библиотека для анализа данных. Она быстрая и мощная: в ней можно работать с таблицами, в которых миллионы строк. Вместе с Марией Жаровой, ментором проекта на курсе по Data Science, рассказываем про команды, которые позволят начать работать с реальными данными.

Библиотека Pandas

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

В Pandas можно работать с данными трех структур:

  • последовательности (Series) — одномерные массивы данных;
  • фреймы (Data Frames) — объединение нескольких одномерных массивов в двумерный, то есть привычная таблица из строк и столбцов. Этот формат чаще всего используют аналитики;
  • панели (Panels) — трехмерная структура из нескольких фреймов.

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

У библиотеки открытый исходный код, она бесплатная, и в ней, в отличие от Excel, можно работать с данными в формате JSON. Подробнее о библиотеке мы писали в этой статье.

Среда разработки

Pandas работает как в IDE (средах разработки), так и в облачных блокнотах для программирования. Как установить библиотеку в конкретную IDE, читайте тут. Мы для примера будем работать в облачной среде Google Colab. Она удобна тем, что не нужно ничего устанавливать на компьютер: файлы можно загружать и работать с ними онлайн, к тому же есть совместный режим для работы с коллегами. Про Colab мы писали в этом обзоре.

Получите крепкий фундамент профессии Data Analyst с нуля за 6 месяцев. Все инструменты, необходимые junior-специалисту: Google Sheets, SQL, Python, Power BI и др. Кейсы на основе популярных бизнес-моделей и помощь в трудоустройстве.

Анализ данных в Pandas

На сайте Google Colab сразу появляется экран с доступными блокнотами. Создадим новый блокнот:


Импортирование библиотеки

Pandas недоступна в Python по умолчанию. Чтобы начать с ней работать, нужно ее импортировать с помощью этого кода:

pd — это распространенное сокращенное название библиотеки. Далее будем обращаться к ней именно так.

Загрузка данных

1. Загрузить в сессионное хранилище:


И прочитать с помощью такой команды:

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

Это можно сделать через словарь и через преобразование вложенных списков (фактически таблиц).

Через вложенные списки:

Результаты будут эквивалентны.

Просмотр данных

Загруженный файл преобразован во фрейм и теперь хранится в переменной df. Посмотрим, как он выглядит, с помощью метода .head(), который по умолчанию выводит пять первых строк:

Если нужно посмотреть на другое количество строк, оно указывается в скобках, например df.head(12). Последние строки фрейма выводятся методом .tail().

Также чтобы просто полностью красиво отобразить датасет, используется функция display(). По умолчанию в Jupyter Notebook, если написать имя переменной на последней строке какой-либо ячейки (даже без ключевого слова display), ее содержимое будет отображено.

Размеры датасета

Количество строк и столбцов в датафрейме можно узнать, используя метод .shape:

Переименование столбцов

Названия столбцов можно переименовать под себя с помощью команды rename:

Характеристики датасета

Чтобы получить первичное представление о статистических характеристиках нашего датасета, достаточно этой команды:

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

Еще одна команда показывает другую справку: сколько значений в каждом столбце (в нашем случае в столбцах нет пропущенных значений) и формат данных:

Работа с отдельными столбцами или строками

Выделить несколько столбцов можно разными способами.

1. Сделать срез фрейма


Срез можно сохранить в новой переменной:

Теперь можно выполнить любое действие с этим сокращенным фреймом.

2. Использовать метод loc

Если столбцов очень много, можно использовать метод loc, который ищет значения по их названию:

В этом случае мы оставили все столбцы от Места в рейтинге до Социальной поддержки.

3. Использовать метод iloc

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

Первый параметр показывает индексы строк, которые останутся, второй — индексы столбцов. Получаем такой фрейм:

В методе iloc значения в правом конце исключаются, поэтому последняя строка, которую мы видим, — 99.

4. Использовать метод tolist()

Можно выделить какой-либо столбец в отдельный список при помощи метода tolist(). Это упростит задачу, если необходимо извлекать данные из столбцов:

Часто бывает нужно получить в виде списка названия столбцов датафрейма. Это тоже можно сделать с помощью метода tolist():

Добавление новых строк и столбцов

Можно добавлять и новые строки: для этого нужно составить словарь с ключами — названиями столбцов. Если вы не укажете значения в каких-то столбцах, они по умолчанию заполнятся пустыми значениями NaN. Добавим еще одну страну под названием Country:

Важно: при добавлении новой строки методом .append() не забывайте указывать параметр ignore_index=True, иначе возникнет ошибка.

Иногда бывает полезно добавить строку с суммой, медианой или средним арифметическим) по столбцу. Сделать это можно с помощью агрегирующих (aggregate (англ.) — группировать, объединять) функций: sum(), mean(), median(). Для примера добавим в конце строку с суммами значений по каждому столбцу:

Удаление строк и столбцов

Удалить отдельные столбцы можно при помощи метода drop() — это целесообразно делать, если убрать нужно небольшое количество столбцов.

В других случаях лучше воспользоваться описанными выше срезами.

Обратите внимание, что этот метод требует дополнительного сохранения через присваивание датафрейма с примененным методом исходному. Также в параметрах обязательно нужно указать axis = 1, который показывает, что мы удаляем именно столбец, а не строку.

Соответственно, задав параметр axis = 0, можно удалить любую строку из датафрейма: для этого нужно написать ее номер в качестве первого аргумента в методе drop(). Удалим последнюю строчку (указываем ее индекс — это будет количество строк):

Копирование датафрейма

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

Уникальные значения

Уникальные значения в какой-либо колонке датафрейма можно вывести при помощи метода .unique():

Чтобы дополнительно узнать их количество, можно воспользоваться функцией len():

Подсчет количества значений

Отличается от предыдущего метода тем, что дополнительно подсчитывает количество раз, которое то или иное уникальное значение встречается в колонке, пишется как .value_counts():

Группировка данных

Некоторым обобщением .value_counts() является метод .groupby() — он тоже группирует данные какого-либо столбца по одинаковым значениям. Отличие в том, что при помощи него можно не просто вывести количество уникальных элементов в одном столбце, но и найти для каждой группы сумму / среднее значение / медиану по любым другим столбцам.

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

Получается, что чаще всего страны получали 6 баллов (таких было 49):

2) Получим более содержательный для анализа данных результат — посчитаем сумму значений в каждой группе. Для этого вместо .count() используем sum():

3) Теперь рассчитаем среднее значение по каждой группе, в качестве агрегирующей функции в этом случае возьмем mean():

4) Рассчитаем медиану. Для этого пишем команду median():

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

Вот пример синтаксиса, как можно сагрегировать значения по группам при помощи сразу нескольких функций:

Сводные таблицы

Бывает, что нужно сделать группировку сразу по двум параметрам. Для этого в Pandas используются сводные таблицы или pivot_table(). Они составляются на основе датафреймов, но, в отличие от них, группировать данные можно не только по значениям столбцов, но и по строкам.

Сортировка данных

Строки датасета можно сортировать по значениям любого столбца при помощи функции sort_values(). По умолчанию метод делает сортировку по убыванию. Например, отсортируем по столбцу значений ВВП на душу населения:

Видно, что самые высокие ВВП совсем не гарантируют высокое место в рейтинге.

Фильтрация

1) Получение строки с конкретным значением какого-либо столбца (выведем строку из датасета для Норвегии):

3) В условиях фильтрации можно использовать не только математические операции сравнения, но и методы работы со строками. Выведем строки датасета, названия стран которых начинаются с буквы F, — для этого воспользуемся методом .startswith():

4) Можно комбинировать несколько условий одновременно, используя логические операторы. Выведем строки, в которых значение ВВП больше 1 и уровень социальной поддержки больше 1,5:

Таким образом, если внутри внешних квадратных скобок стоит истинное выражение, то строка датасета будет удовлетворять условию фильтрации. Поэтому в других ситуациях можно использовать в условии фильтрации любые функции/конструкции, возвращающие значения True или False.

Применение функций к столбцам

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

Рассмотрим пример: напишем функцию, которая преобразует все буквы в строке к нижнему регистру, и применим к столбцу стран и регионов:

Очистка данных

Это целый этап работы с данными при подготовке их к построению моделей и нейронных сетей. Рассмотрим основные приемы и функции.

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

Строки-дубликаты удаляются полностью, таким образом, их количество уменьшается. Чтобы заменить их на пустые, можно использовать параметр inplace = True.

2) Для замены пропусков NaN на какое-либо значение используется функция fillna(). Например, заполним появившиеся после предыдущего пункта пропуски в последней строке нулями:

3) Пустые строки с NaN можно и вовсе удалить из датасета, для этого используется функция dropna() (можно также дополнительно указать параметр inplace = True):

Построение графиков

В Pandas есть также инструменты для простой визуализации данных.

1) Обычный график по точкам.

Построим зависимость ВВП на душу населения от места в рейтинге:

2) Гистограмма.

Отобразим ту же зависимость в виде столбчатой гистограммы:

3) Точечный график.

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

Сохранение датафрейма на компьютер

Сохраним наш датафрейм на компьютер:

Теперь с ним можно работать и в других программах.

Блокнот с кодом можно скачать здесь (формат .ipynb).

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

  • 20% теории и 80% практики
  • Постоянный контакт с преподавателями
  • Подготовка к трудоустройству

Мария Жарова

Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Читайте также: