使用 to_numpy() 将 Pandas DataFrame 转换为 NumPy 数组

2023-10-24

The DataFrame.to_numpy()函数,由提供Pandas库,提供了一种将 DataFrame 转换为NumPy 数组.
它返回一个 ndarray(NumPy 的基本数据结构),可以使用各种 NumPy 库函数轻松操作它。

当您想要执行比 Pandas 更容易或更快地在 NumPy 中实现的操作时,这尤其有用。

 

 

为什么从 Pandas DataFrame 转换为 NumPy?

您想要将 Pandas DataFrame 转换为 NumPy 数组的原因有多种。

当涉及数值或数学运算时,NumPy 库通常更高效,因为它支持数组数据类型,从而可以加快计算速度。
此外,许多机器学习库(例如 Scikit-learn)要求输入采用 NumPy 数组的形式。

在本教程的后面部分,您将看到一些将 DataFrame 转换为 NumPy 数组的实际用途和实际示例。

 

语法和参数

The DataFrame.to_numpy()功能很简单。其语法如下:

DataFrame.to_numpy(dtype=None, copy=False, na_value=None)

Where:

  • dtype是一个可选参数,指定数组所需的数据类型。如果未提供,Pandas 会根据 DataFrame 的 dtypes 确定 dtype。
  • copy是一个布尔标志,当设置为 True 时,可确保返回的数组是 DataFrame 数据的副本。默认值为 False。
  • na_value定义用于填充 NaN 值的值。如果未指定,NaN 值将使用所选数据类型的默认 NaN 值填充。

 

将 Pandas DataFrame 转换为 NumPy 数组

将 Pandas DataFrame 转换为 NumPy 数组。
Step 1:导入所需的库
第一步涉及导入 Pandas 和 NumPy。


import pandas as pd
import numpy as np
  

Step 2:创建数据框
Next, 创建一个数据框:


df = pd.DataFrame({
    'A': [1.5, 2.3, 3.1],
    'B': [4.2, 5.8, 6.7]
})
  

您可以使用以下任一方式加载数据来创建 DataFrame:

使用 Python Pandas read_csv 读取 CSV

使用 Python Pandas read_json 读取 JSON 文件

使用 Pandas read_sql 将 SQL 查询/表读入 DataFrame

使用 Pandas read_html 函数读取 HTML 表格

使用 Pandas read_parquet 读取 Parquet 文件

Step 3:将 DataFrame 转换为 NumPy 数组
现在,使用以下命令将 DataFrame 转换为 NumPy 数组DataFrame.to_numpy()功能。您可以选择指定数据类型。在本例中,我们将数据转换为“float64”。


array = df.to_numpy(dtype='float64')
  

Step 4:打印结果数组或按照您想要的方式处理它。
最后,打印生成的 NumPy 数组以确认转换。


print(array)
  

Output:


array([[1.5, 4.2],
       [2.3, 5.8],
       [3.1, 6.7]])
  

我们现在已经成功地将 Pandas DataFrame 转换为“float64”类型的 NumPy 数组。

DataFrame 中的每一行对应于 ndarray 中的一行,保留原始结构。

 

数据类型处理

The DataFrame.to_numpy()功能提供dtype允许您指定所需输出数据类型的参数。
如果没有指定,则DataFrame.to_numpy()函数将尝试推断最佳数据类型。

然而,如果 DataFrame 包含混合数据类型,这有时会导致数据类型为“object”,这可能是不可取的,特别是当您打算对结果数组执行数学运算时。
以下是在转换期间指定 dtype 的示例:


df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c']
})
array = df.to_numpy(dtype='str')
print(array)
  

Output:


array([['1', 'a'],
       ['2', 'b'],
       ['3', 'c']], dtype='<U1')
  

在这里,即使列“A”包含整数,我们也成功地将整个 DataFrame 转换为数据类型“str”的 NumPy 数组。

 

保留元数据

将 Pandas DataFrame 转换为 NumPy 数组时要记住的一件重要事情是,列名和索引等元数据不会保留在生成的 NumPy 数组中,因为它是较低级别的数据结构。
但是,您可以在转换之前将列名单独存储在变量中,如下所示:


df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# store column names
column_names = df.columns.tolist()
array = df.to_numpy()
print("Column Names:", column_names)
print("Array:n", array)
  

Output:


Column Names: ['A', 'B']
Array:
 [[1 4]
 [2 5]
 [3 6]]
  

在输出中,我们将列名保留在column_names列表,并将数据转换为 NumPy 数组。

 

如何处理缺失值?

使用以下命令将 DataFrame 转换为 NumPy 数组时DataFrame.to_numpy(),默认情况下,Pandas 会将缺失值(NaN)转换为 ndarray 中特定类型的默认值,通常是np.nan.
如果您想用特定值填充缺失值,可以使用na_value的参数to_numpy()函数,如下图:


df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [4, np.nan, 6]
})

# convert dataframe to numpy array filling NaN with -1
array = df.to_numpy(na_value=-1)
print(array)
  

Output:


array([[ 1.,  4.],
       [ 2., -1.],
       [-1.,  6.]])
  

在这个例子中,我们使用了na_value将所有 NaN 替换为的参数-1在生成的 ndarray 中。

 

使用 to_numpy() 的实际示例

在某些情况下,您可能需要将 DataFrame 转换为 NumPy 数组,以便在 NumPy 中更轻松或更高效地进行某些操作。

使用 Scikit-Learn 进行机器学习

如果您正在开发一个项目,您需要根据卧室数量、房屋大小、位置等特征来预测房价。

您可以开始使用 Pandas 来处理数据,因为它提供了强大的数据操作工具并且可以很好地处理异构类型的数据。


import pandas as pd
data = pd.read_csv('house_prices.csv')
  

现在,当您想使用 scikit-learn 在此数据上训练机器学习模型时,必须将 DataFrame 转换为 NumPy 数组:


# Split the data into features and target
X = data.drop('Price', axis=1) # Features
y = data['Price'] # Target

# Convert DataFrame to NumPy array
X = X.to_numpy()
y = y.to_numpy()  

现在您可以使用这些数据在 scikit-learn 模型中进行训练和测试:


from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)  

在此示例中,使用 scikit-learn 库需要将 pandas DataFrame 转换为 numpy 数组。

使用 OpenCV 进行图像处理

如果您正在开发一个计算机视觉项目,您需要对不同手写数字的图像进行分类。标签(数字)和图像文件名存储在 CSV 文件中。


import pandas as pd
data = pd.read_csv('image_labels.csv')
print(data.head())  

Output:


 ImageName Label
0 img1.png 7
1 img2.png 2
2 img3.png 1
3 img4.png 0
4 img5.png 4  

您必须加载图像以进行进一步处理OpenCV。为此,您需要将相关 DataFrame 列转换为 NumPy 数组。


import cv2
import numpy as np

images = [cv2.imread(f'images/{name}', cv2.IMREAD_GRAYSCALE) for name in data['ImageName']]

# Convert list to NumPy array
images = np.array(images)

# Similarly, convert labels to NumPy array
labels = data['Label'].to_numpy()  

此示例说明了如何使用 Pandas 开始处理和检查数据,但随后需要转换为 NumPy 数组以进行图像处理。

使用 NumPy 的财务函数

如果您在一家金融公司工作,并且您有一个数据集,其中包含有关具有不同年利率和条款的多种投资选项的信息。


import pandas as pd
data = pd.read_csv('investments.csv')
print(data.head())  

Output:


  Investment_Name  Annual_Interest_Rate  Term_in_Years
0       Investment A                 0.05             5
1       Investment B                 0.06             7
2       Investment C                 0.04             3
3       Investment D                 0.08             10
4       Investment E                 0.07             8
  

假设要计算每个选项的 1000 美元投资的未来价值。

您可以使用 NumPyfv函数,需要利率、期数、付款和现值作为输入,所有这些都应该采用 NumPy 数组的格式。


import numpy as np

# Convert pandas DataFrame columns to NumPy arrays
rates = data['Annual_Interest_Rate'].to_numpy()
terms = data['Term_in_Years'].to_numpy()

# Constants
pv = -1000 # (it's negative as it's an outgoing payment)
pmt = 0

# Calculate future value of investment using NumPy's fv function
fv = np.fv(rates, terms, pmt, pv)

for i, investment in enumerate(data['Investment_Name']):
    print(f"The future value of a $1000 investment in {investment} after {terms[i]} years is ${fv[i]:.2f}")  

在此示例中,将 Pandas DataFrame 转换为 NumPy 数组是由 NumPy 财务功能的要求驱动的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 to_numpy() 将 Pandas DataFrame 转换为 NumPy 数组 的相关文章

随机推荐

  • 如何在 CentOS 7 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 您可以创建自己的虚拟机并评估许多软件供应商作为虚拟设备分发的软件 这些软件可从VMware 解决方案交流 本教程将指导您完成在 CentOS 7 上安装
  • 如何在 Ubuntu 18.04 上安装 Java

    Java 是世界上最流行的编程语言之一 用于构建不同类型的跨平台应用程序 本教程介绍如何在 Ubuntu 18 04 上安装各种版本的 OpenJDK 以及 Oracle Java 相同的说明适用于 Ubuntu 16 04 和任何基于 U
  • 如何在 Ubuntu 18.04 上安装 Apache Cassandra

    Apache Cassandra 是一个免费的开源 NoSQL 数据库 不存在单点故障 它提供线性可扩展性和高可用性 而不会影响性能 Apache Cassandra 被许多组织使用 包括 Apple NetFlix eBay 和 Easo
  • Linux 中的超时命令

    timeout是一个命令行实用程序 它运行指定的命令 并在给定时间段后终止该命令 如果该命令仍在运行 换句话说 timeout允许您运行有时间限制的命令 这timeout命令是 GNU 核心实用程序包的一部分 几乎所有 Linux 发行版上
  • 如何在 CentOS 7 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 在大多数情况下 当在虚拟机上运行 CentOS 时 不存在交换
  • 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机

    在本教程中 我们将提供有关如何在 Ubuntu 18 04 上设置 Apache 虚拟主机的分步说明 Apache 虚拟主机允许您在一台计算机上运行多个网站 使用虚拟主机 您可以指定站点文档根目录 包含网站文件的目录 为每个站点创建单独的安
  • 如何在 Ubuntu 20.04 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 它是 Microsoft 的开源替代品远程桌面协议 RDP 本文介绍如何在 Ubuntu 20 04 上安装和配置 VNC 服务器 我们还将向您展示如何
  • 如何在 Ubuntu 18.04 上禁用防火墙

    Ubuntu 附带了一个名为 UFW 简单防火墙 的防火墙配置工具 UFW 是一个用户友好的前端 用于管理 iptables 防火墙规则 其主要目标是使管理防火墙规则更容易 或者顾名思义 不复杂 强烈建议保持防火墙启用 但是 在某些情况下
  • 如何在 Debian 9 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制

    MySQL 复制是将数据从一台数据库服务器 主服务器 复制到一台或多台服务器 从服务器 的过程 MySQL 支持多种复制拓扑 其中主 从拓扑是最著名的拓扑之一 其中一台数据库服务器充当主服务器 而一台或多台服务器充当从服务器 默认情况下 复
  • 如何在 Ubuntu 18.04 上安装 Ghost

    Ghost 是一个构建在 Node js 平台之上的现代源代码发布平台 它完全可定制且易于使用 使您可以以几乎零的学习曲线发布内容 在本教程中 我们将向您展示如何使用 Nginx 作为代理 免费的 Let s Encrypt SSL 证书
  • 使用 NumPy 范数计算向量和矩阵范数

    在线性代数中 范数是为向量空间中的每个向量分配严格正的长度或大小的函数 它是矢量大小的度量 从数学上来说 对于一个向量x the p 范数定义为 x p sum xi p 1 p 在本教程中 我们将使用numpy linalg norm f
  • 在 Pandas query() 中使用字符串方法:数据帧过滤

    The Pandas 中的 query 方法允许您过滤数据帧 并且当与字符串方法结合使用时 可能性变得广泛 在本教程中 您将学习如何在query 功能来细化和过滤数据 目录 hide 1 检查子字符串 str contains 2 str
  • Seaborn histplot(用直方图可视化数据)

    Seaborn 是最广为人知的数据可视化库之一 运行在Matplotlib 通过 Seaborn 我们可以渲染各种类型的绘图 并提供简单 直观且高度可定制的 API 来生成数据可视化 如果没有丰富的可视化 就很难理解数据并与数据进行交流 想
  • Kivy 教程 – 使用 Python 构建桌面 GUI 应用程序

    Kivy 是一个开源 Python 库 您可以使用它在 Windows Linux macOS Android 和 iOS 上创建应用程序 我们将讨论如何使用 Kivy 按钮 标签 回收视图 滚动视图 Kivy Canvas 和其他小部件来
  • NumPy 矩阵乘法(从理论到实际示例)

    矩阵乘法是线性代数中的基本运算 它采用一对矩阵并产生另一个矩阵 用数学术语来说 给定两个矩阵 A 和 B 乘积 AB 是通过 A 的行与 B 的列的点积来计算的 本教程旨在深入了解矩阵乘法NumPy 目录 hide 1 逐元素与矩阵乘法 2
  • Python相关矩阵教程(使用Pandas)

    在本博客中 我们将介绍一个重要的多变量数据描述性统计量 称为相关矩阵 我们将学习如何在 Python 中使用以下命令创建 绘制和操作相关矩阵Pandas 我们将讨论以下主题 目录 hide 1 What is the correlation
  • Shell 脚本编写分步教程

    在本教程中 我们将讨论 shell 脚本以及如何制作第一个 shell 脚本 它们通常被称为 shell 脚本 但我们将它们称为 Bash 脚本 因为我们将在其他 Linux shell 中使用 Bash 有 zsh tcsh ksh 和其
  • 使用 Curl 命令下载文件:综合指南

    本教程深入探讨使用以下命令下载文件的方法卷曲命令 我们将介绍 HTTP 下载 安全 HTTPS 传输 使用 FTP 服务器的基础知识 甚至浏览分段下载和速度调整等高级功能 目录 hide 1 下载到标准输出 2 下载并保存到文件 3 验证
  • 使用 to_numpy() 将 Pandas DataFrame 转换为 NumPy 数组

    The DataFrame to numpy 函数 由提供Pandas库 提供了一种将 DataFrame 转换为NumPy 数组 它返回一个 ndarray NumPy 的基本数据结构 可以使用各种 NumPy 库函数轻松操作它 当您想要