Разработка сайтов в Стаханове, ЛНР. Использование Python для анализа данных электронных таблиц

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

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

Краткое руководство по электронным таблицам

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

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

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

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

Настройка среды Python

Мы будем использовать Python 3 для чтения и записи электронных таблиц. Чтобы читать и записывать файлы XLSX, вам необходимо установить модуль Pandas. Вы можете сделать это с помощью одного из установщиков Python: pipили easy_install. Pandas использует openpyxlмодуль для чтения новых файлов электронных таблиц (.xlsx) и xlrdмодули для чтения устаревших электронных таблиц (файлы.xls). Оба они openpyxlи xlrdустанавливаются как зависимости при установке Pandas:

pip3 install pandas

Для чтения и записи CSV-файлов вам понадобится csvмодуль, который предустановлен вместе с Python. Вы также можете читать файлы CSV через Pandas.

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

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

импортировать pandasмодуль

откройте файл электронной таблицы (или книгу)

выбрать лист

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

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

Давайте сначала откроем файл в Python. Чтобы продолжить, вы можете использовать следующий образец электронной таблицы, любезно предоставленный Learning Container:

import pandas as pd

workbook = pd.read_excel ('sample-xlsx-file-for-testing.xlsx’)

workbook.head ()

Сегмент Страна Товар Группа со скидкой Проданных единиц Цена изготовления Цена продажи Валовой объем продаж Скидки Продажи COGS Выгода Дата Номер месяца Название месяца Год

0 Правительство Канада Шоссе Никто 1618.5 3 20 32370.0 0.0 32370.0 16185.0 16185.0 2014-01-01 1 январь 2014

1 Правительство Германия Шоссе Никто 1321.0 3 20 26420.0 0.0 26420.0 13210.0 13210.0 2014-01-01 1 январь 2014

2 Средний рынок Франция Шоссе Никто 2178.0 3 15 32670.0 0.0 32670.0 21780.0 10890.0 2014-06-01 6 июнь 2014

3 Средний рынок Германия Шоссе Никто 888.0 3 15 13320.0 0.0 13320.0 8880.0 4440.0 2014-06-01 6 июнь 2014

4 Средний рынок Мексика Шоссе Никто 2470.0 3 15 37050.0 0.0 37050.0 24700.0 12350.0 2014-06-01 6 июнь 2014

Pandas читает электронную таблицу как таблицу и сохраняет ее как фрейм данных Pandas.

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

import sys

workbook = pd.read_excel ('sample-xlsx-file-for-testing.xlsx’, encoding=sys.getfilesystemencoding ())

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

workbook = pd.read_excel ('~/Desktop/import-export-data.xlsx’, usecols = 'A: E’)

workbook.head ()

Сегмент Страна Товар Группа со скидкой Проданных единиц

0 Правительство Канада Шоссе Никто 1618.5

1 Правительство Германия Шоссе Никто 1321.0

2 Средний рынок Франция Шоссе Никто 2178.0

3 Средний рынок Германия Шоссе Никто 888.0

4 Средний рынок Мексика Шоссе Никто 2470.0

Кроме того, вы можете использовать аргументы nrowsи skiprowsдля чтения только определенного количества строк или игнорировать определенное количество строк в начале соответственно.

Открытие определенного листа

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

# Read the sheet with the name 'Sheet1'

worksheet = pd.read_excel ('sample-xlsx-file-for-testing.xlsx’, sheet_name = 'Sheet1')

# Read the 1st sheet in the file

worksheet = pd.read_excel ('sample-xlsx-file-for-testing.xlsx’, sheet_name = 0)

Вы также можете выбрать количество листов, которые будут храниться в виде диктофона фреймов данных Pandas, передав список sheet_nameаргументу:

# Read the first two sheets and a sheet with the name 'Sheet 3'

worksheets = pd.read_excel ('~/Desktop/import-export-data.xlsx’, sheet_name = [0, 1, 'Sheet 3'])

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

После того, как вы выбрали рабочий лист в кадр данных, вы можете извлечь значение конкретной ячейки данных, запросив кадр данных Pandas:

import pandas as pd

workbook = pd.read_excel ('sample-xlsx-file-for-testing.xlsx’)

# Print the 1st value of the Product column

print (workbook['Product’].iloc[0])

=> Carretera

Метод.iloc () помогает вам искать значение на основе местоположения индекса. В приведенном выше коде.iloc () ищет значение в 0-й позиции индекса. Точно так же вы можете искать значение, используя метку с помощью метода.loc (). Например, если вы передадите аргумент 0методу.loc (), он будет искать метку 0в индексе:

print (workbook['Product’].loc[0])

=> Carretera

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

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

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

импортировать pandasмодуль

сохранить данные в книгу

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

добавить стиль к ячейкам в книге

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

Чтобы создать новый файл, нам сначала нужен фрейм данных. Давайте воссоздадим демонстрационный лист из верхней части статьи:

import pandas as pd

name = ['John’, 'Mary’, 'Sherlock’]

age = [11, 12, 13]

df = pd.DataFrame ({ 'Name’: name, 'Age’: age })

df.index.name = 'ID’

Затем вы можете создать новый файл электронной таблицы, вызвав функцию to_excel () в кадре данных, указав имя файла, который он должен сохранить как:

df.to_excel ('my_file.xlsx’)

Вы также можете открыть тот же файл с помощью функции read_excel ().

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

Вы можете сохранить свой фрейм данных как определенный лист в книге, используя sheet_nameаргумент. Значение по умолчанию для этого аргумента Sheet1:

df.to_excel ('my_file.xlsx’, sheet_name = 'My Sheet’)

Дополнительные параметры при сохранении электронной таблицы

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

import pandas as pd

workbook = pd.read_excel ('my_file.xlsx’)

# Creating a copy of workbook

workbook_2 = workbook.copy ()

with pd.ExcelWriter ('my_file_1.xlsx’) as writer:

workbook.to_excel (writer, sheet_name='Sheet1')

workbook_2.to_excel (writer, sheet_name='Sheet2')

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

with pd.ExcelWriter ('my_file_1.xlsx’, engine="openpyxl", mode='a’) as writer:

workbook_2.to_excel (writer, sheet_name='Sheet3'

Кроме того, используйте date_formatи datetime_formatдля установки значений даты и времени:

with pd.ExcelWriter ('my_file.xlsx’,

date_format='YYYY-MM-DD’,

datetime_format='YYYY-MM-DD HH: MM: SS’) as writer:

workbook.to_excel (writer)

Чтение устаревших электронных таблиц (.xls)

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

workbook = pd.read_excel ('my_file_name.xls’)

Пока вы использовали ту же read_excel () функцию, Pandas использует xlrdдвижок для ее чтения. Вы можете читать и писать устаревшие электронные таблицы, используя тот же синтаксис, который мы обсуждали ранее в этом руководстве.

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

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

'ID’, 'Name’, 'Age’

'1', 'John’, '11'

'2', 'Mary’, '12'

'3', 'Sherlock’, '13'

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

workbook = pd.read_csv ('my_file_name.csv’)

Заключение

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

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

Делитесь нашими материалами с друзьями!

 

 

Заказать разработку сайта