将 NumPy 数组转换为 Pandas DataFrame(15+ 场景)

2023-10-22

通常我们需要在 NumPy 数组中创建数据并将其转换为 DataFrame,因为我们必须处理 Pandas 方法。

在这种情况下,转换NumPy 数组(ndarrays)到数据框使我们的数据分析变得方便。在本教程中,我们将仔细研究一些可用于将 NumPy 数组转换为 Pandas DataFrame 的常用方法。

我们还将见证一些常见技巧来处理与 Pandas DataFrame 具有不同值的不同 NumPy 数组数据结构。

 

目录 hide

 

创建 NumPy 数组 (ndarrays)

NumPy 数组是多维数组,它们可以存储同质或异构数据。

我们可以通过多种方式创建 NumPy 数组。

方法一:使用arange()方法:它将根据给定参数创建一系列值,从零开始。这是显示如何使用它的代码片段。


import numpy as np
arry = np.arange(20)
print(arry)  

Output


This is one dimensional array.

方法 2:使用 list 和 numpy.array():在这种技术中,我们将使用 numpy.array() 方法并传递列表以将其转换为数组。这是显示如何使用它的代码片段。


import numpy as np
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arry = np.array(li)
print(arry)  

Output


But for DataFrame, we will need a two dimensional array. To create a two dimensional array, we have two different approaches:

使用 arange() 和重塑():我们可以依次使用这两种方法来生成一系列值并将它们放置在适当的形状中。这是显示如何使用它的代码片段。


import numpy as np
arry = np.arange(24).reshape(8,3)
print(arry)  

Output

使用列表和 numpy.array():在此技术中,我们将使用 numpy.array() 方法并传递嵌套列表以将其转换为数组。这是显示如何使用它的代码片段。


import numpy as np
li = [[10, 20, 30, 40], [42, 52, 62, 72]]
arry = np.array(li)
print(arry)  

Output

 

使用 DataFrame 构造函数转换同质 NumPy 数组 (ndarrays)

Pandas 中的 DataFrame 是行和列中的二维数据集合。它存储同质和异构数据。

我们必须使用 DataFrame() 构造函数从 NumPy 数组创建 DataFrame。这是显示如何使用它的代码片段。


import numpy as np
import pandas as pd
li = [[10, 20, 30, 40], [42, 52, 62, 72]]
arry = np.array(li)
dataf = pd.DataFrame(arry)
print(dataf)
print()
print(type(dataf))  

Output

 

将列名和索引添加到转换后的 DataFrame

我们可以使用 DataFrame() 中的列和索引参数来确定 DataFrame 的列名称和索引标签。

默认情况下,列和索引值从 0 开始并以 1 递增。以下是指定列和索引的 DataFrame 示例。


import numpy as np
import pandas as pd
li = [[10, 20, 30, 40], [42, 52, 62, 72]]
arry = np.array(li)
dataf = pd.DataFrame(arry, index = ['R1', 'R2'], columns = ['ColA', 'ColB', 'ColC', 'ColD'])
print(dataf)
print()
print(type(dataf))
  

Output

 

将异构 NumPy 数组转换为 DataFrame

我们还可以从 NumPy 数组创建一个 DataFrame,其中包含异构值作为嵌套列表。

我们可以将 ndarrays 对象传递给 DataFrame() 构造函数并设置列值以创建具有异构数据值的 DataFrame。

这是具有异构数据的 DataFrame 的示例。


import numpy as np
import pandas as pd
arry = np.array([[25, 'Karlos', 2015], [21, 'Gaurav', 2016], [22, 'Dee', 2018]], dtype = object)
df = pd.DataFrame(arry, columns = ['Age', 'Student_Name', 'Passing Year'] , index = [1, 2, 3])
print(df)
  

Output

 

按列从 NumPy 数组创建 DataFrame

这是使用二维 ndarrays 逐列彻底索引机制从 NumPy 数组创建 DataFrame 的另一种方法。

它的工作原理与一般数组中的列优先类似。这是一个展示如何使用它的示例。


import numpy as np
import pandas as pd
arry = np.array([[10, 20, 30, 40],
                     [15, 18, 20, 23],
                     [51, 42, 33, 24]])
print(arry, "\n")
myDat = pd.DataFrame({'col_1': arry[:, 0],    # Create pandas DataFrame
                         'col_2': arry[:, 1],
                         'col_3': arry[:, 2],
                         'col_4': arry[:, 3]})
print(myDat)  

Output

 

从 NumPy 数组按行创建 DataFrame

这是使用二维 ndarrays 逐行彻底索引机制从 NumPy 数组创建 DataFrame 的另一种方法。它的工作原理与一般数组中的行优先类似。这是一个展示如何使用它的示例。


import numpy as np
import pandas as pd
arry = np.array([[10, 20, 30, 40],
                     [15, 18, 20, 23],
                     [51, 42, 33, 24]])
print(arry, "\n")
myDat = pd.DataFrame({'row_1': arry[0, :],    # Create pandas DataFrame
                         'row_2': arry[1, :],
                         'row_3': arry[2, :]}, index = ['col1', 'col2', 'col3', 'col4'])
print(myDat)  

Output

 

将 NumPy 数组连接到 Pandas Dataframe

我们还可以通过创建一个 DataFrame(通过 ndarray)并将其与另一个使用 equal 运算符合并来将 NumPy 数组连接到 Pandas DataFrame。这是一个代码片段,展示了如何实现它。


import numpy as np
import pandas as pd
ary = np.array([['India', 91], ['USA', 1], ['France', 33]], dtype = object)
print(ary)
print(type(ary), "\n")
df = pd.DataFrame(ary, columns = ['Country Name', 'Phone Code'])
arr1 = np.array([['Jio'], ['Airtel'], ['AT&T']], dtype=object)
df2 = pd.DataFrame(arr1, columns = ['Brand'])
df['Brand_Name'] = df2['Brand']
print(df)  

Output

 

将 NumPy 数组附加为 DataFrame 中的新列

我们还可以直接将 2D NumPy 数组合并到 Pandas DataFrame 中。为此,我们必须将嵌套列表转换为 Pandas DataFrame,并将其分配给具有列名称的现有 DataFrame 列。

下面的代码片段展示了如何直接使用列名附加新的基于 NumPy 数组的列。


import numpy as np
import pandas as pd
df = pd.DataFrame(np.arange(4, 13).reshape(3, 3))
df['New_Col'] = pd.DataFrame(np.array([[2],
                                       [4],
                                       [6]]))
print(df)  

Output

 

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

concat() 是 Pandas 的另一种强大方法,用于将两个 DataFrame 连接成一个新的 DataFrame。我们可以使用 concat() 方法将新的 DataFrame 与 NumPy 数组连接起来。

其语法为: pandas.concat([dataframe1, pandas.DataFrame(ndarray)], axis = 1) 下面是显示如何实现它的代码片段。


import numpy as np
import pandas as pd
df = pd.DataFrame({'value1': [25, 12, 15, 14, 19],
                   'value2': [52, 17, 12, 9, 41],
                   'value3': [10, 30, 15, 11, 14]})
newArr = np.matrix([[12, 13],
                   [11, 10],
                   [22, 17],
                   [18, 27],
                   [31, 14]])
new_df = pd.concat([df, pd.DataFrame(newArr)], axis = 1)
print(new_df)  

Output

 

使用 random.rand() 和 reshape() 将 NumPy 数组转换为 DataFrame

我们可以生成一些随机数(使用 random.rand()),并使用 reshape() 以二维 NumPy 数组格式重塑整个对象。

然后我们可以将其转换为 DataFrame。这是一个代码片段,展示了如何实现它。


import numpy as np
import pandas as pd
arry = np.random.rand(8).reshape(2, 4)
print("Numpy array:")
print(arry)
# convert numpy array to dataframe
df = pd.DataFrame(arry, columns = ['C1', 'C2', 'C3', 'C4'])
print("\n Pandas DataFrame: ")
print(df)  

Output

 

使用 tolist() 将 NumPy 数组添加到 Pandas DataFrame

我们还可以使用 NumPy 的 tolist() 方法来获取整个 NumPy 数组并将其作为 DataFrame 列的一部分。

语法如下: dataframe_object[‘column_name’] = ndarray_object.tolist() 下面是显示如何使用它的代码片段。


import numpy as np
import pandas as pd
df = pd.DataFrame({'value1': [25, 12, 15, 14, 19],
                   'value2': [52, 17, 12, 9, 41],
                   'value3': [10, 30, 15, 11, 14]})
new = np.array([3, 7, 1, 0, 5])
df['Newcol'] = new.tolist()
print(df)  

Output

 

通过 np.zeros() 创建 DataFrame

我们还可以通过实现 numpy.zeros() 创建一个 DataFrame。这样的 ndarray 将具有全零值,并且也将使用相同的值来创建 DataFrame。

这是一个代码片段,展示了如何实现它。


import numpy as np
import pandas as pd
arry = pd.DataFrame(np.zeros((5, 3)))
print("Numpy array:")
print(arry)
df = pd.DataFrame(arry, columns = ['C1', 'C2', 'C3'])
df = df.fillna(0)
print("\n Pandas DataFrame: ")
print(df)  

Output

 

使用 NumPy 数组的 random.choice() 创建 DataFrame

从 DataFrame 创建 NumPy 数组的另一种方法是使用 random.choice() 并将其放置在 DataFrame() 构造函数中,以直接将特定大小的 NumPy 数组转换为 DataFrame。这是一个展示如何实现它的脚本。


import numpy as np
import pandas as pd
df = df = pd.DataFrame(np.random.choice(12, (3, 4)), columns = list('ABCD'))
print("\n Pandas DataFrame: ")
print(df)  

Output

 

创建 DataFrame 之前转置 NumPy 数组

我们可以创建 NumPy 数组的转置并将其放置在 DataFrame 中。这是一个代码示例,展示了如何实现它。


import numpy as np
import pandas as pd
arry = np.array([[4, 8], [15, 18], [18, 21], [13, 19],
                [10, 15], [7, 12], [4, 2], [5,  1], [8, 4], [9, 24],
                 [23, 35], [10, 22], [12, 27]])
arry_tp = arry.transpose()
print(arry_tp)
print()
df = pd.DataFrame({'col1': arry_tp[0], 'col2': arry_tp[1]})
print(df.tail())  

Output

 

从空 NumPy 数组创建空 DataFrame

我们可以从存储 NaN(非数字)值的 NumPy 数组创建一个空 DataFrame。这是一个代码片段,展示了如何实现它。


import pandas as pd
import numpy as np
df = pd.DataFrame(np.nan, index = [0, 1, 2], columns = ['A', 'B', 'C', 'D'])
df = df.fillna(' ')
print(df)  

Output

 

通过 NumPy 数组的迭代生成 DataFrame

我们可以在 DataFrame() 构造函数中运行隐式迭代,如列表理解,该构造函数可以利用 NumPy 数组基于 shape() 迭代 ndarray 元素。

它最终可以从 ndarray 中为我们提供一个 DataFrame。这是一个显示如何执行它的脚本。


import pandas as pd
import numpy as np
arry = np.array([[2, 4, 6],
                [10, 20, 30]])
df = pd.DataFrame(data = arry[0:, 0:],
                  index = ['Row-' + str(g + 1)
                         for g in range(arry.shape[0])],
                  columns=['Column-' + str(g + 1)
                           for g in range(arry.shape[1]) ])
print(df)  

Output

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

将 NumPy 数组转换为 Pandas DataFrame(15+ 场景) 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 如何检查 OpenSSH 版本

    OpenSSH是一个安全的网络实用程序 用于使用 SSH 协议进行远程登录 这是大多数基于 Linux 的系统用于远程 SSH 登录的主要工具 OpenSSH 为您提供通过 SSH 协议连接远程系统的选项 它提供了两个系统之间通信的端到端加
  • 如何在 CentOS/RHEL 9/8/7 上安装 NRPE

    NRPE Nagios Remote Plugin Executor 是一个 Nagios 插件 用于在远程主机上远程执行插件和脚本 这允许您监视远程主机上的资源 例如磁盘使用情况 CPU 负载和网络活动 在本文中 我们将向您展示如何在 C
  • 如何在 Ubuntu 20.04 中安装 PostgreSQL 和 pgAdmin4

    PostgreSQL是一个强大 可靠 健壮且开源的对象关系数据库系统 该数据库系统的最新版本是 PostgreSQL 13 2 而版本 12 6 11 11 10 16 9 6 21 和 9 5 25 仍在定期更新 本教程介绍如何在 Ubu
  • 如何在 Ubuntu 和 Debian 中切换 Python 版本

    Python 是一种高级编程语言 广泛用于系统编程 它适用于所有流行的操作系统 您可以在单个系统上安装多个 Python 版本 安装多个 Python 版本后 您可以使用 update alternatives 工具切换默认 Python
  • 如何在 CentOS 7 上安装和使用 Docker

    Docker 是一种容器化技术 可让您快速构建 测试和部署应用程序 作为可移植 自给自足的容器 几乎可以在任何地方运行 在本教程中 我们将介绍如何在 CentOS 7 上安装 Docker CE 并探索基本的 Docker 概念和命令 先决
  • 如何在 CentOS 8 上安装 CouchDB

    Apache CouchDB 是由 Apache 软件基金会开发的免费开源 NoSQL 数据库 它可以用作单节点或集群数据库 CouchDB 服务器将其数据存储在命名数据库中 其中包含具有以下内容的文档JSON结构 每个文档由许多字段和附件
  • 如何在 Ubuntu 20.04 上安装 Kvm

    KVM 基于内核的虚拟机 是内置于 Linux 内核中的开源虚拟化技术 使用 KVM 运行多个 Linux 或 Windows 来宾虚拟机 每个来宾都与其他来宾完全隔离 并拥有自己的操作系统和专用虚拟硬件 例如 CPU 内存 网络接口和存储
  • 如何在 Ubuntu 20.04 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用范围很广 包括医学图像分析 拼接街景图像
  • 如何在 Debian 10 Linux 上添加交换空间

    交换空间是磁盘上的空间 当物理内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 运行 Debian 虚拟机时不存在交换分区 因此唯一的选择是创建交
  • 如何在 CentOS 8 上安装 Apache Maven

    Apache Maven 是一个开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将解释如何在 Cent
  • 如何在 Ubuntu 18.04 上安装 TensorFlow

    TensorFlow是由 Google 构建的免费开源机器学习平台 许多组织都在使用它 包括 Twitter PayPal 英特尔 联想和空中客车公司 TensorFlow 可以在 Python 虚拟环境中安装在系统范围内 作为Docker
  • Linux 中的 Chattr 命令(文件属性)

    在 Linux 中 文件属性是描述文件行为的元数据属性 例如 属性可以指示文件是否被压缩或指定文件是否可以被删除 一些属性 如不变性 可以设置或清除 而其他属性 如加密 是只读的 只能查看 对某些属性的支持取决于所使用的文件系统 本文介绍了
  • 在Ubuntu上安装RPM包

    Ubuntu 存储库包含数千个 deb 软件包 可以从 Ubuntu 软件中心或使用apt命令行实用程序 Deb 是所有基于 Debian 的发行版 包括 Ubuntu 都使用的安装包格式 有些软件包在标准 Ubuntu 存储库中不可用 但
  • 如何检查PHP版本

    PHP 是最常用的服务器端编程语言之一 PHP 版本之间存在一些重要差异 因此在某些情况下可能需要了解您的服务器上运行的是哪个版本 例如 如果您在开始安装之前升级应用程序或安装需要特定 PHP 版本的新应用程序 则需要找出 PHP 服务器的
  • 如何在 Debian 10 Linux 上安装 Google Chrome 网络浏览器

    谷歌浏览器是世界上最流行的网络浏览器 它是专为现代网络打造的快速 直观且安全的浏览器 Chrome 不是开源浏览器 并且不包含在官方 Debian 存储库中 它是基于Chromium 一个开源浏览器 可在默认 Debian Buster 存
  • 如何在 Ubuntu 中将用户添加到 Sudoers

    sudo是一个命令行程序 允许受信任的用户以 root 或其他用户身份执行命令 在本文中 我们将向您展示两种向用户授予 sudo 权限的方法 第一个是将用户添加到sudoers 文件 该文件包含控制向哪些用户和组授予 sudo 权限以及权限
  • 检查 gzip 文件而不解压缩:zcat、zless 和 zmore

    Linux 提供了多个用于处理压缩文件的命令 例如 zcat zless 和 zmore 本教程将深入探讨这些命令的用法 让您可以导航和检查压缩文件 而无需解压缩它们 下表总结了这 3 种工具之间的差异 Tool Description P
  • 使用 source 命令在 Linux 中获取脚本

    The sourceLinux 中的 command 是一个内置的 shell 命令 用于从文件中读取和执行命令 这意味着脚本定义的任何变量或函数在脚本执行完成后仍然可用 现在 让我们开始探索它的功能source命令 目录 hide 1 子
  • Linux 上的 MySQL(初学者教程)

    在这篇文章中 我们将介绍 Linux 上 MySQL 的许多方面 首先 如何安装它 如何执行基本的 CRUD 操作 如何导入和导出数据 如何使用 MySQL 引擎本身 例如设置 root 用户密码 等等 MySQL 是世界上最流行的关系数据
  • 将 NumPy 数组转换为 Pandas DataFrame(15+ 场景)

    通常我们需要在 NumPy 数组中创建数据并将其转换为 DataFrame 因为我们必须处理 Pandas 方法 在这种情况下 转换NumPy 数组 ndarrays 到数据框使我们的数据分析变得方便 在本教程中 我们将仔细研究一些可用于将