首頁  >  文章  >  後端開發  >  如何有效地將缺失值的 Pandas DataFrame 轉換為 NumPy 陣列?

如何有效地將缺失值的 Pandas DataFrame 轉換為 NumPy 陣列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-05 02:42:02626瀏覽

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

將缺失值的Pandas 資料幀轉換為NumPy 陣列

將缺失值的Pandas 資料幀轉換為NumPy 的最有效方法數組是透過df.to_numpy() 實現的。與 df.values 等舊方法相比,它具有多個優勢,包括:

  • 始終返回底層資料的視圖以最大限度地減少記憶體消耗。
  • 透過將擴充類型轉換為適當的 NumPy 來處理擴充類型 dtypes。
  • 保留原始資料型別,除非另有指定。

範例:

<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>

保留Dtypes:

雖然to_numpy 不支援直接儲存Dtypes,但您可以使用np.rec.fromrecords 來達到這個效果。

<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>

以上是如何有效地將缺失值的 Pandas DataFrame 轉換為 NumPy 陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn