python,如何实现DataFrame和ndarray的类型互转?
发布于 作者:苏南大叔 来源:程序如此灵动~

在机器学习领域,基于pandans
的dataframe
数据类型、基于numpy
的ndarray
数据类型,都是非常常见的。处理各种原始数据的时候,经常会碰到。那么,不可避免的会碰到两者做类型互转的情况。那么,本文中,将基于python
编程语言,对DataFrame
类型和ndarray
类型做互转的方法,做简要的说明。

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔和计算机代码的故事。在机器学习的数据处理阶段,最常见的DataFrame
类型和ndarray
类型的互转方法,在这里将要被描述。测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。
写在最前面的是:本文中的ndarray
是个二维数组,二维的,维度是2。虽然存在其它维度的ndarray
,但是并不适合本文。
DataFrame
转ndarray
有两种方式可以实现DataFrame
到ndarray
的转化,这两种方法是:
测试代码
定义一个DataFrame
类型数据,可以使用loc
或者iloc
对Dataframe
进行简单的加工。
DataFrame
的某一列数据,类型是Series
。
参考苏南大叔的文章:


输出:
ndarray
转DataFrame
ndarray
转为DataFrame
的方式,目前有下面一种方式:
测试代码
再定义一个ndarray
类型数据,可以利用reshape
对数据进行简单的再加工。参考苏南大叔的文章:

这个reshape()
操作非常有用,如果把ndarray
想象成一个矩形的话,那么,reshape()
操作就赋予了其任意变形的能力。

输出:
这里有个很有意思的现象,DataFrame
的一列数据,取出来叫做series
类型。但是ndarray
的一列数据,转换过去之后,依然是DataFrame
类型。
题外话,两种数据类型区别
关于ndarray
这个类型的拼写,这里做个简要的对比,见下图:

拼写方面来说,np
+.array
=>ndarray
,而不是nparray
。
苏南大叔个人理解着,ndarray
和dataframe
的主要区别就是:
dataframe
有行号和列号(表头)。ndarray
并没有这个表头索引,但是有个shape
的概念。
想象一下,ndarray
和dataframe
的区别,就类似于csv
和xls
的区别。普通的类型就是ndarray
,加工后的类型就是dataframe
。不知道,大家是否同意苏南大叔的观点。
总结
其实,DataFrame和ndarray的相互转化的最简单的方法,就是强制类型转换!哈哈哈!
更多经验文章,可以参考苏南大叔的python
系列文章:


