Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免每次使用Python处理数据时都重新加载数据_Python_Pandas - Fatal编程技术网

避免每次使用Python处理数据时都重新加载数据

避免每次使用Python处理数据时都重新加载数据,python,pandas,Python,Pandas,我有一个永远不会改变的大数据集(我从不直接修改它)。我从和熊猫一起读开始 dataset = pandas.read_csv(filepath) 然后我做了一些数据分析。初始文件加载大约需要10秒,当前每次在数据分析部分更改某些内容时,我都会重新运行它。如何一次性加载数据并只运行分析部分?答案取决于您尚未共享的详细信息。最好的方法可能是序列化您正在构建的最终数据结构 创建一个方法,读取csv,并构建您感兴趣的任何数据结构。构造完成后,使用pickle输出结构。然后,在程序加载时从pickle中

我有一个永远不会改变的大数据集(我从不直接修改它)。我从和熊猫一起读开始

dataset = pandas.read_csv(filepath)

然后我做了一些数据分析。初始文件加载大约需要10秒,当前每次在数据分析部分更改某些内容时,我都会重新运行它。如何一次性加载数据并只运行分析部分?

答案取决于您尚未共享的详细信息。最好的方法可能是序列化您正在构建的最终数据结构

创建一个方法,读取
csv
,并构建您感兴趣的任何数据结构。构造完成后,使用
pickle
输出结构。然后,在程序加载时从pickle中解压数据结构


我假设这里耗时的部分是你一次又一次地提出这个程序。如果程序无法运行,那么您应该将数据结构保存在活动内存中的一个集中位置。这里的幼稚方法是全局的,您不应该这样做,我只是出于概念上的目的提到它。

在交互式Python会话中,阅读数据集:

>>> dataset = pandas.read_csv(filepath)
然后,无论您在何处编写Python代码(在单独的窗口中,或在IDE中,或在何处),都要创建数据分析函数并将其保存在自己的Python模块中

在交互式会话中导入并运行它:

>>> from module1 import analysis1
>>> results = analysis1(dataset)
检查结果,决定需要进行哪些更改,创建一个新的单独python模块,然后运行:

>>> from module2 import analysis2
>>> results = analysis2(dataset)

继续这样做,直到完成。

您可以探索像iPython这样的环境,它具有类似于MATLAB的工作区功能。标准库中有一个函数您可能会发现很有用:
importlib.reload
重新加载以前导入的模块。但是Python的版本在这里很重要:该函数在Python2.x系列的更高版本中出现,在V3.x中删除了一段时间,并在3.4中恢复。检查文档中你正在使用的任何版本。我只是在数据的探索阶段。我正在运行摘要统计、一些摘录、情节等。随着想法的出现,我正在一步一步地做这件事。我只是不想每次尝试新的东西时都重新加载整个数据。我想要一些类似Matlab的行为:永久地读取并保存数据,然后在数据上运行任何命令。如果您只是在运行python会话,而不是构建程序,那么看看@John Gordon的答案。如果您正在围绕一个静态数据结构构建一个需要花费时间的程序,那么与反复构建相比,反序列化已经构建的结构将节省大量时间。