СОЗДАНИЕ ТАБЛИЦ И ИХ ФИЛЬТРАЦИЯ В БИБЛИОТЕКЕ PANDAS ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Дрянкова Дарья Александровна, Замулин Иван Сергеевич
В статье рассматриваются способы создания таблиц библиотеки Pandas языка программирования Python и их выборка и фильтрация .
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Дрянкова Дарья Александровна, Замулин Иван Сергеевич
КАК ПРОВОДИТЬ АНАЛИЗ ДАННЫХ ПРИ ПОМОЩИ PYTHON?
ГИС-технологии — современный помощник в подборе недвижимости
ПОДГОТОВКА МЕТАДАННЫХ ПУБЛИКАЦИЙ ДЛЯ ПАКЕТНОГО ИМПОРТА В ИНСТИТУЦИОНАЛЬНЫЙ РЕПОЗИТОРИЙ НА ПЛАТФОРМЕ DSPACE
О ВОСТРЕБОВАННОСТИ ПОДГОТОВКИ В ОБЛАСТИ ПАРСИНГА ДАННЫХ ДЛЯ WEB-РАЗРАБОТЧИКОВ
Фреймворк для анализа и прогнозирования временных рядов при разработке компонент проактивных систем поддержки принятия решений
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
The article discusses ways to create tables of the Pandas library of the Python programming language and their selection and filtering .
Текст научной работы на тему «СОЗДАНИЕ ТАБЛИЦ И ИХ ФИЛЬТРАЦИЯ В БИБЛИОТЕКЕ PANDAS ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON»
Дрянкова Дарья Александровна, студент факультета информатики и вычислительной техники, Хакасский государственный университет имени
Н.Ф. Катанова, г. Абакан, Россия Замулин Иван Сергеевич, заведующий кафедрой ПОВТиАС, Хакасский государственный университет имени Н.Ф. Катанова, г. Абакан, Россия
СОЗДАНИЕ ТАБЛИЦ И ИХ ФИЛЬТРАЦИЯ В БИБЛИОТЕКЕ PANDAS ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON
Аннотация: В статье рассматриваются способы создания таблиц библиотеки Pandas языка программирования Python и их выборка и фильтрация.
Ключевые слова: Python, Pandas, таблицы данных, строки, DataFrame, фильтрация.
Annotation: The article discusses ways to create tables of the Pandas library of the Python programming language and their selection and filtering.
Keywords: Python, Pandas, data tables, strings, DataFrame, filtering.
Библиотека Pandas — это библиотека для работы с данными в формате таблиц на языке программирования Python. Она позволяет считывать, записывать и обрабатывать данные из различных источников, таких как файлы CSV, Excel, базы данных SQL и другие.
В возможности библиотеки Pandas включены:
1) Создание и работа с таблицами данных: Pandas позволяет создавать таблицы данных, называемые DataFrame, которые представляют собой двумерные структуры данных с именованными столбцами и строками. DataFrame позволяет удобно и эффективно хранить, и обрабатывать большие
2) Выборка и фильтрация данных: Pandas предоставляет широкий набор инструментов для выборки и фильтрации данных из таблиц. Это включает в себя выбор столбцов и строк по определенным критериям, а также фильтрацию данных по определенным условиям [1].
Способы создания таблиц в Pandas:
a) Создание таблицы из файла: Pandas может загружать данные из различных источников, включая CSV, Excel, JSON, SQL, HTML и другие форматы файлов. Например, для загрузки таблицы из файла CSV можно использовать метод read_csv().
b) Создание таблицы вручную: Pandas также позволяет создавать таблицы вручную с помощью функций, таких как DataFrame() или Series(). Эти функции позволяют задавать значения столбцов и строк таблицы и определять типы данных.
Рассмотрим некоторые из этих способов:
На рисунке 1 изображен пример загрузки данных из файла в формате CSV:
df = pd. reacl_csv («file . csv»> Рисунок 1 — загрузка данных из файла в формате CSV
На рисунке 2 изображен пример загрузки данных из базы данных MySQL:
import mysql.с onne с t о г
password=»pasEwcrd», da tabase=,rdat abase «
qj.e г у = «SELECT * FROM table» df = pd.reacl sql (qj.ery, mydb>
Рисунок 2 — загрузка данных из базы данных MySQL
На рисунке 3 представлен пример создания таблицы вручную с помощью функций Pandas:
Рисунок 3 — Создание таблицы вручную с помощью функций Pandas
На рисунке 4 изображен пример создания таблицы данных с помощью массива №тРу:
Рисунок 4 — Создание таблицы данных с помощью массива NumPy
На рисунке 5 представлен пример создания таблицы из списка словарей:
>>> irport pandas as pd
0 Alice 25 ITew York
1 Bob 3 0 Icndcn
2 Charlie 35 Paris
Рисунок 5 — Создание таблицы из списка словарей
Как было указано ранее, библиотека Pandas имеет широкий набор инструментов для выборки и фильтрации данных из таблиц, рассмотрим примеры некоторых из них:
На рисунке 6 изображен пример выбора строк по значению в столбце, где выбрали все значения со значением city == ‘LA’.
Рисунок 6 — Выбор строк по значению в столбце
На рисунке 7 изображен пример выбора строк по нескольким значениям, в качестве значений для фильтрации выбираются строки со значениями, где где age
>>> df = pd.DataFrame(data> »> df_1 a_30 = df [ (df [ 1 age ‘ ] > > > p гi11t(df_1a_3 0>
name age city 0 Alice 25 :Г£
i (df[1 city’] == ‘NY1>]
Рисунок 7 — Выбор строк по нескольким значениям
На рисунке 8 изображен выбор строк по частичному совпадению в столбце, в данном примере выбираются строки, где name содержит букву ‘a’.
import pandas as pd
df _a = df [ df [ ‘ name » ] . s t r . cont a i ns ( » a1 > ] prir.t (df_a>
2 Charlie IS SF
Рисунок 8 — Выбор строк по частичному совпадению
Также мы можем выбирать строки по индексу, а столбцы по названию, как представлено на рисунке 9.
#Бы6эр с?рок ло индексу
Maine: 1, dtype: object
#выбор столбцов ло назьамиы
df_name = df [ ‘name «]
Maine: name, dtype: object
Рисунок 9 — Выбор строк по индексу и выбор столбцов по названию
Преимущества библиотеки Pandas:
1) Интуитивный интерфейс: Pandas обладает очень удобным и интуитивным интерфейсом для работы с таблицами, благодаря чему программистам гораздо проще понимать, как она работает, и использовать ее для своих задач.
2) Широкий функционал: Pandas предоставляет множество функций для работы с данными, таких как выборка и фильтрация, группировка,
объединение таблиц и преобразование данных, что делает ее очень мощной и универсальной библиотекой.
3) Простота использования: Благодаря интуитивному интерфейсу и широкому функционалу, Pandas позволяет программистам легко и быстро решать задачи работы с данными.
4) Широкое сообщество: Pandas имеет широкое сообщество пользователей и разработчиков, которые создают множество дополнительных инструментов и библиотек для улучшения ее функционала и расширения возможностей.
Недостатки библиотеки Pandas:
1) Производительность: При работе с большими объемами данных Pandas может быть не слишком эффективной и занимать много времени на выполнение операций.
2) Потребление памяти: Pandas может потреблять много памяти для хранения таблиц и данных, особенно при работе с большими объемами данных.
3) Сложность: Pandas может быть сложна для понимания и использования для начинающих программистов, особенно при работе с более сложными операциями.
В сравнении с другими библиотеками для работы с данными, Pandas обладает уникальным комбинацией преимуществ и недостатков, которые делают ее хорошим выбором для многих задач работы с данными, но не всегда оптимальным решением для конкретных задач. Например, для работы с большими объемами данных может быть более эффективным использование специализированных библиотек, таких как Apache Spark. В то же время, для более простых задач работы с данными Pandas является лучшим выбором благодаря своей простоте и удобству использования [2].
1. Гэддис Т. Начинаем программировать на Python [Текст] / Т. Гэддис.
— СПб.: БХВ-Петербург, 2021. — 768 с. ISBN: 978-5-9775-4002-5.
2. Лусиану Рамальо, Слинкин А. А., Python. К вершинам мастерства. Лаконичное и эффективное программирование [Текст] / Лусиану Рамальо. — М.: ДМК-Пресс, 2022 г. — 898 с. ISBN: 978-5-97060-885-2.
Python: Как создать оформленную HTML таблицу из pandas DataFrame
Мы в Netpeak довольно активно используем дайджесты, это такие небольшие, информационные письма с таблицами и графиками которые помогают нам в общей массе информации контролировать основные показатели бизнеса, а каждому сотруднику выполнение его KPI.
Более подробно о том, что такое дайжесты и как мы их используем я уже рассказывал на GoAnalytics в 2019 году. Кому это интересно по ссылке доступна запись доклада.
В этой статье речь пойдёт о технической реализации таких писем на Python, а не о самих дайджестах.
Переводим pandas DataFrame в HTML таблицу с применением CSS стилей
По сути письмо — это HTML документ, и для того, что бы в него включить таблицу созданную с помощью pandas , её предварительно необходимо преобразовать в HTML формат. В pandas есть встроенный метод to_html() который выполняет эту операцию, но форматирование таблицы в таком виде оставляет желать лучшего.
Метод to_html()
Для начала давайте создадим тестовый DataFrame, и воспользуемся стандартным методом, для конвертации его в HTML таблицу.
import pandas as pd data = df = pd.DataFrame.from_dict(data) df.to_html()
Наш DataFrame при этом будет конвертирован вот в такую HTML таблицу.

Вроде и получилось то, что хотели, но выглядит мягко говоря так себе.
Метод style
Есть внутренние возможности по приведению этой таблицы в порядок с помощью метода style , ознакомится с ними можно в официальной документации. Но на самом деле его возможности ограничены, и он не очень удобен.
Аргумент classes
Второй вариант прописывать CSS стили в отдельном файле, и использовать аргумент classes метода to_html() , пример реализации можно подсмотреть на stackowerflof.
Если вкратце, вы создаёте файл с описанием CSS стилей, например такой:
/* includes alternating gray and white with on-hover color */ .mystyle < font-size: 11pt; font-family: Arial; border-collapse: collapse; border: 1px solid silver; >.mystyle td, th < padding: 5px; >.mystyle tr:nth-child(even) < background: #E0E0E0; >.mystyle tr:hover
Сохраняем этот CSS код в файл df_style.css, в нашей рабочей директории.
Далее создаём каркас HTML страницы, в которую добавим наш DataFrame с применёнными CSS стилями.
html_string = '''HTML Pandas Dataframe with CSS '''
Далее применяем к нашему DataFrame метод to_html() используя аргумент classes , и с помощью format() внедряем полученную HTML таблиц в созданный ранее каркас.
html_string.format(table=df.to_html(classes='mystyle'))
На выходе получим вот такую таблицу HTML таблицу:

Такая таблица выглядит уже значительно привлекательнее, но есть одна проблема, большинство почтовых сервисов, включая Gmail при отображении таблиц в письмах вырезают тег style, поэтому в письме всё равно ваша таблица будет выглядеть так же как и первый вариант, приведённый в статье в описании метода to_html() .
Библиотека pretty-html-table
Мы уже рассмотрели несколько способов привести DataFrame в формат HTML таблицы, но все они к сожалению имеют ряд недостатков.
Наиболее удобным и универсальным способом превратить DataFrame в элементную HTML таблицу предоставляет библиотека pretty-html-table .
Для начала её надо установить, откройте командную строку, или терминал, в зависимости от вашей операционной системы и выполните следую команду.
pip install pretty-html-table
Далее возвращаемся в python, и используем метод build_table() для создания HTML таблицы.
pretty_html_table.build_table(df, 'blue_light')
В результате получим вот такую HTML таблицу:

Преимущество библиотеки pretty-html-table не только в том, что она создаёт более привлекательные таблицы, но и в том, что она применяет стили к каждому элементу таблицы. В этом случае все почтовые сервисы отображают ваши HTML таблиц корректно.
Как вы заметили аргумент color метода build_table() отвечает за цветовую схему вашей таблицы, на данный момент вы можете применять одну из следующих цветовых схем:
Создание простых сводных таблиц в pandas с помощью sidetable¶
Крис Моффитт, редактор сайта об автоматизации бизнес-задач на Python, разработал модуль sidetable.
Со слов автора новый модуль расширяет возможности value_counts() и использует API pandas для регистрации собственных методов.
Давайте разбираться, как он работает.
Для начала установим модуль:
#!pip3 install sidetable
Рассмотрим пример с грантами для школ США, если кратко: Конгресс еще при Обаме выделил 4 миллиарда у.е. для реформы образования, для получения гранта школе надо выбрать одну из моделей реформирования ( Model Selected ).
Начинаем, как обычно, с импорта модулей:
import pandas as pd import sidetable
df = pd.read_csv('https://github.com/chris1610/pbpython/blob/master/data/school_transform.csv?raw=True', index_col=0) df.head()
| School Name | City | State | District Name | Model Selected | Award_Amount | Region | |
|---|---|---|---|---|---|---|---|
| 0 | HOGARTH KINGEEKUK MEMORIAL SCHOOL | SAVOONGA | AK | BERING STRAIT SCHOOL DISTRICT | Transformation | 471014 | West |
| 1 | AKIACHAK SCHOOL | AKIACHAK | AK | YUPIIT SCHOOL DISTRICT | Transformation | 520579 | West |
| 2 | GAMBELL SCHOOL | GAMBELL | AK | BERING STRAIT SCHOOL DISTRICT | Transformation | 449592 | West |
| 3 | BURCHELL HIGH SCHOOL | WASILLA | AK | MATANUSKA-SUSITNA BOROUGH SCHOOL DISTRICT | Transformation | 641184 | West |
| 4 | AKIAK SCHOOL | AKIAK | AK | YUPIIT SCHOOL DISTRICT | Transformation | 399686 | West |
В результате импорта модуля sidetable у DataFrame появился новый метод stb .
Вызов stb.freq() позволяет построить сводную таблицу частот по штатам:
df.stb.freq(['State']).head()
| State | count | percent | cumulative_count | cumulative_percent | |
|---|---|---|---|---|---|
| 0 | CA | 92 | 12.153236 | 92 | 12.153236 |
| 1 | FL | 71 | 9.379128 | 163 | 21.532365 |
| 2 | PA | 58 | 7.661823 | 221 | 29.194188 |
| 3 | OH | 35 | 4.623514 | 256 | 33.817701 |
| 4 | MO | 32 | 4.227213 | 288 | 38.044914 |
Этот пример показывает, что CA (California) встречается 92 раза и составляет 12,15% от общего количества школ. Если включить в подсчеты FL (Florida), то будет 163 школы, что составляет 21,5% от общего числа школ, участвующих в грантах.
Можно сравнить этот результат с выводом стандартного метода value_counts() .
При установке normalize в True возвращаемый объект будет содержать относительные частоты уникальных значений:
df['State'].value_counts(normalize=True)[:10]
CA 0.121532 FL 0.093791 PA 0.076618 OH 0.046235 MO 0.042272 MI 0.036988 GA 0.034346 NY 0.033025 NC 0.030383 AZ 0.025099 Name: State, dtype: float64
Хм. разница заметна, даже невооруженным глазом.
Можно составить список штатов, которые составляют около 50% от общего числа с помощью аргумента thresh (рус. «молотить») и сгруппировать все остальные штаты в категорию Others :
Как создать таблицу с помощью Matplotlib

Вы можете использовать один из двух следующих методов для создания таблиц в Python с помощью Matplotlib:
Способ 1: создать таблицу из pandas DataFrame
#create pandas DataFrame df = pd.DataFrame(np.random.randn (20, 2), columns=['First', 'Second']) #create table table = ax.table (cellText=df.values , colLabels=df.columns , loc='center')
Способ 2: создать таблицу из пользовательских значений
#create values for table table_data=[ ["Player 1", 30], ["Player 2", 20], ["Player 3", 33], ["Player 4", 25], ["Player 5", 12] ] #create table table = ax.table (cellText=table_data, loc='center')
В этом руководстве приведены примеры того, как использовать эти методы на практике.
Пример 1: Создать таблицу из pandas DataFrame
В следующем коде показано, как создать таблицу в Matplotlib, содержащую значения в кадре данных pandas:
import numpy as np import pandas as pd import matplotlib.pyplot as plt #make this example reproducible np.random.seed (0) #define figure and axes fig, ax = plt.subplots() #hide the axes fig.patch.set_visible (False) ax.axis('off') ax.axis('tight') #create data df = pd.DataFrame(np.random.randn (20, 2), columns=['First', 'Second']) #create table table = ax.table (cellText=df.values, colLabels=df.columns, loc='center') #display table fig. tight_layout () plt.show()

Пример 2. Создание таблицы из пользовательских значений
Следующий код показывает, как создать таблицу в Matplotlib, содержащую пользовательские значения:
import numpy as np import pandas as pd import matplotlib.pyplot as plt #define figure and axes fig, ax = plt.subplots() #create values for table table_data=[ ["Player 1", 30], ["Player 2", 20], ["Player 3", 33], ["Player 4", 25], ["Player 5", 12] ] #create table table = ax.table(cellText=table_data, loc='center') #modify table table.set_fontsize (14) table. scale (1,4) ax.axis('off') #display table plt.show()

Обратите внимание, что table.scale(width, length) изменяет ширину и длину таблицы. Например, мы могли бы сделать таблицу еще длиннее, изменив длину:
table. scale (1,10)
