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



我一直在研究一个python代码,它读取一个有800行和大约17000列的csv文件。 我想检查csv文件中的每个条目,看看这个数字是大于还是小于一个值,如果是,我分配一个默认值。我使用熊猫并使用数据帧,应用和lambda函数。我需要 172 分钟才能完成 csv 文件中的所有条目。正常吗?有没有更快的方法来做到这一点?我正在使用Python 2.7。我不知道它是否有帮助,但我正在具有 10GB 内存的 Windows 32 机器上运行它。提前感谢您的帮助。

代码附在下面。


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)

使用 pandas,用于 CVS 数据,使其高效。 但是你的代码不是 efficient.it 如果你尝试代码给打击会更快。

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 教程并进行操作。 下面给出的链接将为您提供其他帮助

在存在多个条件时替换 numpy 数组中的元素

相关内容

最新更新