Pandas2.2 DataFrame
Conversion
方法 | 描述 |
---|---|
DataFrame.astype(dtype[, copy, errors]) | 用于将 DataFrame 中的数据转换为指定的数据类型 |
DataFrame.convert_dtypes([infer_objects, …]) | 用于将 DataFrame 中的数据类型转换为更合适的类型 |
DataFrame.infer_objects([copy]) | 用于尝试将 DataFrame 中的 object 类型的列转换为更具体的类型(如 int64 、float64 或 boolean ) |
DataFrame.copy([deep]) | 用于创建 DataFrame 的副本 |
DataFrame.bool() | 用于将 DataFrame 转换为布尔值 |
DataFrame.to_numpy([dtype, copy, na_value]) | 用于将 DataFrame 转换为 NumPy 数组 |
pandas.DataFrame.to_numpy
pandas.DataFrame.to_numpy
是一个方法,用于将 DataFrame 转换为 NumPy 数组。这个方法非常有用,特别是在需要将 DataFrame 中的数据传递给其他库(如 NumPy、SciPy 或 scikit-learn)进行进一步处理时。
方法签名
DataFrame.to_numpy(dtype=None, copy=True, na_value=None)
参数说明
dtype
: 字符串或数据类型,默认为None
,表示返回的 NumPy 数组的数据类型。如果为None
,则使用 DataFrame 中数据的默认类型。copy
: 布尔值,默认为True
,表示是否返回 DataFrame 数据的副本。如果设置为False
,则返回的数据数组与 DataFrame 共享内存。na_value
: 标量值,默认为None
,表示如何表示 DataFrame 中的缺失值(NaN)。如果为None
,则使用 NumPy 的默认行为(即np.nan
)。
返回值
- 返回一个 NumPy 数组,包含 DataFrame 中的数据。
示例
假设有一个 DataFrame 如下:
import pandas as pd
import numpy as np
data = {
'A': [1, 2, 3],
'B': [1.1, 2.2, 3.3],
'C': ['x', 'y', 'z']
}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n数据类型:")
print(df.dtypes)
输出:
原始 DataFrame:
A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z
数据类型:
A int64
B float64
C object
dtype: object
示例1:将 DataFrame 转换为 NumPy 数组(默认参数)
array_default = df.to_numpy()
print("转换后的 NumPy 数组 (默认参数):")
print(array_default)
print("\n数据类型:")
print(array_default.dtype)
结果:
转换后的 NumPy 数组 (默认参数):
[[1 1.1 'x']
[2 2.2 'y']
[3 3.3 'z']]
数据类型:
object
示例2:不复制数据
array_no_copy = df.to_numpy(copy=False)
print("转换后的 NumPy 数组 (不复制数据):")
print(array_no_copy)
print("\n数据类型:")
print(array_no_copy.dtype)
结果:
转换后的 NumPy 数组 (不复制数据):
[[1 1.1 'x']
[2 2.2 'y']
[3 3.3 'z']]
数据类型:
object
示例3:指定缺失值表示为 -1
df_with_na = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [1.1, np.nan, 3.3],
'C': ['x', 'y', np.nan]
})
array_with_na = df_with_na.to_numpy(na_value=-1)
print("转换后的 NumPy 数组 (指定缺失值为 -1):")
print(array_with_na)
print("\n数据类型:")
print(array_with_na.dtype)
结果:
转换后的 NumPy 数组 (指定缺失值为 -1):
[[ 1. 1.1 -1. ]
[ 2. -1. 1. ]
[ -1. 3.3 -1. ]]
数据类型:
float64
通过这些示例,可以看到 pandas.DataFrame.to_numpy
方法如何将 DataFrame 转换为 NumPy 数组,并且如何使用不同的参数来控制转换的行为。
注意事项
to_numpy
方法可以将 DataFrame 转换为 NumPy 数组。- 可以通过
dtype
参数指定返回的 NumPy 数组的数据类型。 - 设置
copy=True
返回 DataFrame 数据的副本,而不会共享内存。 - 设置
copy=False
返回的数据数组与 DataFrame 共享内存。 - 可以通过
na_value
参数指定如何表示 DataFrame 中的缺失值(NaN)。
示例代码及验证
为了验证 pandas.DataFrame.to_numpy
方法的效果,可以运行上述示例代码并查看输出结果。
import pandas as pd
import numpy as np
# 创建一个示例 DataFrame
data = {
'A': [1, 2, 3],
'B': [1.1, 2.2, 3.3],
'C': ['x', 'y', 'z']
}
df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n数据类型:")
print(df.dtypes)
# 将 DataFrame 转换为 NumPy 数组(默认参数)
array_default = df.to_numpy()
print("\n转换后的 NumPy 数组 (默认参数):")
print(array_default)
print("\n数据类型:")
print(array_default.dtype)
# 不复制数据
array_no_copy = df.to_numpy(copy=False)
print("\n转换后的 NumPy 数组 (不复制数据):")
print(array_no_copy)
print("\n数据类型:")
print(array_no_copy.dtype)
# 创建一个包含缺失值的 DataFrame
df_with_na = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [1.1, np.nan, 3.3],
'C': ['x', 'y', np.nan]
})
# 指定缺失值表示为 -1
array_with_na = df_with_na.to_numpy(na_value=-1)
print("\n转换后的 NumPy 数组 (指定缺失值为 -1):")
print(array_with_na)
print("\n数据类型:")
print(array_with_na.dtype)
运行结果
运行上述代码后,你会看到以下输出:
原始 DataFrame:
A B C
0 1 1.1 x
1 2 2.2 y
2 3 3.3 z
数据类型:
A int64
B float64
C object
dtype: object
转换后的 NumPy 数组 (默认参数):
[[1 1.1 'x']
[2 2.2 'y']
[3 3.3 'z']]
数据类型:
object
转换后的 NumPy 数组 (不复制数据):
[[1 1.1 'x']
[2 2.2 'y']
[3 3.3 'z']]
数据类型:
object
转换后的 NumPy 数组 (指定缺失值为 -1):
[[ 1. 1.1 -1. ]
[ 2. -1. 1. ]
[ -1. 3.3 -1. ]]
数据类型:
float64
通过这些示例,可以看到 pandas.DataFrame.to_numpy
方法如何将 DataFrame 转换为 NumPy 数组,并且如何使用不同的参数来控制转换的行为。