Статьи

Использование Python для разбора данных электронных таблиц

Узнайте, как делиться данными с PHPExcel с нашим видео-учебником.

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

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

Быстрый учебник для электронных таблиц

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

Электронная таблица

Например, на данном скриншоте электронная таблица содержит только один лист, «Query1». Ячейка «2А» соответствует 2-й строке и 1-му столбцу. Значение ячейки 2А — «12510001».

Хотя программы с графическим интерфейсом присваивают буквы именам столбцов, при анализе данных мы будем начинать номера строк и столбцов с 0. Это означает, что ячейка 2A будет соответствовать (1, 0), 4B — (1,3) От 3С до (2, 2) и т. Д.

Краткий обзор файлов CSV

CSV означает «значения, разделенные запятыми» (или иногда разделенные символом, если в качестве разделителя используется какой-либо символ, отличный от запятой), а название довольно очевидно. Типичный файл CSV выглядит следующим образом:

"ID", "Name", "Age"
"1", "John", "11"
"2", "Mary", "12"
"3", "Sherlock", "13"

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

Получение необходимых модулей Python

Для чтения и записи файлов XLS вам необходимо установить два модуля — xlrdxlwt Вы можете сделать это с помощью одного из установщиков Python: pipeasy_install

 pip install xlrd
pip install xlwt

Вы можете использовать xlutilsxlrdxlwt

Чтобы читать и записывать CSV-файлы, вам нужен модуль csv

Чтение электронных таблиц

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

  • Импортируйте модуль xlrd
  • Откройте файл электронной таблицы (или рабочую книгу)
  • Выберите лист
  • Извлечь значения конкретных ячеек данных

Откройте файл электронной таблицы

Давайте сначала откроем файл в Python.

 import xlrd
workbook = xlrd.open_workbook('my_file_name.xls')

Если ваш файл содержит символы не ASCII, вы должны открыть его в формате Юникод следующим образом:

 workbook = xlrd.open_workbook('my_file_name.xls', encoding='cp1252')

Если ваша таблица очень большая, вы можете добавить аргумент on_demandopen_workbook

 workbook = xlrd.open_workbook('my_file_name.xls', on_demand = True)

Открытие листа

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

 worksheet = workbook.sheet_by_name('My_Sheet_Name')

Если вы не уверены в названии листа, вы можете открыть первый лист по его индексу:

 worksheet = workbook.sheet_by_index(0)

workbook.nsheets workbook.sheet_names()

Получение данных из ячеек

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

 # Value of 1st row and 1st column
sheet.cell(0, 0).value

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

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

 if sheet.cell(0, 0).value == xlrd.empty_cell.value:
    # Do something

Создание электронных таблиц

Рабочий процесс создания рабочих листов аналогичен предыдущему разделу.

  • Импортировать модуль xlwt
  • Создать пустой файл электронной таблицы (или рабочую книгу)
  • Создать лист в файле
  • Поместите нужные значения в определенные ячейки данных
  • Сохранить книгу

Создать новый файл

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

 import xlwt

workbook = xlwt.Workbook()
workbook.save('my_file.xls')

Вы можете открыть его в юникоде, как в случае с xlrd

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

Вы можете добавить листы в свою книгу, используя add_sheet

 sheet = workbook.add_sheet('Sheet_1')

Работа с ячейками в листе

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

 sheet.write(0, 0,'Inserting data in 1st Row and 1st Column')

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

 row = sheet.row(1) # Selecting the second row
row.write(0,'2nd Row and 1st Column')
row.write(1,'1st Row and 2nd Column')

Если вы хотите удалить данные подряд, это можно сделать одной командой.

 row.flush_row_data()

Вы также можете установить ширину столбца.

 sheet.col(0).width = 625 # In pixels

Добавление стилей в ячейки

С xlwt Следующий фрагмент показывает, как это сделать:

 style = xlwt.XFStyle()

font = xlwt.Font('Arial')
style.font = font

pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = xlwt.Style.colour_map['red']

style.pattern = pattern

sheet.write(0, 0, "Some data", style)

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

Вывод

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

Какой язык сценариев вы используете для работы с электронными таблицами? Есть ли в Python какая-либо другая библиотека для этой цели? Дайте нам знать в обсуждении ниже.

Узнайте, как делиться данными с PHPExcel с нашим видео-учебником.