Открываем и сохраняем файлы Excel в pandas

Pandas идеально подходит для работы с табличными данными – он способен открывать файлы Excel и проводить внутри преобразования. Более того, сохранить датафрейм тоже можно в файл Excel. Это делает удобной интеграцию pandas с офисным пакетом: результаты можно сразу красиво оформить для выступления на конференции или передачи коллегам, которые занимаются только “мокрой” биологией и не работают с инструментами data science.

Давайте посмотрим, как это делается. Если мы импортировали pandas под именем pd:

import pandas as pd

то считать фрейм данных из файла Excel можно следующим образом:

df = pd.read_excel(”your_excel_file.xlsx”)

Эта строчка создаст фрейм данных df и перенесёт в него данные из файла.

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

По умолчанию метод pd.read_excel считывает данные, начиная с ячейки A1 слева направо сверху вниз. Если они расположены иначе, необходимо “навести” его на таблицу с данными:

  • пропустить заданное число строк перед таблицей параметром skiprows;

  • захватить нужные столбцы параметром usecols.

Предположим, что импортируемая таблица занимает в файле Excel ячейки C2:F6. Тогда pandas для её считывания должен перескочить одну строку и использовать столбцы C:F. Давайте ещё предположим, что в файле несколько листов, а эта таблица располагается на рабочем листе с названием “Sales” — его можно указать в параметре sheet_name. В итоге получится команда:

df = pd.read_excel(”your_excel_file.xlsx”, sheet_name=”Sales”, skiprows=1, usecols=”C:F”) 

Допустим, расчёты завершены, и хорошо бы сохранить получившуюся таблицу в файл Excel. Если ваш фрейм данных называется df, то метод df.to_excel позволит это сделать легко и быстро:

df.to_excel(”your_resulting_file.xlsx”)

Функционал pandas по работе с файлами Excel очень широк — он может производить чтение с нескольких рабочих листов за один раз, запись на несколько листов, выполнять большой спектр расчётов и строить (с помощью библиотеки Matplotlib) графики, которые не умеет строить Excel. О некоторых из этих функций мы расскажем в следующих статьях. А интеграцию pandas с Excel можно подробнее изучить по книге:

Зумштейн Ф. Python для Excel: Пер. с англ. — СПб.: БХВ-Петербург, 2023 – 336 с., ил.

Интегрируем Google Таблицы и pandas в Google Colab

Есть хорошие новости для тех, кто работает с Python в интерактивных блокнотах Google Colab. 22 июля этого года компания Google анонсировала возможность работы с Google Таблицами прямо в интерактивном блокноте Google Colab — с последующим импортом их в качестве фреймов данных pandas. Для этого надо импортировать модуль sheets из библиотеки google.colab:

from google.colab import sheets

Далее нужно создать объект InteractiveSheet() из этого модуля. Он создаётся простым упоминанием (помните, что объявления переменных в явном виде нет?):

sh = sheets.InteractiveSheet()

При выполнении в первый раз может появиться окно запроса доступа: приложению Colaboratory Runtimes необходим доступ к вашему Google Диску. Авторизуйте его и продолжите работать.

Если у Colaboratory Runtimes уже есть все разрешения, то в следующей ячейке блокнота появится пустой интерактивный рабочий лист Google Таблиц. Это и есть InteractiveSheet(). Зайдя в свой аккаунт Google Таблиц, вы увидите копию этого листа там. Вот для чего нужно было разрешение: Colab должен установить связь с аккаунтом Google Таблиц и выполнять там действия от имени пользователя.

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

Чтобы превратить эту таблицу во фрейм данных df, напишите в следующей ячейке кода команду:

df = sh.as_df()

Помните, что функция as_df объекта InteractiveSheet тоже всегда возвращает фрейм данных.

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

df

и запустив её на выполнение. Если программа не выдала ошибку, а перед вами появилась ваша же таблица, но красиво отформатированная в формате HTML — значит, всё прошло удачно!

Только хардкор: используем файлы CSV

А что делать, если осваивать функционал работы с электронными таблицами сложно и страшно? Для начала можно работать с файлами CSV — в анализе данных и биоинформатике чаще всего используют их. Методы pd.read_csv и df.to_csv похожи на аналогичные методы для Excel, но имеют меньше параметров (потому что сам формат проще).

Открытие файла CSV:

df = pd.read_csv(”my_csv_file.csv”)

Сохранение фрейма данных в файл CSV:

df.to_csv(”my_resulting_file.csv”)

Честно говоря, в биоинформатике можно годами работать в pandas только с форматом CSV. Методы работы с файлами Excel пока используются относительно редко — но с распространением Python и методов data science будут становиться всё актуальнее.

CSV может также выручить, когда используется “альтернативный” софт для электронных таблиц, в котором поддержка файлов XSLX реализована не в полной мере — например, OpenOffice/LibreOffice (они используются по умолчанию в Linux – любимой операционной системе биоинформатиков).

Формат файлов ODS не открывается в pandas без использования дополнительных библиотек (как-нибудь расскажем и о них!), и сохранение в него также невозможно. Формат CSV может послужить удобным мостиком — любое приложение электронных таблиц умеет его импортировать и сохранять в него данные. Если сохранить данные в файл CSV в pandas, то затем можно его импортировать в таблицу OpenOffice Calc, сохранить её в формате ODS и продолжить работу уже в офисных программах.


В одном из следующих постов мы также расскажем, как интегрировать pandas и базы данных SQL — ещё один рабочий инструмент аналитиков данных. Не переключайтесь!

Комментарии (2)


  1. avshkol
    17.08.2024 16:14

    Про интеграцию колаба и гугл-таблиц - интересная новинка.

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


    1. eduopenbio Автор
      17.08.2024 16:14

      Да, интеграцию с Гугл Таблицами ввели только вот недавно, и она действительно интересная.

      А насчёт единичной ячейки — спасибо, учтём и напишем ещё пост на эту тему!