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

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

Давайте посмотрим правде в глаза. Независимо от того, чем мы занимаемся, рано или поздно нам придется иметь дело с повторяющимися задачами, такими как обновление ежедневного отчета в Excel.

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

Для автоматизации отчетов в Excel вам не придется убеждать своего начальника перейти на Python! Можно просто использовать модуль Python openpyxl, чтобы сообщить Excel, что вы хотите работать через Python. При этом процесс создания отчетов получится автоматизировать, что значительно упростит вашу жизнь.

Набор данных

В этом руководстве мы будем использовать файл Excel с данными о продажах. Он похож на те файлы, которые используются в качестве входных данных для создания отчетов во многих компаниях. Вы можете скачать этот файл на Kaggle. Однако он имеет формат .csv , поэтому вам следует изменить расширение на .xlsx или просто загрузить его по этой ссылке на Google Диск (файл называется supermarket_sales.xlsx).

Прежде чем писать какой-либо код, внимательно ознакомьтесь с файлом на Google Drive. Этот файл будет использоваться как входные данные для создания следующего отчета на Python:


Теперь давайте сделаем этот отчет и автоматизируем его составление с помощью Python!

Создание сводной таблицы с помощью pandas

Импорт библиотек

Теперь, когда вы скачали файл Excel, давайте импортируем библиотеки, которые нам понадобятся.

Чтобы прочитать файл Excel, создать сводную таблицу и экспортировать ее в Excel, мы будем использовать Pandas. Затем мы воспользуемся библиотекой openpyxl для написания формул Excel, создания диаграмм и форматирования электронной таблицы с помощью Python. Наконец, мы создадим функцию на Python для автоматизации всего этого процесса.

Примечание. Если у вас не установлены эти библиотеки в Python, вы можете легко установить их, выполнив pip install pandas и pip install openpyxl в командной строке.

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.

Чтение файла Excel

Прежде чем читать Excel-файл, убедитесь, что он находится там же, где и ваш файл со скриптом на Python. Затем можно прочитать файл Excel с помощью pd.read_excel() , как показано в следующем коде:

В файле много столбцов, но для нашего отчета мы будем использовать только столбцы Gender , Product line и Total . Чтобы показать вам, как они выглядят, я выбрал их с помощью двойных скобок. Если мы выведем это в Jupyter Notebooks, увидим следующий фрейм данных, похожий на таблицу Excel:


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

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

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

Таблица report_table должна выглядеть примерно так:


Экспорт сводной таблицы в файл Excel

Чтобы экспортировать созданную сводную таблицу, мы используем метод .to_excel() . Внутри скобок нужно написать имя выходного файла Excel. В данном случае давайте назовем этот файл report_2021.xlsx.

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

Теперь файл Excel экспортируется в ту же папку, в которой находится ваш скрипт Python.

Создание отчета с помощью openpyxl

Каждый раз, когда мы захотим получить доступ к файлу, мы будем использовать load_workbook() , импортированный из openpyxl. В конце работы мы будем сохранять полученные результаты с помощью метода .save() .

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

Создание ссылки на строку и столбец

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

Чтобы получить ссылки в книге Excel, мы сначала загружаем её с помощью функции load_workbook() и находим лист, с которым хотим работать, используя wb[‘имя листа’] . Затем мы получаем доступ к активным ячейкам с помощью метода .active .

Давайте выведем на экран созданные нами переменные, чтобы понять, что они означают. В данном случае мы получим следующие числа:

Откройте файл report_2021.xlsx, который мы экспортировали ранее, чтобы убедиться в этом.


Как видно на картинке, минимальная строка – 5, максимальная — 7. Кроме того, минимальная ячейка – это A1 , а максимальная – G7 . Эти ссылки будут чрезвычайно полезны для следующих разделов.

Добавление диаграмм в Excel при помощи Python

Чтобы создать диаграмму в Excel на основе созданной нами сводной таблицы, нужно использовать модуль Barchart . Его мы импортировали ранее. Для определения позиций значений данных и категорий мы используем модуль Reference из openpyxl (его мы тоже импортировали в самом начале).

После написания этого кода файл report_2021.xlsx должен выглядеть следующим образом:


  • barchart = BarChart() инициализирует переменную barchart из класса Barchart .
  • data и categories – это переменные, которые показывают, где находится необходимая информация. Для автоматизации мы используем ссылки на столбцы и строки, которые определили выше. Также имейте в виду, что мы включаем заголовки в данные, но не в категории.
  • Мы используем add_data() и set_categories() , чтобы добавить необходимые данные в гистограмму. Внутри add_data() добавим title_from_data = True , потому что мы включили заголовки для данных.
  • Метод sheet.add_chart() используется для указания, что мы хотим добавить нашу гистограмму в лист Report. Также мы указываем, в какую ячейку мы хотим её добавить.
  • Дальше мы изменяем заголовок и стиль диаграммы, используя barchart.title и barchart.style .
  • И наконец, сохраняем все изменения с помощью wb.save()

Вот и всё! С помощью данного кода мы построили диаграмму в Excel.

Применение формул в Excel через Python

Вы можете набирать формулы в Excel при помощи Python так же, как вы это делаете непосредственно на листе Excel.

Предположим, мы хотим суммировать данные в ячейках B5 и B6 и отображать их в ячейке B7 . Кроме того, мы хотим установить формат ячейки B7 как денежный. Сделать мы это можем следующим образом:

Довольно просто, не правда ли? Мы можем протянуть эту формулу от столбца B до G или использовать цикл for для автоматизации. Однако сначала нам нужно получить алфавит, чтобы ссылаться на столбцы в Excel (A, B, C, …). Для этого воспользуемся библиотекой строк и напишем следующий код:

Если мы распечатаем excel_alphabet , мы получим список от A до G.

Так происходит потому, что сначала мы создали алфавитный список от A до Z, а затем взяли срез [0:max_column] , чтобы сопоставить длину этого списка с первыми 7 буквами алфавита (A-G).

Примечание. Нумерация в Python начинаются с 0, поэтому A = 0, B = 1, C = 2 и так далее. Срез [a:b] возвращает элементы от a до b-1 .

Применение формулы к нескольким ячейкам

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

мы используем ссылки на столбцы и помещаем их в цикл for :

После запуска кода мы получаем формулу суммы в строке Total для столбцов от B до G:


Посмотрим, что делает данный код:

  • for i in excel_alphabet проходит по всем активным столбцам, кроме столбца A ( if i! = 'A' ), так как столбец A не содержит числовых данных
  • запись sheet[f''] = f'=SUM(:' это то же самое, что и sheet['B7'] = '=SUM(B5:B6)' , только для столбцов от A до G
  • строчка sheet [f ' '].style = 'Currency' задает денежный формат ячейкам с числовыми данными (т.е. тут мы опять же исключаем столбец А)
  • мы добавляем запись Total в столбец А под максимальной строкой (т.е. под седьмой), используя код [f ' '] = 'Total'

Форматирование листа с отчетом

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

Вы также можете добавить другие параметры внутри Font() . В документации openpyxl можно найти список доступных стилей.

Итоговый отчет должен выглядеть следующим образом:


Автоматизация отчета с помощью функции Python

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

Приведенный ниже код может показаться устрашающим, но это просто объединение всего того, что мы написали выше. Плюс новые переменные file_name , month_name и month_and_extension .

Применение функции к одному файлу Excel

Представим, что исходный файл, который мы загрузили, имеет имя sales_2021.xlsx вместо supermarket_sales.xlsx. Чтобы применить формулу к отчету, пишем следующее:

После запуска этого кода вы получите файл Excel с именем report_2021.xlsx в той же папке, где находится ваш скрипт Python.

Применение функции к нескольким файлам Excel

Представим, что теперь у нас есть только ежемесячные файлы Excel sales_january.xlsx, sales_february.xlsx и sales_march.xlsx (эти файлы можно найти на GitHub).

Вы можете применить нашу функцию к ним всем, чтобы получить 3 отчета.

Или можно сначала объединить эти три отчета с помощью pd.concat() , а затем применить функцию только один раз.

Заключение

Код на Python, который мы написали в этом руководстве, можно запускать на вашем компьютере по расписанию. Для этого нужно просто использовать планировщик задач или crontab. Вот и все!

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

Списки в Python представляют собой упорядоченные изменяемые наборы объектов, пронумерованных от 0. При этом объекты могут быть разными — от целых чисел до строк. Списки могут также хранить в себе списки.

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

Хранение в памяти

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

До замены элемента последовательности print(numbers[1]) выведет 2, а после замены — 3.

Создание списка в Python

Это можно сделать несколькими способами, например перечислением элементов списка в квадратных скобках:

При этом единица будет на позиции 0, то есть print(numbers[0]) выведет 1.

Также можно использовать обработку итерируемого объекта функцией list() . Пусть у нас будет некоторая строка, тогда:

Также существуют генераторы списков, которые позволяют применить заданное выражение к каждому элементу последовательности. Допустим, необходимо создать list, состоящий из чисел от 1 до 5 включительно:

Срезы (slice) списка

Срезы позволяют получить некое подмножество значений. Следующий код вернёт список с элементами, начиная индексом 0 и не включая при этом индекс 2 и выше:

Далее выведем всё, за исключением элемента на позиции 3:

А теперь начиная с индекса 1 и до конца:

Операции над списками Python

  • x in l — true , если элемент x есть в списке l ;
  • x not in l — true , если элемент x отсутствует в l ;
  • l1 + l2 — объединение двух списков;
  • l * n , n * l — копирует список n раз;
  • len(l) — количество элементов в l ;
  • min(l) — наименьший элемент;
  • max(l) — наибольший элемент;
  • sum(l) — сумма чисел списка;
  • for i in list() — перебирает элементы слева направо.

Методы списков Python

Index

Возвращает положение первого совпавшего элемента. Поиск совпадения происходит слева направо. Пример:

Count

Данный метод считает, сколько раз указанное значение появляется в списке Python:

Append

Добавляет указанное значение в конец:

Сортирует список в Пайтоне. По умолчанию от меньшего к большему:

Также можно сортировать последовательность элементов от большего к меньшему:

Insert

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

Remove

Удаляет первое попавшееся вхождение элемента в списке Python:

Extend

Подобно методу append() , добавляет элементы, но преимущество метода extend() в том, что он также позволяет добавлять списки:

А данный метод удаляет элемент в конкретно указанном индексе, а также выводит удалённый элемент. Если индекс не указан, метод по умолчанию удалит последний элемент:

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

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 - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).

Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list:

Список можно создать и при помощи литерала:

Как видно из примера, список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего.

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

Возможна и более сложная конструкция генератора списков:

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

Функции и методы списков

Создать создали, теперь нужно со списком что-то делать. Для списков доступны основные встроенные функции, а также методы списков.

Таблица "методы списков"

МетодЧто делает
list.append(x)Добавляет элемент в конец списка
list.extend(L)Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x)Вставляет на i-ый элемент значение x
list.remove(x)Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop([i])Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]])Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x)Возвращает количество элементов со значением x
list.sort(Как сделать таблицу из списка питон)Сортирует список на основе функции
list.reverse()Разворачивает список
list.copy()Поверхностная копия списка
list.clear()Очищает список

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

И, напоследок, примеры работы со списками:

Изредка, для увеличения производительности, списки заменяют гораздо менее гибкими массивами (хотя в таких случаях обычно используют сторонние библиотеки, например NumPy).

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