跳到主要内容

如何在Python中从文件读取数据

how-to-read-data-from-a-file-in-python

本文将详细介绍如何使用Python读取大型文本文件。本演练中包含了一个功能齐全、随时可执行的代码片段,可以让您在阅读本文后的10分钟内加快速度。

让我们首先让您熟悉Python中可用的高级数据结构,我们将使用它们来存储和处理来自文件的数据,以防您是Python编程的新手。

Python中的高级数据结构

Python有两个高级而强大的数据结构,使其在功能上优于C/ c++。这使得它成为与Matlab竞争的数值数据密集型应用程序的理想语言。

ndarray和数据帧

ndarray和数据帧

NumPy数组

Numpy数组或ndarrays是可以伸缩到“n”维的数组。它们最好用作二维数组结构来表示矩阵。Numpy模块本身包含用于各种数值和代数操作的强大函数库。

熊猫数据帧

数据框架建立在二维基础上ndarrays为了增加额外的功能。二维ndarray现在有一个单独的列用于数组索引,所有列标题现在都是单独可寻址的。更重要的是,每一列现在都可以保存不同的数据类型(int、float或字符串)。

Python代码要读取的文本文件

让我们进入教程,让您熟悉演示文本文件。

它是一个保存为txt文件的14行x 20列的数据表。它包含所有三种数据格式的数据:int、float和字符串。文件名为BusData。

图1:用我们的代码解析的数据文件。

图1:用我们的代码解析的数据文件。

接下来,查看下面给出的代码片段,以阅读该文件,我们将在下一节中逐行解释该代码。

从文本文件读取数据的Python代码

#版权所有©Ali Khan(作者)#允许使用并注明出处进口numpy进口熊猫def():全球BusData, BusDataList, BusDataArray, BusDataReshapedX =开放“C:/Users/user/OneDrive -华盛顿州立大学(email.wsu.edu)/EE - 521/BusData.txt”“r”BusData = X.read()BusDataList = BusData.split()busdatarray = numpy.array(BusDataList)BusDataReshaped = busdatareray . remodeling (1420.#制作一个一维数组的矩阵Read ()BusDataFrame =熊猫。数据帧(BusDataReshaped, columns =[“BusNumber”“公共汽车”“Busx”“BusClass”“Unused1”“Unused2”“BusType”“Unused3”“Unused4”“BusLoadMW”“BusLoadMVAR”“BusGenMW”“BusGenMVAR”“InitialVoltAngle”“InitialVolt”“Qlimit +”“Qlimit -”“Unused5”“分流”“未使用”])打印(BusDataFrame。BusClass [6])

代码的解释

下面是对代码中发生的事情的解释。

初始化:导入Numpy和Pandas

第4行:在项目中导入numpy包。

第5行:导入项目中的熊猫包。

第7行:启动函数定义Read()。将代码分解为函数始终是一个很好的实践。

第9行:定义全局变量。

在Python中,只有全局变量会出现在变量资源管理器中,并且它们可以在函数外部被引用。为了演示,我将这四个定义为全局的。否则,只BusDataReshaped变量应该声明为全局的。

图2:Spyder变量资源管理器显示每个变量的细节。

图2:Spyder变量资源管理器显示每个变量的细节。

打开并读取目标文件

11行:open()函数指向BusData.txt文件的目录位置。定义被赋给随机变量X。

12行:Read()函数读取整个文件作为字符串并将其赋值给变量BusData.图2显示BusData现在是一个具有1792个字符的字符串。

按字符分割文件

第14行:split()函数在Python中,将字符串在their为空格的位置拆分为一个列表。数据现在被转换成一个包含280个元素的列表并赋值给变量BusDataList.参考图2。

转换为Numpy数组

15行:该列表由numpy.array()函数转换为numpy数组。图2显示BusDataArray现在是一个数据类型字符串的数组,有280个元素。

问题是它看起来仍然不像文件中的原始数据表。它需要重塑。

16行:numpy包中的numpy.重塑()函数将数组重新塑造为所需的尺寸14 x 20。图2显示BusDataReshapedVariable现在是一个ndarray,尺寸为14 x 20。

正如我们所看到的,所有值的数据类型仍然是字符串,但请记住,原始文件的数据中也有整数和浮点数。为了确保所有数据都按照正确的数据类型进行处理,我们需要将其转换为Pandas数据帧。

图3:BusDataFrame,在变量资源管理器中显示其前13列

图3:BusDataFrame,在变量资源管理器中显示其前13列

将Numpy数组转换为数据帧

第20行:这一行最后完成了将字符串数组转换为pandas数据框架的工作。

Pandas.dataframe()函数接受重塑后的numpy数组,并将所有20个列标题的名称作为输入。图3显示了形成的数据框架,图2在变量资源管理器中验证了这一点。

图4:打印结果

图4:打印结果

Pandas数据框架的引用值

22行:方法可以非常方便地访问该数据帧的值dataframe.columnheader。[索引]语法。

检查变量类型将显示每列的字符串、整数和浮点数这三种数据类型都被数据帧自动保留。

据作者所知,这篇文章是准确和真实的。内容仅供参考或娱乐之用,并不替代商业、金融、法律或技术事务方面的个人建议或专业建议。

©2022 StormsHalted

Baidu