Работа с данными Excel в Python является распространенной практикой. Это часто включает в себя перенос данных из Excel в формат, который можно эффективно обрабатывать. Преобразование данных Excel в формат, готовый для анализа, может быть непростым. В этом посте в блоге вы узнаете, как преобразовать Excel в массивы NumPy всего за несколько строк кода.
Почему NumPy?
NumPy (Numerical Python) — это библиотека Python с открытым исходным кодом. Она является основой для науки о данных и машинного обучения в Python. NumPy предоставляет быстрые операции с массивами и эффективные численные вычисления. Она хорошо работает с pandas, TensorFlow и scikit-learn. Библиотека поддерживает многомерные массивы, матрицы, линейную алгебру и преобразования Фурье. Массивы используют смежную память, что делает их быстрее, чем списки Python. Эта скорость делает NumPy основным инструментом для научных вычислений и анализа данных.
Excel широко используется для хранения наборов данных, но он не оптимизирован для рабочих процессов Python. Традиционные методы конвертации часто требуют дополнительных библиотек, множества шагов и ручного парсинга. Aspose.Cells позволяет экспортировать данные из Excel, TSV, CSV и JSON форматов непосредственно в массивы NumPy. Это соединяет электронные таблицы с числовыми инструментами Python.
Что такое Aspose.Cells for Python?
Aspose.Cells является лучшей библиотекой Excel для Python разработчиков. Она позволяет читать, создавать и манипулировать электронными таблицами без необходимости в Microsoft Excel. Вариант Python через .NET встраивает .NET версию Aspose.Cells и делает её доступной для Python. Aspose.Cells упрощает процесс преобразования Excel в NumPy. Она позволяет экспортировать целую книгу, лист, диапазон, строку, столбец или даже объект списка прямо в NumPy ndarrays. Это означает, что вы можете перейти от необработанных файлов Excel к чистым, готовым к использованию данным для анализа или машинного обучения с минимальными усилиями.
Вы можете установить его из PyPI:
pip install aspose‑cells‑python
После установки импортируйте библиотеку вместе с NumPy:
import aspose.cells as cells
import numpy as np
Как конвертировать книгу Excel в NumPy
Рабочая книга может содержать несколько листов. Вы можете экспортировать целую книгу Excel в массив NumPy ndarray за раз. Это удобно, когда вы хотите обрабатывать данные со всех листов непосредственно в Python.
Следуйте приведённым ниже шагам, чтобы конвертировать Excel workbook в NumPy ndarray:
- Загрузите рабочую книгу Excel, используя класс
Workbook. - Получите доступ ко всем листам из рабочей книги.
- Цикл по каждому листу, чтобы прочитать его использованные строки и столбцы.
- Извлеките значения ячеек по строкам.
- Сохраните данные каждого листа в список списков.
- Преобразуйте собранные данные в массив NumPy с помощью np.asarray().
Вот упрощенный сценарий на Python, который экспортирует образец книги:
import aspose.cells as cells
import numpy as np
# загрузить рабочую книгу
workbook = cells.Workbook("sample_data.xlsx")
sheets = workbook.worksheets
# подготовьте пустой список для хранения данных листа
sheets_data = []
# перебирать листы
for sheet in sheets:
# sheet = workbook.worksheets.get(sheetindex)
sheet_cells = sheet.cells
max_row = sheet_cells.max_data_row + 1 # number of populated rows
max_col = sheet_cells.max_data_column + 1 # number of populated columns
sheet_rows = []
for r in range(max_row):
row_values = []
for c in range(max_col):
cell = sheet_cells.check_cell(r, c)
row_values.append(cell.value if cell else "")
sheet_rows.append(row_values)
sheets_data.append(sheet_rows)
# преобразовать в ndarray с dtype=object, чтобы сохранить строки
excel_array = np.asarray(sheets_data, dtype=object)
print(excel_array)

Как конвертировать рабочую книгу Excel в NumPy
Этот скрипт заменяет любые пустые ячейки на пустые строки и объединяет все листы в один массив NumPy. Финальный excelarray является трехмерным: первый уровень представляет листы, второй уровень представляет строки, а третий уровень представляет столбцы.
[[['City', 'Region', 'Store'],
['Chicago', 'Central', '3055'],
['New York', 'East', '3036'],
['Detroit', 'Central', '3074']],
[['City2', 'Region2', 'Store3'],
['Seattle', 'West', '3000'],
['philadelph', 'East', '3082'],
['Detroit', 'Central', '3074']],
[['City3', 'Region3', 'Store3'],
['Seattle', 'West', '3166'],
['New York', 'East', '3090'],
['Chicago', 'Central', '3055']]]
Преобразование отдельного рабочего листа в NumPy
Иногда вы можете захотеть работать с одним листом вместо всей книги. Вы можете напрямую извлечь значения ячеек одного листа и преобразовать их в массив NumPy ndarray, следуя приведённым ниже шагам:
- Загрузите файл Excel с помощью класса
Workbook. - Получите доступ к целевому листу по его индексу.
- Получите максимальное количество используемых строк и столбцов.
- Переберите каждую строку и столбец, чтобы собрать значения ячеек.
- Сохраните извлеченные данные в списке.
- Преобразуйте список в массив NumPy с помощью np.asarray().
Вот Python-скрипт, который экспортирует один лист:
import aspose.cells as cells
import numpy as np
# загрузить рабочую книгу
workbook = cells.Workbook("sample_data.xlsx")
# войдите в первый лист таблицы
sheet = workbook.worksheets[0]
# получить максимальное количество строк и столбцов с данными
max_row = sheet.cells.max_data_row + 1
max_col = sheet.cells.max_data_column + 1
# extract data
rows = []
for r in range(max_row):
row_values = []
for c in range(max_col):
cell = sheet.cells.check_cell(r, c)
row_values.append(cell.value if cell else "")
rows.append(row_values)
# преобразовать в numpy ndarray
worksheet_array = np.asarray(rows, dtype=object)
print(worksheet_array)
Это создает 2D ndarray, где строки соответствуют строкам Excel, а столбцы соответствуют столбцам Excel.
[['City' 'Region' 'Store']
['Chicago' 'Central' '3055']
['New York' 'East' '3036']
['Detroit' 'Central' '3074']]
Как преобразовать диапазон Excel в NumPy
В определённых случаях вам нужен только специфический диапазон ячеек. Aspose.Cells позволяет вам определить диапазон и экспортировать его напрямую в массив NumPy.
Следуйте приведённым ниже шагам:
- Загрузите рабочую книгу с классом
Workbook. - Выберите целевую рабочую книгу.
- Определите диапазон, используя метод
worksheet.cells.createrange(). - Пройдите по строкам и столбцам диапазона, чтобы извлечь значения.
- Преобразуйте значения в массив NumPy, используя np.asarray().
Следующий кодовый пример показывает, как преобразовать диапазон ячеек из Excel в массив NumPy:
import aspose.cells as cells
import numpy as np
# загрузить рабочую книгу
workbook = cells.Workbook("sample_data.xlsx")
# выбрать первый лист работы
sheet = workbook.worksheets.get(0)
# определите диапазон (B1 до C3)
cell_range = sheet.cells.create_range("B1", "C3")
# извлечь данные из диапазона
range_data = []
for r in range(cell_range.row_count):
row_values = []
for c in range(cell_range.column_count):
cell = sheet.cells.check_cell(r, c)
row_values.append(cell.value if cell else "")
range_data.append(row_values)
# преобразовать в numpy ndarray
range_array = np.asarray(range_data, dtype=object)
print(range_array)
Если выбранный диапазон охватывает два столбца и три строки, результирующий массив будет 3×2, такой как:
[['City' 'Region']
['Chicago' 'Central']
['New York' 'East']]
Преобразование таблицы Excel (ListObject) в NumPy
Таблица Excel — это структурированный диапазон данных с заголовками и строками. В Aspose.Cells это представлено как ListObject. Вы можете легко экспортировать содержимое таблицы Excel в массив NumPy для дальнейшей обработки в Python.
- Загрузите рабочую книгу и выберите лист.
- Получите доступ к объекту ListObject (таблица Excel) из рабочего листа.
- Экспортируйте данные таблицы в двумерный массив.
- Преобразуйте массив в ndarray NumPy.
- Используйте ndarray для рабочих процессов в области науки о данных или машинного обучения.
Следующий пример кода демонстрирует, как экспортировать таблицу Excel (ListObject) в NumPy:
import aspose.cells as cells
import numpy as np
# Загрузите файл Excel
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)
# Создайте таблицу, охватывающую A1:C4 с заголовками.
index = sheet.list_objects.add("A1", "C4", True)
table = sheet.list_objects[index]
rows = []
for r in range(table.start_row, table.end_row + 1):
row_vals = []
for c in range(table.start_column, table.end_column + 1):
cell = sheet.cells.check_cell(r, c)
row_vals.append(cell.value if cell else "")
rows.append(row_vals)
list_object_array = np.asarray(rows, dtype=object)
print(list_object_array)
Результирующий массив NumPy ndarray будет содержать строки и столбцы таблицы Excel, включая заголовки, если они являются частью диапазона данных.
[['City', 'Region', 'Store'],
['Chicago', 'Central', '3055'],
['New York', 'East', '3036'],
['Detroit', 'Central', '3074']]
Как преобразовать строку Excel в NumPy
Иногда вам нужны данные только из одной строки в Excel. Aspose.Cells упрощает извлечение одной строки и загрузку её непосредственно в ndarray NumPy.
- Загрузите рабочую книгу Excel.
- Выберите рабочий лист.
- Выберите индекс строки, который вы хотите экспортировать.
- Экспортируйте значения строк в виде массива.
- Преобразуйте массив в ndarray NumPy для обработки.
Следующий код на Python демонстрирует, как преобразовать строку из таблицы Excel в массив NumPy ndarray:
import aspose.cells as cells
import numpy as np
# Загрузить файл Excel
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)
sheet_cells = sheet.cells
max_col = sheet_cells.max_data_column + 1
# выберите строку (например, последнюю строку данных)
row_index = sheet_cells.max_data_row
row_vals = []
for c in range(max_col):
cell = sheet_cells.check_cell(row_index, c)
row_vals.append(cell.value if cell else "")
row_array = np.asarray(row_vals, dtype=object)
print(row_array)
Результирующий NumPy ndarray будет одномерным массивом, содержащим все значения из выбранной строки.
['Detroit' 'Central' 3074]
Преобразовать столбец Excel в NumPy
В некоторых случаях вам могут понадобиться значения только из одного столбца таблицы Excel. Aspose.Cells позволяет легко экспортировать столбец и преобразовывать его в ndarray NumPy.
- Загрузите рабочую книгу Excel.
- Выберите целевую рабочую книгу.
- Выберите индекс столбца для экспорта.
- Экспортируйте значения столбцов.
- Преобразуйте значения в массив NumPy (ndarray).
Следующий код на Python демонстрирует, как преобразовать столбец листа Excel в массив NumPy ndarray:
import aspose.cells as cells
import numpy as np
# Загрузите файл Excel
workbook = cells.Workbook("D:\\Files\\sample_data.xlsx")
sheet = workbook.worksheets.get(0)
sheet_cells = sheet.cells
max_row = sheet_cells.max_data_row + 1
# выберите столбец (например, последний столбец данных)
col_index = sheet_cells.max_data_column
col_vals = []
for r in range(max_row):
cell = sheet_cells.check_cell(r, col_index)
col_vals.append(cell.value if cell else "")
column_array = np.asarray(col_vals, dtype=object)
print(column_array)
Результирующий массив NumPy ndarray будет одномерным массивом, содержащим все значения из выбранного столбца.
['Store' 3055 3036 3074]
Советы по работе с Aspose.Cells и NumPy
Соображения по памяти: Преобразование очень больших книг в массивы NumPy может потреблять значительное количество памяти. Обрабатывайте листы по отдельности или читайте конкретные диапазоны, если это возможно.
Типы данных: Если ваша таблица содержит смешанные типы (строки, числа, даты), укажите dtype=object при преобразовании списков в массивы NumPy. Для однородных числовых данных вы можете позволить NumPy определить тип.
Отсутствующие значения: Aspose.Cells возвращает None для пустых ячеек. В приведенных выше примерах мы заменили их на пустые строки. Вы также можете заменить их на np.nan или другое знаковое значение в зависимости от вашего случая использования.
Получите бесплатную лицензию
Вы хотите исследовать всю мощь Aspose.Cells for Python? Вы можете запросить бесплатную временную лицензию.Это позволяет вам тестировать все функции без ограничений или оценочных водяных знаков.
С временной лицензией вы можете:
- Работа с большими файлами Excel.
- Примените расширенное форматирование и стилизацию.
- Выполните преобразования (например, Excel в PDF, NumPy и другие).
Это лучший способ оценить производительность и совместимость с вашими проектами перед принятием решения о покупке.
Полезные ресурсы
Вот несколько ценных ресурсов, которые помогут вам начать работу с Aspose.Cells for Python через .NET:
- Документация продукта
- API Reference
- Бесплатные онлайн инструменты Excel
- Учебные пособия и руководства для разработчиков
Заключение
Aspose.Cells for Python через .NET упрощает конвертацию данных Excel в массивы NumPy. Независимо от того, нужно ли вам целое рабочее пространство, один лист, конкретный диапазон, таблица, строка или столбец, библиотека предоставляет четкие методы для итерации по ячейкам и создания списков, которые может потреблять NumPy. Объединив возможность Aspose.Cells читать многие форматы электронных таблиц с числовой мощью NumPy, вы можете бесшовно интегрировать данные Excel в свои Python-потоки данных.
Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться на наш free support forum, и мы будем рады помочь.
