首页  >  文章  >  后端开发  >  如何有效地将缺失值的 Pandas DataFrame 转换为 NumPy 数组?

如何有效地将缺失值的 Pandas DataFrame 转换为 NumPy 数组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 02:42:02693浏览

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