PythonでExcelデータを扱うことは一般的です。これは、Excelからデータを効率的に操作できる形式に移動することを含むことがよくあります。Excelデータを分析に適した形式に変換することは難しい場合があります。このブログ投稿では、わずか数行のコードでExcelをNumPy配列に変換する方法を学びます。

なぜNumPyなのですか?

NumPy (数値Python) はオープンソースのPythonライブラリです。データサイエンスや機械学習のPythonにおける基盤です。NumPyは高速な配列操作と効率的な数値計算を提供します。pandas、TensorFlow、およびscikit-learnとスムーズに動作します。このライブラリは多次元配列、行列、線形代数、フーリエ変換をサポートしています。配列は連続したメモリを使用しているため、Pythonのリストよりも高速です。この速度はNumPyを科学計算とデータ分析のコアツールにしています。

Excelはデータセットを保存するために広く使用されていますが、Pythonのワークフローに最適化されていません。従来の変換方法は、追加のライブラリ、複数のステップ、および手動パースを必要とすることがよくあります。Aspose.Cellsを使用すると、データをExcelTSVCSV、およびJSON形式から直接NumPy配列にエクスポートできます。これにより、スプレッドシートとPythonの数値ツールが接続されます。

Aspose.Cells for Python とは何ですか?

Aspose.CellsPython 開発者向けの最高の Excel ライブラリです。 Microsoft Excel に依存することなく、スプレッドシートの読み取り、作成、操作を可能にします。 .NET を介した Python のバリアントは、Aspose.Cells の .NET バージョンを埋め込み、それを Python に公開します。 Aspose.Cells は、Excel を NumPy に変換するプロセスを簡素化します。 これにより、ワークブック、ワークシート、範囲、行、列、またはリストオブジェクト全体を直接 NumPy の ndarray にエクスポートできます。 つまり、生の Excel ファイルから分析や機械学習用のクリーンで使用準備が整ったデータに、最小限の労力で移行できます。

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

# load workbook
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 に変換する方法

Excel ワークブックを NumPy に変換する方法

このスクリプトは、空のセルを空の文字列に置き換え、すべてのワークシートを1つのNumPy配列に結合します。最終的なexcelarrayは三次元であり、最初のレベルはシートを表し、2番目は行を表し、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 への単一ワークシートの変換

時には、全体のワークブックではなく、単一のワークシートで作業したくなることがあります。以下の手順に従って、1 つのワークシートのセル値を直接抽出し、それらを 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")

# 最初のワークシートにアクセスする
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. 値を np.asarray() を使用して NumPy ndarray に変換します。

次のコード例は、ExcelからNumPy ndarrayにセルの範囲を変換する方法を示しています。

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)

選択した範囲が2列3行をカバーしている場合、結果として得られる配列は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. テーブルのデータを二次元配列にエクスポートします。
  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 は、1 行を簡単に抽出し、それを直接 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]

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("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など)。

パフォーマンスとプロジェクトとの互換性を評価する最良の方法です。購入の決定を下す前に。

有用なリソース

ここに、.NET経由でPython用のAspose.Cellsを始めるための貴重なリソースがあります:

結論

Aspose.Cells for Python via .NET は、Excel データを NumPy 配列に変換するプロセスを簡素化します。ワークブック全体、単一のシート、特定の範囲、テーブル、行、または列が必要な場合でも、ライブラリはセルを反復処理し、NumPy が利用できるリストを構築するための明確なメソッドを提供します。Aspose.Cells の多くのスプレッドシート形式を読み取る能力と NumPy の数値処理能力を組み合わせることで、Excel データを Python データパイプラインにシームレスに統合することができます。

質問がある場合は、どうぞお気軽に free support forum でお尋ねください。喜んでお手伝いします。

See Also