Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar Pandas DataFrame dengan nilai yang hilang ke dalam tatasusunan NumPy dengan cekap?

Bagaimana untuk menukar Pandas DataFrame dengan nilai yang hilang ke dalam tatasusunan NumPy dengan cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-05 02:42:02625semak imbas

How to efficiently convert a Pandas DataFrame with missing values into a NumPy array?

Tukar Bingkai Data Pandas dengan Nilai Hilang kepada NumPy Array

Kaedah paling berkesan untuk menukar bingkai data Pandas dengan nilai yang tiada kepada NumPy tatasusunan adalah melalui df.to_numpy(). Ia menawarkan beberapa kelebihan berbanding kaedah lama seperti df.values, termasuk:

  • Secara konsisten mengembalikan paparan data asas untuk meminimumkan penggunaan memori.
  • Mengendalikan jenis sambungan dengan menukarkannya kepada jenis NumPy yang sesuai.
  • Memelihara jenis data asal melainkan dinyatakan sebaliknya.

Contoh:

<code class="python">import pandas as pd
import numpy as np

# Create a DataFrame with missing values
df = pd.DataFrame({'A': [np.nan, np.nan, 0.1, 0.1, 0.1, 0.1],
                   'B': [0.2, np.nan, 0.2, 0.2, np.nan, np.nan],
                   'C': [np.nan, 0.5, 0.5, np.nan, 0.5, np.nan]})

# Convert to a NumPy array with missing values represented as `np.nan`
array = df.to_numpy()

# Result:
# array([[ nan,  0.2,  nan],
#        [ nan,  nan,  0.5],
#        [ 0.1,  0.2,  0.5],
#        [ 0.1,  0.2,  nan],
#        [ 0.1,  nan,  0.5],
#        [ 0.1,  nan,  nan]])</code>

Memelihara Dtypes:

Walaupun to_numpy tidak menyokong pengekalan Dtypes secara langsung, anda boleh menggunakan np.rec.fromrecords untuk mencapai kesan ini.

<code class="python"># Create a DataFrame with mixed data types
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7.2, 8.1, 9.3]})

# Convert to a structured array with preserved Dtypes
struct_array = np.rec.fromrecords(
    df.reset_index(),
    names=list(df.columns) + ['index']
)

# Result:
# rec.array([('a', 1, 4, 7.2), ('b', 2, 5, 8.1), ('c', 3, 6, 9.3)],
#           dtype=[('index', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<f8')])</code>

Atas ialah kandungan terperinci Bagaimana untuk menukar Pandas DataFrame dengan nilai yang hilang ke dalam tatasusunan NumPy dengan cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn