将pandas数据框转换为numpy数组 - 哪种方法更好?

15 浏览
0 Comments

将pandas数据框转换为numpy数组 - 哪种方法更好?

这个问题已经有了答案

将pandas数据帧转换为NumPy数组

我需要将一个大型数据框转换为NumPy数组。

仅保留数字值和类型。

我知道有一些好的方法可以实现。

那么,哪种方法更值得推荐呢?

df.values
df._as_matrix()
pd.to_numeric(df)
... others ...

决策因素:

  • 效率
  • 安全处理nan、np.nans和其他可能出现的意外值
  • 数值稳定
admin 更改状态以发布 2023年5月22日
0
0 Comments

从底层来看,pandas.DataFrame并不比numpy.array 多出很多。最简单也可能是最快速的方法是使用 pandas.DataFrame.values

DataFrame.values

NDFrame的Numpy表示

注意

dtype将成为一个最低公共分母dtype(隐式向上转型);那就是说,如果dtypes(即使是数字类型)被混合,则将选择适应所有类型的dtype。 如果您不处理块,则使用时要小心。

例如,如果dtypes是float16和float32,则dtype将向上转换为float32。如果dtypes是int32和uint8,则dtype将向上转换为int32。 根据numpy.find_common_type的约定,混合int64和uint64将导致flot64dtype。

0
0 Comments

你提到的这些函数都有不同的用途。

  1. pd.to_numeric:如果你的数据不是以数值形式存储或者你想通过downcast='float' downcast='integer'转换为最佳类型,则可以使用此函数来转换数据帧中的类型。

  2. pd.DataFrame.to_numpy()(v0.24+)或pd.DataFrame.values:使用此函数来检索数据帧的numpy数组表示。

  3. pd.DataFrame.as_matrix:不要使用此函数。它仅包含向后兼容。

0