Крупные организации и предприятия часто хранят данные в электронных таблицах и требуют интерфейса для ввода этих данных в свои
В этом посте мы обсудим различные способы обработки этих файлов и их анализа для получения необходимой информации с помощью 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
Для чтения и записи
Чтение электронных таблиц
Если у вас есть файл и вы хотите разобрать данные в нем, вам необходимо выполнить следующее в таком порядке:
импортировать pandasмодуль
откройте файл электронной таблицы (или книгу)
выбрать лист
извлечь значения определенных ячеек данных
Откройте файл электронной таблицы
Давайте сначала откроем файл в Python. Чтобы продолжить, вы можете использовать следующий образец электронной таблицы, любезно предоставленный Learning Container:
import pandas as pd
workbook = pd.read_excel ('
workbook.head ()
Сегмент Страна Товар Группа со скидкой Проданных единиц Цена изготовления Цена продажи Валовой объем продаж Скидки Продажи COGS Выгода Дата Номер месяца Название месяца Год
0 Правительство Канада Шоссе Никто 1618.5 3 20 32370.0 0.0 32370.0 16185.0 16185.0
1 Правительство Германия Шоссе Никто 1321.0 3 20 26420.0 0.0 26420.0 13210.0 13210.0
2 Средний рынок Франция Шоссе Никто 2178.0 3 15 32670.0 0.0 32670.0 21780.0 10890.0
3 Средний рынок Германия Шоссе Никто 888.0 3 15 13320.0 0.0 13320.0 8880.0 4440.0
4 Средний рынок Мексика Шоссе Никто 2470.0 3 15 37050.0 0.0 37050.0 24700.0 12350.0
Pandas читает электронную таблицу как таблицу и сохраняет ее как фрейм данных Pandas.
Если в вашем файле есть символы, отличные от ASCII, вы должны открыть его в формате Unicode следующим образом:
import sys
workbook = pd.read_excel ('
Если ваша электронная таблица очень большая, вы можете добавить аргумент use_cols, который загружает в фрейм данных только определенные столбцы. Например, следующий аргумент будет читать только первые пять столбцов:
workbook = pd.read_excel ('~/Desktop/
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 ('
# Read the 1st sheet in the file
worksheet = pd.read_excel ('
Вы также можете выбрать количество листов, которые будут храниться в виде диктофона фреймов данных Pandas, передав список sheet_nameаргументу:
# Read the first two sheets and a sheet with the name 'Sheet 3'
worksheets = pd.read_excel ('~/Desktop/
Получение данных из ячеек
После того, как вы выбрали рабочий лист в кадр данных, вы можете извлечь значение конкретной ячейки данных, запросив кадр данных Pandas:
import pandas as pd
workbook = pd.read_excel ('
# Print the 1st value of the Product column
print (workbook['Product’].iloc[0])
=> Carretera
Метод.iloc () помогает вам искать значение на основе местоположения индекса. В приведенном выше коде.iloc () ищет значение в
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='
datetime_format='
workbook.to_excel (writer)
Чтение устаревших электронных таблиц (.xls)
Вы можете читать устаревшие электронные таблицы с.xlsрасширением, используя тот же синтаксис в Pandas:
workbook = pd.read_excel ('my_file_name.xls’)
Пока вы использовали ту же read_excel () функцию, Pandas использует xlrdдвижок для ее чтения. Вы можете читать и писать устаревшие электронные таблицы, используя тот же синтаксис, который мы обсуждали ранее в этом руководстве.
Краткий обзор
CSV означает «значения, разделенные запятыми» (или иногда разделенные символами, если в качестве разделителя используется
'ID’, 'Name’, 'Age’
'1', 'John’, '11'
'2', 'Mary’, '12'
'3', 'Sherlock’, '13'
Вы можете преобразовать электронные таблицы в
workbook = pd.read_csv ('my_file_name.csv’)
Заключение
Как я упоминал ранее, создание и анализ электронных таблиц неизбежно, когда вы работаете с огромными
Какой язык сценариев вы используете для работы с электронными таблицами? Есть ли у Python