Praca z danymi Excel w Python jest powszechna. Często wiąże się to z przenoszeniem danych z Excela do formy, którą można efektywnie manipulować. Konwersja danych Excela do formatu gotowego do analizy może być trudna. W tym wpisie na blogu dowiesz się, jak przekonwertować Excel na tablice NumPy w zaledwie kilku linijkach kodu.

Dlaczego NumPy?

NumPy (Numerical Python) to biblioteka Python o otwartym kodzie źródłowym. Jest podstawą nauki o danych i uczenia maszynowego w Python. NumPy zapewnia szybkie operacje na tablicach i efektywne obliczenia numeryczne. Działa płynnie z pandas, TensorFlow i scikit-learn. Biblioteka obsługuje tablice wielowymiarowe, macierze, algebrę liniową i transformacje Fouriera. Tablice używają pamięci ciągłej, co czyni je szybszymi niż listy Python. Ta prędkość sprawia, że NumPy jest kluczowym narzędziem do obliczeń naukowych i analizy danych.

Excel jest powszechnie używany do przechowywania zbiorów danych, ale nie jest zoptymalizowany do pracy z Pythonm. Tradycyjne metody konwersji często wymagają dodatkowych bibliotek, wielu kroków i ręcznego analizowania. Aspose.Cells pozwala na eksportowanie danych z Excel, TSV, CSV i JSON bezpośrednio do tablic NumPy. To łączy arkusze kalkulacyjne z narzędziami numerycznymi Python.

What is Aspose.Cells for Python?

Aspose.Cells jest najlepszą biblioteką Excel dla programistów Python.Umożliwia odczytywanie, tworzenie i manipulowanie arkuszami kalkulacyjnymi bez polegania na Microsoft Excel. Wariant Python przez .NET osadza wersję .NET Aspose.Cells i udostępnia ją w Python. Aspose.Cells upraszcza proces konwersji Excela na NumPy. Pozwala na eksportowanie całego skoroszytu, arkusza kalkulacyjnego, zakresu, wiersza, kolumny, a nawet obiektu listy bezpośrednio do tablic NumPy ndarrays. Oznacza to, że możesz przejść z surowych plików Excela do czystych, gotowych do użycia danych do analizy lub uczenia maszynowego z minimalnym wysiłkiem.

Możesz go zainstalować z PyPI:

pip install aspose‑cells‑python

Po zainstalowaniu, zaimportuj bibliotekę obok NumPy:

import aspose.cells as cells
import numpy as np

Jak przekonwertować skoroszyt Excel na NumPy

Arkusz roboczy może zawierać wiele arkuszy kalkulacyjnych. Możesz wyeksportować cały skoroszyt Excel do tablicy NumPy ndarray za jednym razem. Jest to przydatne, gdy chcesz przetwarzać dane ze wszystkich arkuszy bezpośrednio w Python.

Postępuj zgodnie z poniższymi krokami, aby przekonwertować skoroszyt Excela na tablicę NumPy ndarray:

  1. Załaduj skoroszyt Excela za pomocą klasy Workbook.
  2. Uzyskaj dostęp do wszystkich arkuszy roboczych z skoroszytu.
  3. Przejdź przez każdy arkusz, aby odczytać jego używane wiersze i kolumny.
  4. Wyciągnij wartości komórek wierszami.
  5. Zapisz dane z każdej arkusza do listy list.
  6. Przekształć zebrane dane w obiekt ndarray NumPy przy użyciu np.asarray().

Oto uproszczony skrypt Python, który eksportuje przykładowy skoroszyt:

import aspose.cells as cells
import numpy as np

# ładuj skoroszyt
workbook = cells.Workbook("sample_data.xlsx")
sheets = workbook.worksheets

# przygotuj pustą listę, aby przechować dane arkusza
sheets_data = []

# przechodzić przez arkusze kalkulacyjne
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)

# przekształć na ndarray z dtype=object, aby zachować ciągi znaków
excel_array = np.asarray(sheets_data, dtype=object)
print(excel_array)
Jak przekonwertować skoroszyt Excel na NumPy

Jak skonwertować skoroszyt Excela na NumPy

Ten skrypt zastępuje wszystkie puste komórki pustymi ciągami i łączy wszystkie arkusze robocze w jedną tablicę NumPy. Ostateczna excelarray jest trójwymiarowa: pierwszy poziom reprezentuje arkusze, drugi reprezentuje wiersze, a trzeci reprezentuje kolumny.

[[['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']]]

Konwersja pojedynczego arkusza kalkulacyjnego na NumPy

Czasami możesz chcieć pracować z pojedynczym arkuszem kalkulacyjnym zamiast całego skoroszytu. Możesz bezpośrednio wyodrębnić wartości komórek z jednego arkusza kalkulacyjnego i przekształcić je w tablicę NumPy ndarray, postępując zgodnie z poniższymi krokami:

  1. Załaduj plik Excel za pomocą klasy Workbook.
  2. Uzyskaj dostęp do arkusza docelowego za pomocą jego indeksu.
  3. Uzyskaj maksymalnie używane wiersze i kolumny.
  4. Przechodź przez każdy wiersz i kolumnę, aby zebrać wartości komórek.
  5. Przechowaj wyodrębnione dane w liście.
  6. Przekształć listę do ndarray NumPy za pomocą np.asarray().

Oto skrypt Python, który eksportuje pojedynczy arkusz kalkulacyjny:

import aspose.cells as cells
import numpy as np

# załaduj skoroszyt
workbook = cells.Workbook("sample_data.xlsx")

# uzyskaj dostęp do pierwszego arkusza roboczego
sheet = workbook.worksheets[0]

# get max rows and columns with data
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)

# przekształć do ndarray numpy
worksheet_array = np.asarray(rows, dtype=object)
print(worksheet_array)

To tworzy 2D ndarray, w którym wiersze odpowiadają wierszom Excela, a kolumny odpowiadają kolumnom Excela.

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

Jak przekonwertować zakres Excela na NumPy

W niektórych przypadkach potrzebujesz tylko określonego zakresu komórek. Aspose.Cells pozwala zdefiniować zakres i wyeksportować go bezpośrednio do tablicy NumPy (ndarray).

Postępuj zgodnie z poniższymi krokami:

  1. Załaduj skoroszyt za pomocą klasy Workbook.
  2. Wybierz docelowy arkusz roboczy.
  3. Zdefiniuj zakres za pomocą metody worksheet.cells.createrange().
  4. Przejdź przez wiersze i kolumny zakresu, aby wyodrębnić wartości.
  5. Przekształć wartości w obiekt ndarray NumPy za pomocą np.asarray().

Następujący przykład kodu pokazuje, jak przekształcić zakres komórek z Excela na tablicę NumPy ndarray:

import aspose.cells as cells
import numpy as np

# załaduj skoroszyt
workbook = cells.Workbook("sample_data.xlsx")

# wybierz pierwszy arkusz kalkulacyjny
sheet = workbook.worksheets.get(0)

# zdefiniuj zakres (B1 do C3)
cell_range = sheet.cells.create_range("B1", "C3")

# wyodrębnij dane z zakresu
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)

# konwertować na ndarray numpy
range_array = np.asarray(range_data, dtype=object)
print(range_array)

Jeśli wybrany zakres obejmuje dwie kolumny i trzy wiersze, wynikowa tablica będzie miała wymiary 3×2, na przykład:

[['City' 'Region']
 ['Chicago' 'Central']
 ['New York' 'East']]

Konwertowanie tabeli Excel (ListObject) na NumPy

Tabela Excel to strukturalny zakres danych z nagłówkami i wierszami. W Aspose.Cells jest to reprezentowane jako ListObject. Możesz łatwo wyeksportować zawartość Tabeli Excel do tablicy NumPy ndarray w celu dalszego przetwarzania w Python.

  1. Załaduj skoroszyt i wybierz arkusz kalkulacyjny.
  2. Uzyskaj dostęp do obiektu ListObject (tabela Excel) z arkusza.
  3. Eksportuj dane tabeli do dwuwymiarowej tablicy.
  4. Przekształć tablicę w obiekt ndarray NumPy.
  5. Użyj ndarray do nauki o danych lub przepływów pracy w uczeniu maszynowym.

Następujący przykład kodu pokazuje, jak wyeksportować tabelę Excel (ListObject) do NumPy:

import aspose.cells as cells
import numpy as np

# Załaduj plik Excel
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)

# Utwórz tabelę obejmującą A1:C4 z nagłówkami
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)

Wynikowa tablica NumPy ndarray będzie zawierać wiersze i kolumny tabeli Excel, w tym nagłówki, jeśli są częścią zakresu danych.

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

Jak przekształcić wiersz Excela do NumPy

Czasami potrzebujesz tylko danych z pojedynczego wiersza w Excelu. Aspose.Cells ułatwia wyodrębnienie jednego wiersza i załadowanie go bezpośrednio do tablicy ndarray NumPy.

  1. Załaduj skoroszyt programu Excel.
  2. Wybierz arkusz kalkulacyjny.
  3. Wybierz indeks wiersza, który chcesz wyeksportować.
  4. Eksportuj wartości wiersza jako tablicę.
  5. Zamień tablicę na obiekt ndarray NumPy do przetwarzania.

Poniższy kod Python pokazuje, jak przekonwertować wiersz arkusza Excel na tablicę NumPy ndarray:

import aspose.cells as cells
import numpy as np

# Załaduj plik Excel
workbook = cells.Workbook("sample_data.xlsx")
sheet = workbook.worksheets.get(0)
sheet_cells = sheet.cells

max_col = sheet_cells.max_data_column + 1

# wybierz wiersz (np. ostatni wiersz danych)
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)

Wynikowa tablica NumPy ndarray będzie jednowymiarową tablicą zawierającą wszystkie wartości z wybranego wiersza.

['Detroit' 'Central' 3074]

Convert a Column of Excel to NumPy

W niektórych przypadkach możesz potrzebować tylko wartości z jednej kolumny arkusza Excel. Aspose.Cells pozwala na łatwe eksportowanie kolumny i przekształcanie jej w obiekt ndarray NumPy.

  1. Załaduj skoroszyt programu Excel.
  2. Wybierz docelowy arkusz roboczy.
  3. Wybierz indeks kolumny do eksportu.
  4. Eksportuj wartości kolumn.
  5. Przekształć wartości w obiekt ndarray NumPy.

Poniższy kod Python pokazuje, jak przekształcić kolumnę arkusza Excel na tablicę NumPy ndarray:

import aspose.cells as cells
import numpy as np

# Załaduj plik 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

# wybierz kolumnę (np. ostatnią kolumnę z danymi)
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)

Wynikowa macierz NumPy ndarray będzie jednowymiarową tablicą zawierającą wszystkie wartości z wybranej kolumny.

['Store' 3055 3036 3074]

Wskazówki dotyczące pracy z Aspose.Cells i NumPy

  • Rozważania dotyczące pamięci: Konwertowanie bardzo dużych arkuszy roboczych na tablice NumPy może zużywać znaczną ilość pamięci. Przetwarzaj arkusze pojedynczo lub odczytuj konkretne zakresy, jeśli to możliwe.

  • Typy danych: Jeśli Twoja tabela zawiera mieszane typy (ciągi, liczby, daty), określ dtype=object podczas konwersji list na tablice NumPy. Dla jednorodnych danych numerycznych możesz pozwolić NumPy na wnioskowanie typu.

  • Brakujące wartości: Aspose.Cells zwraca None dla pustych komórek. W powyższych przykładach zastąpiliśmy je pustymi ciągami. Możesz również zastąpić np.nan lub inną wartością sygnalizacyjną w zależności od swojego przypadku użycia.

Zdobyć darmową licencję

Czy chcesz odkryć pełną moc Aspose.Cells for Python? Możesz poprosić o free temporary license.To pozwala na testowanie wszystkich funkcji bez ograniczeń lub znaków wodnych oceny.

Z tymczasową licencją możesz:

  • Pracuj z dużymi plikami Excel.
  • Zastosuj zaawansowane formatowanie i stylizację.
  • Wykonaj konwersje (np. z Excela do PDF, NumPy i inne).

To najlepszy sposób na ocenę wydajności i kompatybilności z Twoimi projektami przed podjęciem decyzji o zakupie.

Przydatne zasoby

Oto kilka cennych zasobów, które pomogą Ci zacząć korzystać z Aspose.Cells for Python za pośrednictwem .NET:

Wnioski

Aspose.Cells for Python za pośrednictwem .NET upraszcza konwersję danych Excela na tablice NumPy. Niezależnie od tego, czy potrzebujesz całego skoroszytu, pojedynczego arkusza, określonego zakresu, tabeli, wiersza czy kolumny, biblioteka zapewnia jasne metody do iteracji przez komórki i budowania list, które NumPy może przetwarzać. Łącząc zdolność Aspose.Cells do odczytywania wielu formatów arkuszy kalkulacyjnych z numeryczną mocą NumPy, możesz płynnie integrować dane Excela w swoje potoki danych Python.

Jeśli masz jakiekolwiek pytania, nie wahaj się zapytać na naszym free support forum, a z przyjemnością pomożemy.

See Also