Python에서 Excel 데이터를 다루는 것은 일반적입니다. 이 과정은 종종 Excel에서 데이터를 효율적으로 조작할 수 있는 형식으로 이동하는 것을 포함합니다. Excel 데이터를 분석 준비가 된 형식으로 변환하는 것은 까다로울 수 있습니다. 이 블로그 게시물에서는 몇 줄의 코드로 Excel을 NumPy 배열로 변환하는 방법을 배울 것입니다.

왜 NumPy인가요?

NumPy (수치 파이썬)은 오픈 소스 파이썬 라이브러리입니다. 이것은 파이썬에서 데이터 과학 및 머신 러닝의 기반입니다. NumPy는 빠른 배열 연산과 효율적인 수치 계산을 제공합니다. 그것은 pandas, TensorFlow 및 scikit-learn과 원활하게 작동합니다. 이 라이브러리는 다차원 배열, 행렬, 선형 대수 및 푸리에 변환을 지원합니다. 배열은 연속적인 메모리를 사용하여 파이썬 리스트보다 빠릅니다. 이 속도는 NumPy를 과학적 컴퓨팅 및 데이터 분석을 위한 핵심 도구로 만듭니다.

Excel은 데이터셋을 저장하는 데 널리 사용되지만 Python 워크플로우에 최적화되어 있지 않습니다. 전통적인 변환 방법은 종종 추가 라이브러리, 여러 단계 및 수동 구문 분석을 필요로 합니다. Aspose.Cells를 사용하면 Excel, TSV, CSV, 및 JSON 형식의 데이터를 NumPy 배열로 직접 내보낼 수 있습니다. 이는 스프레드시트를 Python의 숫자 도구와 연결합니다.

Aspose.Cells for Python은 파이썬에서 스프레드시트 파일을 읽고, 작성하고, 수정할 수 있는 라이브러리입니다.

Aspose.Cells파이썬을 위한 최고의 엑셀 라이브러리입니다. 이 라이브러리를 사용하면 Microsoft Excel에 의존하지 않고 스프레드시트를 읽고, 생성하고, 조작할 수 있습니다. .NET 변형을 통한 파이썬 버전은 Aspose.Cells의 .NET 버전을 포함하고 이를 파이썬에 노출합니다. Aspose.Cells는 엑셀을 NumPy로 변환하는 과정을 간소화합니다. 이를 통해 전체 워크북, 워크시트, 범위, 행, 열 또는 심지어 리스트 객체를 NumPy ndarrays로 직접 내보낼 수 있습니다. 이는 원시 엑셀 파일에서 분석이나 머신 러닝을 위한 깨끗하고 사용 준비가 된 데이터로 최소한의 노력으로 이동할 수 있음을 의미합니다.

PyPI에서 설치할 수 있습니다:

pip install aspose‑cells‑python

설치가 완료되면, NumPy와 함께 라이브러리를 가져옵니다:

import aspose.cells as cells
import numpy as np

Excel 워크북을 NumPy로 변환하는 방법

워크북에는 여러 개의 워크시트가 포함될 수 있습니다. 전체 Excel 워크북을 한 번에 NumPy ndarray로 내보낼 수 있습니다. 이는 모든 시트의 데이터를 Python에서 직접 처리하고 싶을 때 유용합니다.

다음 단계를 따라 Excel 워크북을 NumPy ndarray로 변환하세요:

  1. Workbook 클래스를 사용하여 Excel 통합 문서를 로드하십시오.
  2. 모든 워크북에서 모든 워크시트에 액세스합니다.
  3. 각 워크시트를 반복하여 사용된 행과 열을 읽습니다.
  4. 셀 값을 행 단위로 추출합니다.
  5. 각 시트의 데이터를 리스트의 리스트로 저장하십시오.
  6. 수집된 데이터를 np.asarray()를 사용하여 NumPy ndarray로 변환하십시오.

여기 샘플 워크북을 내보내는 간단한 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는 3차원입니다: 첫 번째 수준은 시트를 나타내고, 두 번째 수준은 행을 나타내며, 세 번째 수준은 열을 나타냅니다.

[[['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로 변환할 수 있습니다:

  1. Workbook 클래스로 Excel 파일을 불러옵니다.
  2. 대상 워크시트를 인덱스를 통해 접근하세요.
  3. 최대 사용된 행과 열을 가져옵니다.
  4. 각 행과 열을 순회하여 셀 값을 수집합니다.
  5. 추출된 데이터를 목록에 저장하세요.
  6. 목록을 np.asarray()로 NumPy ndarray로 변환하세요.

여기 단일 워크시트를 내보내는 파이썬 스크립트가 있습니다:

import aspose.cells as cells
import numpy as np

# load workbook
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)

이것은 행이 Excel 행에 매핑되고 열이 Excel 열에 매핑되는 2D ndarray를 생성합니다.

[['City' 'Region' 'Store']    
 ['Chicago' 'Central' '3055'] 
 ['New York' 'East' '3036']   
 ['Detroit' 'Central' '3074']]

Excel의 범위를 NumPy로 변환하는 방법

특정 경우에는 특정 셀 범위만 필요합니다. Aspose.Cells를 사용하면 범위를 정의하고 이를 NumPy ndarray로 직접 내보낼 수 있습니다.

다음 단계를 따르십시오:

  1. Workbook 클래스로 워크북을 로드합니다.
  2. 대상 워크시트를 선택하십시오.
  3. worksheet.cells.createrange() 메서드를 사용하여 범위를 정의합니다.
  4. 범위의 행과 열을 반복하여 값을 추출합니다.
  5. 값을 NumPy ndarray로 변환하려면 np.asarray()를 사용하세요.

다음 코드 예제는 Excel의 셀 범위를 NumPy ndarray로 변환하는 방법을 보여줍니다:

import aspose.cells as cells
import numpy as np

# load workbook
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 ndarray로 쉽게 내보내 Python에서 추가 처리할 수 있습니다.

  1. 워크북을 로드하고 워크시트를 선택하십시오.
  2. 워크시트에서 ListObject (Excel 테이블)에 접근합니다.
  3. 테이블의 데이터를 2차원 배열로 내보내십시오.
  4. 배열을 NumPy ndarray로 변환하십시오.
  5. 데이터 과학 또는 머신 러닝 워크플로를 위해 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는 한 행을 추출하고 이를 NumPy ndarray에 직접 로드하는 것을 간단하게 만들어줍니다.

  1. Excel 워크북을 불러오세요.
  2. 워크시트를 선택하십시오.
  3. 내보내고 싶은 행 인덱스를 선택하세요.
  4. 행 값을 배열로 내보내기.
  5. 배열을 처리하기 위해 NumPy ndarray로 변환하십시오.

다음 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]

엑셀의 열을 NumPy로 변환하기

때때로 Excel 시트의 단일 열에서만 값이 필요할 수 있습니다. Aspose.Cells를 사용하면 열을 쉽게 내보내고 NumPy ndarray로 변환할 수 있습니다.

  1. Excel 워크북을 불러오세요.
  2. 대상 워크시트를 선택하십시오.
  3. 열 인덱스를 선택하여 내보내십시오.
  4. 열 값을 내보내십시오.
  5. 값을 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 배열로 변환하면 상당한 메모리를 소모할 수 있습니다. 가능하다면 워크시트를 개별적으로 처리하거나 특정 범위를 읽으십시오.

  • 데이터 유형: 스프레드시트에 문자열, 숫자, 날짜와 같은 혼합 유형이 포함된 경우, 리스트를 NumPy 배열로 변환할 때 dtype=object를 지정하십시오. 동질적인 숫자 데이터의 경우 NumPy가 유형을 추론하도록 할 수 있습니다.

  • 누락된 값: Aspose.Cells는 빈 셀에 대해 None을 반환합니다. 위의 예에서 우리는 이들을 빈 문자열로 대체했습니다. 사용 사례에 따라 np.nan 또는 다른 센티넬 값으로 대체할 수도 있습니다.

무료 라이선스 받기

Aspose.Cells for Python의 모든 기능을 탐색하고 싶으신가요? 무료 임시 라이센스를 요청하실 수 있습니다. 이를 통해 모든 기능을 제한 없이 평가할 수 있습니다.

임시 면허로 다음과 같은 작업을 할 수 있습니다:

  • 대용량 Excel 파일로 작업하십시오.
  • Apply advanced formatting and styling.
  • 변환 수행 (예: Excel에서 PDF로, NumPy 등).

성능과 호환성을 평가하고 구매 결정을 내리기 전에 귀하의 프로젝트와의 호환성을 평가하는 가장 좋은 방법입니다.

유용한 자료

여기 Aspose.Cells for Python via .NET을 시작하는 데 도움이 되는 몇 가지 유용한 리소스가 있습니다:

결론

Aspose.Cells for Python via .NET는 Excel 데이터를 NumPy 배열로 변환하는 과정을 간소화합니다. 전체 워크북, 단일 시트, 특정 범위, 테이블, 행 또는 열이 필요하든, 이 라이브러리는 셀을 반복하고 NumPy가 사용할 수 있는 목록을 만드는 명확한 방법을 제공합니다. Aspose.Cells의 다양한 스프레드시트 형식을 읽는 기능과 NumPy의 수치적 강력을 결합함으로써, Excel 데이터를 Python 데이터 파이프라인에 원활하게 통합할 수 있습니다.

질문이 있으시면 주저하지 마시고 저희의 free support forum에서 문의해 주십시오. 기꺼이 도와드리겠습니다.

See Also