python - 为 Pandas 使用多个核心

标签 python python-2.7 pandas

我有以下使用 Pandas 的 Python (2.7) 函数,我需要在 400 GB 上运行。 150 GB 上的测试运行需要 4 小时才能成功完成(机器内存为 128 GB、16 核、4TB 磁盘)。 有没有一种聪明的方法来利用我的 CPU 上的所有内核来实现此目的 并并行执行此操作以减少处理时间:

def create_data(headers, filters, filesFolder, remove_chars, outputFolder):
for ds in headers:
    for data_file in glob.glob(filesFolder + '*' + ds + '*.csv'):
        x=0
        for data in pd.read_csv(data_file, sep = '€', names = headers[ds], engine = 'python', chunksize = 10000000):
            logger.info('Pandas Read %s' %(str(x) + '_' + os.path.basename(data_file)) )
            for fil in filters[ds]:
                try:
                    data[fil] = data[fil].astype('O')
                    data = data[data[fil] == filters[ds][fil]]
                    logger.info('Filtered data for %s succesfully. Filters are %s' %(str(x) + '_' + os.path.basename(data_file) , filters[ds]))
                except:
                    logger.info('Could not apply filter %s for %s' %(filters[ds][fil], str(x) + '_' + os.path.basename(data_file) ))
                    pass
            for char in remove_chars:   
                try:
                    data = data.replace({char: ''}, regex=True)
                    logger.info('Removed char %s from %s succesfully' %(char, str(x) + '_' + os.path.basename(data_file) ))
                except:
                    logger.info('Could not remove char %s from %s' %(char, str(x) + '_' + os.path.basename(data_file) ))
                    pass
            try:
                data.to_csv(outputFolder + ds + '/' + str(x) + '_' + os.path.basename(data_file).split('.')[0].strip() + '.csv', enconding = 'utf-8')
                logger.info('Saved csv %s succesfully' %(str(x) + '_' + os.path.basename(data_file)))
                x+=1
            except:
                logger.info('Failed to Save %s' %(str(x) + '_' + os.path.basename(data_file)))

最佳答案

这是一个较旧的问题。然而现在,使用 Modin可能是最简单的方法。

只需安装它并更改您的

import pandas as pd

import modin.pandas as pd

关于python - 为 Pandas 使用多个核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862144/

相关文章:

python - 将 HoughCircles 与 3 channel 输入一起使用时出错

python - python 2.7 中不可变类型的内存不足

python - 使用附加列识别重复的行

python - 从 pandas 列动态创建字符串

python - 如何在python中发出post请求

python - 在 DARKNET 训练期间得到 -NaN,我做错了什么?

python - 使用用户输入的索引调用函数

python - 如何在单个数据框中一次连接 35 列 pandas?

python - 如何对 N 个元素的列表进行排序,然后用 -1 替换 0 到 N 之间的缺失值

python - 类函数中的可选参数