Python excel поиск значения в столбце

Обновлено: 07.07.2024

1) Установка модуля OpenPyXL

Мы можем установить модуль OpenPyXL с помощью команды PIP.

Pip install openpyxl.

2) Чтение файла Excel с помощью OpenPyXL

Я создал образец файла Excel (Records.xlsx) с тремя листами. Данные присутствуют в первых двух листах.

Openpyxl пример листа Excel

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

1. Получение названий листов из файла Excel

листы Переменная Возвращает список названий рабочих листов в рабочей книге. Имена возвращаются в порядке рабочих листов в файле Excel.

2. Получение специфического листа из файла Excel

Мы можем получить доступ к конкретному листу, используя переменную индекс с объектом Workbook.

Если вы хотите получить доступ к текущему активному листу, используйте Активный Собственность рабочей книги.

3. Чтение значения ячейки из листа Excel

Есть два способа получить значение клетки с листа Excel. Мы можем получить объект сотового элемента, используя функцию Cell (), или мы можем получить его, используя индекс клетки.

4. Общее количество рядов и столбцов в листе Excel

Мы можем получить общее количество строк и столбцов, используя max_row и max_column свойства рабочего листа.

5. Строка печати заголовка листа Excel

Функция ITER_ROWS () генерирует ячейки из рабочего листа по строке. Мы можем использовать его, чтобы получить клетки из определенного ряда.

6. Печать всех значений из столбца

7. Печать всех значений из строки

8. Диапазон чтения клеток от листа Excel

Мы можем пройти ассортимент ячеек для чтения нескольких ячеек одновременно.

9. Итализация клетки по рядам

Аргументы, переданные функции iter_rows (), создают двумерную таблицу, из которой значения прочитаны, по строке. В этом примере значения читаются между A2 и C4.

10. Итализаторы клетки по столбцам

Функция Iter_Cols () такая же, как iter_rows (), за исключением того, что значения читают столбца.

3) Написание файла Excel с помощью OpenPyXL

В этом разделе мы посмотрим несколько примеров записи файлов Excel и данных клеток.

1. Написание файла Excel с помощью OpenPyXL

OpenPyXL Написать файл Excel

2. Обновление сотовой стоимости

Мы можем либо использовать индекс ячейки или использовать объект ячейки для установки значения. Изменим некоторые значения в файле Excel, созданные в последнем примере.

Opennyxl Обновить значение ячейки

3. Добавление нескольких значений в лист Excel

Мы можем использовать функцию Append (), чтобы добавить последовательность значений в нижнюю часть рабочего листа.

Opennyxl добавить несколько строк в файл Excel

4) Удаление рядов и колонн из листа Excel

Мы можем использовать функции delete_cols () и delete_rows () для удаления столбцов и строк из листа Excel.

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

5. Заключение

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

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

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

  • Пакеты Python Excel
  • Получение листов из рабочей книги
  • Чтение ячейки данных
  • Итализация по рядам и колонкам
  • Написание электронных таблиц Excel
  • Добавление и удаление листов
  • Добавление и удаление строк и столбцов

Давайте узнаем, как работать с электронными таблицами Microsoft Excel, используя язык программирования Python сейчас!

Пакеты Python Excel

Opennyxl не является вашим единственным выбором. Есть несколько других пакетов, которые поддерживают Microsoft Excel:

Пару лет назад первые два раньше были самыми популярными библиотеками для использования с документами Excel. Однако автор этих пакетов перестал их поддерживать. Упаковка XLWINGS имеет много обещаний, но не работает на всех платформах и требует, чтобы Microsoft Excel установлена.

Вы будете использовать opennyxl в этой статье, потому что она активно разработана и поддерживается. OpenPyXL не требует установки Microsoft Excel, и он работает на всех платформах.

Вы можете установить OpenPyXL, используя Пип :

После завершения установки давайте узнаем, как использовать OpenPyXL, чтобы прочитать электронную таблицу Excel!

Получение листов из рабочей книги

Не стесняйтесь использовать свой собственный файл, хотя вывод из вашего собственного файла не будет соответствовать выходу образца в этой книге.

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

В этом примере вы импортируете load_workbook () от openpyxl а потом создайте Open_Workook () который принимает путь к вашей электронной таблице Excel. Далее вы используете load_workbook () создать opennyxl.workbook.workbook.workbook объект. Этот объект позволяет получить доступ к листам и ячейке в вашей электронной таблице. И да, у него действительно есть двойная Рабочая книга в его названии. Это не опечатка!

Остальные Open_Workook () Функция демонстрирует, как распечатать все текущие определенные листы в вашей электронной таблице, получите текущий активный лист и распечатайте название этого листа.

Когда вы запускаете этот код, вы увидите следующий вывод:

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

Чтение ячейки данных

Когда вы работаете с Microsoft Excel, данные хранятся в ячейках. Вам нужен способ получить доступ к теми ячейкам из Python, чтобы иметь возможность извлечь эти данные. OpenPyXL делает этот процесс прямо вперед.

Создать новый файл с именем Workbook_cells.py И добавьте этот код к нему:

Этот код загрузит файл Excel в рабочей книге OuterPyXL. Вы будете захватывать активный лист, а затем распечатать его Название и пара разных клеточных ценностей. Вы можете получить доступ к ячейке, используя объект листа, а затем квадратные скобки с именем столбца и номером строки внутри него. Например, лист ["A2"] Получите вам ячейку в столбце «А», строка 2. Чтобы получить значение этой ячейки, вы используете ценность атрибут.

Примечание: Этот код использует новую функцию, которая была добавлена в F-струны в Python 3.8. Если вы запустите это с более ранней версией, вы получите ошибку.

Когда вы запускаете этот код, вы получите этот вывод:

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

В этом примере вы используете ряд и Колонка атрибуты клетки Объект для получения информации о строке и столбце. Обратите внимание, что столбец «А» отображается на «1», «B» на «2», Etcetera. Если бы вы были повторить документ Excel, вы можете использовать координировать атрибут, чтобы получить имя ячейки.

Когда вы запускаете этот код, вывод будет выглядеть так:

Говоря о итерации, давайте узнаем, как это сделать следующим!

Итализация по рядам и колонкам

Иногда вам нужно будет повторять все электронные таблицы или порции электронной таблицы Excel. OpenPyXL позволяет сделать это несколькими разными способами. Создать новый файл с именем iTerating_over_cells.py и добавьте следующий код:

Здесь вы загружаете электронную таблицу, а затем закрутите все клетки в столбце «А». Для каждой клетки вы распечатаете клетки объект. Вы можете использовать некоторые из атрибутов ячейки, о которых вы узнали в предыдущем разделе, если вы хотите отформатировать вывод более гранулярно.

Это то, что вы получаете от выполнения этого кода:

Вывод усечен, поскольку он будет распечатан довольно много ячейки по умолчанию. OpeAnPyXL предоставляет другие способы повторения рядов и столбцов, используя Iter_rows () и ITER_COLS () Функции. Эти методы принимают несколько аргументов:

  • min_row.
  • max_row.
  • min_col.
  • Max_Col.

Вы также можете добавить на values_only Аргумент, который говорит OwnerPyXL для возврата значения ячейки вместо элемента клеток. Продолжайте и создайте новый файл с именем iTerating_over_cell_values.py И добавьте этот код к нему:

Этот код демонстрирует, как вы можете использовать Iter_rows () Итерацию по рядам в электронной таблице Excel и распечатайте значения этих строк. Когда вы запускаете этот код, вы получите следующий вывод:

Написание электронных таблиц Excel

Создание электронной таблицы Excel с использованием OpenPyXL не принимает много кода. Вы можете создать электронную таблицу, используя Workbook () класс. Продолжайте и создайте новый файл с именем write_hello.py И добавьте этот код к нему:

Вот вы создали Workbook () и получить активный лист. Затем вы устанавливаете первые три ряда в столбцу «A» на разные строки. Наконец, вы звоните Сохранить () и пропустите это путь чтобы сохранить новый документ. Поздравляю! Вы только что создали электронную таблицу Excel с Python.

Давайте узнаем, как добавить и удалить листы в вашей рабочей книге рядом!

Добавление и удаление листов

Многие люди любят организовывать свои данные на нескольких рабочих таблицах в рабочей книге. OpenPyxl поддерживает возможность добавлять новые листы в Workbook () объект через его create_sheet () метод.

Создать новый файл с именем crosse_shiets.py И добавьте этот код к нему:

Здесь вы используете create_sheet () дважды, чтобы добавить две новые рабочие листы к рабочей книге. Второй пример показывает, как установить заголовок листа и при каком индексе вставить лист. Аргумент индекс = 1 означает, что рабочий лист будет добавлен после первого существующего листа, поскольку они проиндексируются, начиная с 0 Отказ

Когда вы запускаете этот код, вы увидите следующий вывод:

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

На этот раз вы держите ссылку на первый рабочий лист, который вы создаете, назначив результат к Лист1 Отказ Затем вы удалите его позже в коде. В качестве альтернативы, вы также можете удалить этот лист, используя тот же синтаксис, как и раньше, как это:

Независимо от того, какой метод вы выберете для удаления рабочего листа, выход будет одинаковым:

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

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

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

  • .insert_rows ()
  • .delete_rows ()
  • .insert_cols ()
  • .delete_cols ()

Каждый из этих методов может принимать два аргумента:

Чтобы увидеть, как это работает, создайте файл с именем insert_demo.py . и добавьте следующий код:

Здесь вы создаете лист и вставьте новый столбец перед столбцом «A». Столбцы индексируются с 1 при контрастности, рабочие листы начнут на 0. Это эффективно перемещает все клетки в столбце A в столбец B. Затем вы вставляете два новых строки, начиная с рядка 2.

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

Чтобы узнать, как удалить столбцы или строки, создайте новый файл с именем delete_demo.py и добавить этот код:

Этот код создает текст в нескольких клетках, а затем удаляет столбец A используя delete_cols () Отказ Это также удаляет два строках, начиная с 2-го ряда через delete_rows () Отказ Возможность добавления и удаления колонн и строки может быть весьма полезным, когда речь идет о организации ваших данных.

Обертывание

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

  • Пакеты Python Excel
  • Получение листов из рабочей книги
  • Чтение ячейки данных
  • Итализация по рядам и колонкам
  • Написание электронных таблиц Excel
  • Добавление и удаление листов
  • Добавление и удаление строк и столбцов

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

Эта библиотека пригодится, если вы хотите читать и редактировать файлы .xlsx, xlsm, xltx и xltm.

Установите openpyxl using pip. Общие рекомендации по установке этой библиотеки — сделать это в виртуальной среде Python без системных библиотек. Вы можете использовать виртуальную среду для создания изолированных сред Python: она создает папку, содержащую все необходимые файлы, для использования библиотек, которые потребуются для Python.

Перейдите в директорию, в которой находится ваш проект, и повторно активируйте виртуальную среду venv. Затем перейдите к установке openpyxl с помощью pip, чтобы убедиться, что вы можете читать и записывать с ним файлы:

Теперь, когда вы установили openpyxl, вы можете начать загрузку данных. Но что именно это за данные? Например, в книге с данными, которые вы пытаетесь получить на Python, есть следующие листы:



На первый взгляд, с этими объектами Worksheet мало что можно сделать. Однако, можно извлекать значения из определенных ячеек на листе книги, используя квадратные скобки [], к которым нужно передавать точную ячейку, из которой вы хотите получить значение.

Обратите внимание, это похоже на выбор, получение и индексирование массивов NumPy и Pandas DataFrames, но это еще не все, что нужно сделать, чтобы получить значение. Нужно еще добавить значение атрибута:


Помимо value, есть и другие атрибуты, которые можно использовать для проверки ячейки, а именно row, column и coordinate:

Атрибут row вернет 2;
Добавление атрибута column к “С” даст вам «B»;
coordinate вернет «B2».

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


Обратите внимание: если вы не укажете значение атрибута value, вы получите <Cell Sheet3.B1>, который ничего не говорит о значении, которое содержится в этой конкретной ячейке.

Вы используете цикл с помощью функции range (), чтобы помочь вам вывести значения строк, которые имеют значения в столбце 2. Если эти конкретные ячейки пусты, вы получите None.
Более того, существуют специальные функции, которые вы можете вызвать, чтобы получить другие значения, например get_column_letter () и column_index_from_string.

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


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

Конечно, использовать другой цикл.


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

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


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


Это все очень классно, но мы почти слышим, что вы сейчас думаете, что это ужасно трудный способ работать с файлами, особенно если нужно еще и управлять данными.
Должно быть что-то проще, не так ли? Всё так!

Openpyxl имеет поддержку Pandas DataFrames. И можно использовать функцию DataFrame () из пакета Pandas, чтобы поместить значения листа в DataFrame:


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

Чтобы записать Pandas DataFrames обратно в файл Excel, можно использовать функцию dataframe_to_rows () из модуля utils:


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

И не забудьте деактивировать виртуальную среду, когда закончите работу с данными!

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

Готовы узнать больше?

Чтение и форматирование Excel файлов xlrd
Эта библиотека идеальна, если вы хотите читать данные и форматировать данные в файлах с расширением .xls или .xlsx.


Если вы не хотите рассматривать всю книгу, можно использовать такие функции, как sheet_by_name () или sheet_by_index (), чтобы извлекать листы, которые необходимо использовать в анализе.


Наконец, можно получить значения по определенным координатам, обозначенным индексами.
О том, как xlwt и xlutils, соотносятся с xlrd расскажем дальше.

Запись данных в Excel файл при помощи xlrd

Если нужно создать электронные таблицы, в которых есть данные, кроме библиотеки XlsxWriter можно использовать библиотеки xlwt. Xlwt идеально подходит для записи и форматирования данных в файлы с расширением .xls.

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


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

Цикл for будет следить за тем, чтобы все значения попадали в файл: задаем, что с каждым элементом в диапазоне от 0 до 4 (5 не включено) мы собираемся производить действия. Будем заполнять значения строка за строкой. Для этого указываем row элемент, который будет “прыгать” в каждом цикле. А далее у нас следующий for цикл, который пройдется по столбцам листа. Задаем условие, что для каждой строки на листе смотрим на столбец и заполняем значение для каждого столбца в строке. Когда заполнили все столбцы строки значениями, переходим к следующей строке, пока не заполним все имеющиеся строки.


В качестве примера скриншот результирующего файла:


Теперь, когда вы видели, как xlrd и xlwt взаимодействуют вместе, пришло время посмотреть на библиотеку, которая тесно связана с этими двумя: xlutils.

Коллекция утилит xlutils

Эта библиотека в основном представляет собой набор утилит, для которых требуются как xlrd, так и xlwt. Включает в себя возможность копировать и изменять/фильтровать существующие файлы. Вообще говоря, оба этих случая подпадают теперь под openpyxl.

Использование pyexcel для чтения файлов .xls или .xlsx

Еще одна библиотека, которую можно использовать для чтения данных таблиц в Python — pyexcel. Это Python Wrapper, который предоставляет один API для чтения, обработки и записи данных в файлах .csv, .ods, .xls, .xlsx и .xlsm.

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


Однако, если вы хотите вернуть в словарь двумерные массивы или, иными словами, получить все листы книги в одном словаре, стоит использовать функцию get_book_dict ().

Имейте в виду, что обе упомянутые структуры данных, массивы и словари вашей электронной таблицы, позволяют создавать DataFrames ваших данных с помощью pd.DataFrame (). Это упростит обработку ваших данных!

Наконец, вы можете просто получить записи с pyexcel благодаря функции get_records (). Просто передайте аргумент file_name функции и обратно получите список словарей:


Записи файлов при помощи pyexcel

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


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

Однако, если у вас есть словарь, нужно будет использовать функцию save_book_as (). Передайте двумерный словарь в bookdict и укажите имя файла, и все ОК:


Помните, что когда используете код, который напечатан в фрагменте кода выше, порядок данных в словаре не будет сохранен!

Чтение и запись .csv файлов

Если вы все еще ищете библиотеки, которые позволяют загружать и записывать данные в CSV-файлы, кроме Pandas, рекомендуем библиотеку csv:


Обратите внимание, что NumPy имеет функцию genfromtxt (), которая позволяет загружать данные, содержащиеся в CSV-файлах в массивах, которые затем можно помещать в DataFrames.

Финальная проверка данных

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


Note: Используйте DataCamp Pandas Cheat Sheet, когда вы планируете загружать файлы в виде Pandas DataFrames.

Если данные в массиве, вы можете проверить его, используя следующие атрибуты массива: shape, ndim, dtype и т.д.:

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

Если вы хотите глубже погрузиться в тему — знакомьтесь с PyXll, которая позволяет записывать функции в Python и вызывать их в Excel.

Excel — это чрезвычайно распространённый инструмент для анализа данных. С ним легко научиться работать, есть он практически на каждом компьютере, а тот, кто его освоил, может с его помощью решать довольно сложные задачи. Python часто считают инструментом, возможности которого практически безграничны, но который освоить сложнее, чем Excel. Автор материала, перевод которого мы сегодня публикуем, хочет рассказать о решении с помощью Python трёх задач, которые обычно решают в Excel. Эта статья представляет собой нечто вроде введения в Python для тех, кто хорошо знает Excel.




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

Начнём с импорта Python-библиотеки pandas и с загрузки в датафреймы данных, которые хранятся на листах sales и states книги Excel. Такие же имена мы дадим и соответствующим датафреймам.


Теперь воспользуемся методом .head() датафрейма sales для того чтобы вывести элементы, находящиеся в начале датафрейма:


Сравним то, что будет выведено, с тем, что можно видеть в Excel.


Сравнение внешнего вида данных, выводимых в Excel, с внешним видом данных, выводимых из датафрейма pandas

Тут можно видеть, что результаты визуализации данных из датафрейма очень похожи на то, что можно видеть в Excel. Но тут имеются и некоторые очень важные различия:

  • Нумерация строк в Excel начинается с 1, а в pandas номер (индекс) первой строки равняется 0.
  • В Excel столбцы имеют буквенные обозначения, начинающиеся с буквы A , а в pandas названия столбцов соответствуют именам соответствующих переменных.

Реализация возможностей Excel-функции IF в Python

В Excel существует очень удобная функция IF , которая позволяет, например, записать что-либо в ячейку, основываясь на проверке того, что находится в другой ячейке. Предположим, нужно создать в Excel новый столбец, ячейки которого будут сообщать нам о том, превышают ли 500 значения, записанные в соответствующие ячейки столбца B . В Excel такому столбцу (в нашем случае это столбец E ) можно назначить заголовок MoreThan500 , записав соответствующий текст в ячейку E1 . После этого, в ячейке E2 , можно ввести следующее:

Использование функции IF в Excel

Для того чтобы сделать то же самое с использованием pandas, можно воспользоваться списковым включением (list comprehension):


Списковые включения в Python: если текущее значение больше 500 — в список попадает Yes, в противном случае — No

Списковые включения — это отличное средство для решения подобных задач, позволяющее упростить код за счёт уменьшения потребности в сложных конструкциях вида if/else. Ту же задачу можно решить и с помощью if/else, но предложенный подход экономит время и делает код немного чище. Подробности о списковых включениях можно найти здесь.

Реализация возможностей Excel-функции VLOOKUP в Python

В нашем наборе данных, на одном из листов Excel, есть названия городов, а на другом — названия штатов и провинций. Как узнать о том, где именно находится каждый город? Для этого подходит Excel-функция VLOOKUP , с помощью которой можно связать данные двух таблиц. Эта функция работает по принципу левого соединения, когда сохраняется каждая запись из набора данных, находящегося в левой части выражения. Применяя функцию VLOOKUP , мы предлагаем системе выполнить поиск определённого значения в заданном столбце указанного листа, а затем — вернуть значение, которое находится на заданное число столбцов правее найденного значения. Вот как это выглядит:


Зададим на листе sales заголовок столбца F как State и воспользуемся функцией VLOOKUP для того чтобы заполнить ячейки этого столбца названиями штатов и провинций, в которых расположены города.

Использование функции VLOOKUP в Excel

В Python сделать то же самое можно, воспользовавшись методом merge из pandas. Он принимает два датафрейма и объединяет их. Для решения этой задачи нам понадобится следующий код:

  1. Первый аргумент метода merge — это исходный датафрейм.
  2. Второй аргумент — это датафрейм, в котором мы ищем значения.
  3. Аргумент how указывает на то, как именно мы хотим соединить данные.
  4. Аргумент on указывает на переменную, по которой нужно выполнить соединение (тут ещё можно использовать аргументы left_on и right_on , нужные в том случае, если интересующие нас данные в разных датафреймах названы по-разному).

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

Сводные таблицы (Pivot Tables) — это одна из самых мощных возможностей Excel. Такие таблицы позволяют очень быстро извлекать ценные сведения из больших наборов данных. Создадим в Excel сводную таблицу, выводящую сведения о суммарных продажах по каждому городу.

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

Как видите, для создания подобной таблицы достаточно перетащить поле City в раздел Rows , а поле Sales — в раздел Values . После этого Excel автоматически выведет суммарные продажи для каждого города.

Для того чтобы создать такую же сводную таблицу в pandas, нужно будет написать следующий код:

  1. Здесь мы используем метод sales.pivot_table , сообщая pandas о том, что мы хотим создать сводную таблицу, основанную на датафрейме sales .
  2. Аргумент index указывает на столбец, по которому мы хотим агрегировать данные.
  3. Аргумент values указывает на то, какие значения мы собираемся агрегировать.
  4. Аргумент aggfunc задаёт функцию, которую мы хотим использовать при обработке значений (тут ещё можно воспользоваться функциями mean , max , min и так далее).

Итоги

Из этого материала вы узнали о том, как импортировать Excel-данные в pandas, о том, как реализовать средствами Python и pandas возможности Excel-функций IF и VLOOKUP , а также о том, как воспроизвести средствами pandas функционал сводных таблиц Excel. Возможно, сейчас вы задаётесь вопросом о том, зачем вам пользоваться pandas, если то же самое можно сделать и в Excel. На этот вопрос нет однозначного ответа. Python позволяет создавать код, который поддаётся тонкой настройке и глубокому исследованию. Такой код можно использовать многократно. Средствами Python можно описывать очень сложные схемы анализа данных. А возможностей Excel, вероятно, достаточно лишь для менее масштабных исследований данных. Если вы до этого момента пользовались только Excel — рекомендую испытать Python и pandas, и узнать о том, что у вас из этого получится.

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