当前位置: 首页 > 面试题库 >

在Pandas中通过多处理读取csv文件的最简单方法

堵远航
2023-03-14
问题内容

这是我的问题。
与一堆.csv文件(或其他文件)。熊猫是读取它们并保存为Dataframe格式的简便方法。但是当文件数量巨大时,我想通过多处理读取文件以节省一些时间。

我的早期尝试

我手动将文件分成不同的路径。分别使用:

os.chdir("./task_1")
files = os.listdir('.')
files.sort()
for file in files:
    filename,extname = os.path.splitext(file)
    if extname == '.csv':
        f = pd.read_csv(file)
        df = (f.VALUE.as_matrix()).reshape(75,90)

然后合并它们。

如何运行它们pool以解决我的问题?
任何意见,将不胜感激!


问题答案:

使用Pool

import os
import pandas as pd 
from multiprocessing import Pool

# wrap your csv importer in a function that can be mapped
def read_csv(filename):
    'converts a filename to a pandas dataframe'
    return pd.read_csv(filename)


def main():

    # get a list of file names
    files = os.listdir('.')
    file_list = [filename for filename in files if filename.split('.')[1]=='csv']

    # set up your pool
    with Pool(processes=8) as pool: # or whatever your hardware can support

        # have your pool map the file names to dataframes
        df_list = pool.map(read_csv, file_list)

        # reduce the list of dataframes to a single dataframe
        combined_df = pd.concat(df_list, ignore_index=True)

if __name__ == '__main__':
    main()


 类似资料:
  • 我尝试在给定的文本文件中连接两行文本,并将输出打印到控制台。我的代码非常复杂,有没有更简单的方法通过使用文件处理基本概念来实现这一点?

  • 本文向大家介绍pandas处理csv文件的方法步骤,包括了pandas处理csv文件的方法步骤的使用技巧和注意事项,需要的朋友参考一下 一、我的需求 对于这样的一个 csv 表,需要将其 (1)将营业部名称和日期和股票代码进行拼接 (2)对于除了买入金额不同的的数据需要将它们的买入金额相加,每个买入金额乘以买卖序号的符号表示该营业名称对应的买入金额 比如:xx公司,20190731,1,股票1,4

  • 我正在运行一个程序,可以处理30000个类似的文件。他们中的一些人正在停止并产生这个错误...

  • 我有一个文件。 使用Pandas,从这个文件中获得两个DataFrame和的最佳策略是什么? 输入如下所示: 到目前为止,我想到的最好的方法是转换这个文件转换为Excel工作簿(),将表格拆分为工作表并使用: 然而: 这种方法需要模块。 这些日志文件必须被实时分析,这样就可以更好地找到一种方法来分析它们,因为它们来自日志。 真正的日志比那两个有更多的表。

  • 问题内容: 我有一些代码可以读取名称文件并创建列表: 每个名称用换行符分隔,如下所示: 我想忽略仅包含空格的任何行。我知道我可以通过以下方式来实现:创建一个循环并检查读取的每一行,然后将其添加到列表(如果不是空白的话)。 我只是想知道是否还有更Pythonic的方法? 问题答案: 我将堆栈生成器表达式: 现在,是所有非空白行。这将使您不必在线路上两次打电话。如果需要行列表,则可以执行以下操作: 您

  • 问题内容: 我有一个很大的文件4GB,当我尝试读取它时,我的计算机挂起了。因此,我想逐个读取它,并且在处理完每个块之后,将已处理的块存储到另一个文件中并读取下一个块。 这些零件有什么方法吗? 我很想有一个简单的方法。 问题答案: 要编写一个简单函数,只需使用: 另一个选择是使用和辅助功能: 如果文件是基于行的,则文件对象已经是行的惰性生成器: