在Python中处理大型csv文件的最快方法是什么?

问题描述 投票:0回答:1

我一直在研究python代码,该代码读取具有800个奇数行和大约17000列的csv文件。我想检查csv文件中的每个条目,并查看此数字是大于还是小于一个值,如果是,则分配一个默认值。我使用了pandas并使用了数据框,apply和lambda函数。完成整个csv文件中的所有条目需要我172分钟。正常吗有没有更快的方法可以做到这一点?我正在使用Python 2.7。我不知道它是否有帮助,但是我正在具有32GB内存的Windows 10计算机上运行它。预先感谢您的帮助。

代码附在下面。


def do_something(some_dataframe):
    col = get_req_colm(some_dataframe)
    modified_dataframe = pd.DataFrame()
    for k in col:
        temp_data = some_dataframe.apply(lambda x: check_for_range(x[k]), axis=1).tolist()
        dictionary = {}
        dictionary[str(k)] = temp_data
        temp_frame = pd.DataFrame(dictionary)
        modified_dataframe = pd.concat([modified_dataframe, temp_frame], axis=1)
    return modified_dataframe

def check_for_range(var):
    var = int(var)
    try:
        if var == 0:
            return 0
        if var == 1 or var == 4:
            return 1
        if var == 2 or var == 3 or var == 5 or var == 6:
            return 2
    except:
        print('error')

def get_req_colm(df):
    col = list(df)
    try:
        col.remove('index/Sample count')
        col.remove('index / Sample')
        col.remove('index')
        col.remove('count')
    except:
        pass
    return col

df_after_doing_something = do_something(some_dataframe)
df_after_doing_something.to_csv(output_folder + '\\df_after_doing_something.csv', index=False)

python csv large-files
1个回答
0
投票

将熊猫用于CVS数据,可以提高效率。但是您的代码效率不高。如果您尝试使用给出的打击代码,将会更快。

def do_something(some_dataframe):
    col = get_req_colm(some_dataframe)
    col = col.to_numpy()
    np_array = np.zeros_like(col)
    for i in range(len(col)):
        k = np_array[i]
        temp_data = np.zeros_like()
        temp_data[k == 1 or k == 4] = 1
        temp_data[k == 2 or k == 3 or k == 5 or k == 6] = 2
        np_array[i] = k
    modified_dataframe = pandas.Dataframe(np_array)
    return modified_dataframe

def get_req_colm(df):
    col = list(df)
    try:
        col.remove('index/Sample count')
        col.remove('index / Sample')
        col.remove('index')
        col.remove('count')
    except:
        pass
    return col

它将运行完美,并且不要忘记导入numpy。

import numpy as np

如果您不了解,请查看一些numpy教程,然后再进行。下面给出的链接将对您有所帮助

Replacing elements in a numpy array when there are multiple conditions

© www.soinside.com 2019 - 2024. All rights reserved.