当前位置: 首页 > news >正文

【Pandas】pandas DataFrame to_numpy

Pandas2.2 DataFrame

Conversion

方法描述
DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型
DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型
DataFrame.infer_objects([copy])用于尝试将 DataFrame 中的 object 类型的列转换为更具体的类型(如 int64float64boolean
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 数组,并且如何使用不同的参数来控制转换的行为。

http://www.dtcms.com/a/123303.html

相关文章:

  • 微店商品属性参数接口
  • 百度地图小区边界爬取
  • 从PPT到PNG:Python实现的高效PPT转图工具
  • Edge浏览器IE兼容模式设置
  • JavaScript(JS进阶)
  • 【AI论文】OmniSVG:一种统一的(可扩展)矢量图形生成模型
  • STM32单片机入门学习——第31节: [10-1] I2C通信协议
  • 需求开发与需求管理的全景解析
  • 4.10学习总结
  • MQTT:基于Keil开发工具移植入MQTTClient-C开源库
  • JS—同源策略:2分钟掌握同源策略
  • vue2添加背景水印-手动实现(无组件模式)
  • 4月10(信息差)
  • linux系统下如何提交git和调试
  • +++++背到厌倦。持续更新
  • python基础语法:缩进规则
  • netty中的ChannelPipeline详解
  • 认知风险→风险转移→保障未来
  • AUTOSAR图解=>AUTOSAR_SWS_TimeSyncOverEthernet
  • C++: unordered_map、unordered_set
  • 3DGS之光栅化
  • Python爬虫第10节-lxml解析库用 XPath 解析网页
  • 【Pandas】pandas DataFrame head
  • C#容器源码分析 --- List
  • Web前端之Vue+Element实现表格动态不同列合并多行、localeCompare、forEach、table、push、sort、Map
  • 每日算法-250410
  • 队列缓冲最新请求结合线程池的优化方案
  • STM32Cubemx-H7-14-Bootloader(上)-ST和串口烧录
  • django寻味美食分享与交流网站-计算机毕业设计源码74984
  • 重载和重写的区别