将pandas数据框转换为numpy数组 - 哪种方法更好?
将pandas数据框转换为numpy数组 - 哪种方法更好?
这个问题已经有了答案:
我需要将一个大型数据框转换为NumPy数组。
仅保留数字值和类型。
我知道有一些好的方法可以实现。
那么,哪种方法更值得推荐呢?
df.values df._as_matrix() pd.to_numeric(df) ... others ...
决策因素:
- 效率
- 安全处理nan、np.nans和其他可能出现的意外值
- 数值稳定
admin 更改状态以发布 2023年5月22日
从底层来看,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。
你提到的这些函数都有不同的用途。
-
pd.to_numeric
:如果你的数据不是以数值形式存储或者你想通过downcast='float'
或downcast='integer'
转换为最佳类型,则可以使用此函数来转换数据帧中的类型。 -
pd.DataFrame.to_numpy()
(v0.24+)或pd.DataFrame.values
:使用此函数来检索数据帧的numpy
数组表示。 -
pd.DataFrame.as_matrix
:不要使用此函数。它仅包含向后兼容。