目前,我正在用熊猫编译一些数据框,目前有99个工作簿,其中包含约200,000行数据和几列。练习是过滤这些列之一,并获得所有过滤数据的组合工作簿。
[最初,我使用列表将所有过滤后的数据附加到一个数据帧,然后在下面写出结果csv:
appended_data=[]
for fname in os.listdir(readpath):
if 'xlsx' in fname:
ex_wbk = os.path.join(readpath + fname)
try:
fName = os.path.join(readpath + "\\" + fname)
fBase = os.path.basename(fName)
df = pd.read_excel(fName, index = False, index_col=None, na_values='')
df.drop(df.iloc[:, 2:4], inplace = True, axis = 1)
df.dropna(subset=['Data Line'], inplace=True)
appended_data.append(df)
errorbook = ex_wbk
except OSError:
print(str(errorbook) + " Workbook in use")
pass
appended_data = pd.concat(appended_data, sort=True)
appended_data.to_excel(home, header=False, index=False)
这花费了789秒的时间] >>
然后,我考虑过仅使用过滤后的数据制作每个工作簿的csv文件,然后将所有这些文件进行编译。如下,
for filename in os.listdir(homedir): if filename.endswith(".xlsx"): fName = os.path.join(homedir + "\\" + filename) fBase = os.path.basename(fName) fRaw = os.path.splitext(fBase)[0] df = pd.read_excel(fName, index = False) df.drop(df.iloc[:, 2:4], inplace = True, axis = 1) df.dropna(subset=['Data Line'], inplace=True) df.to_csv(path_or_buf=home, header=True, index=False) all_files = glob.glob(homedir + "/*.csv") df = pd.concat((pd.read_csv(f) for f in all_files)) os.path.join(path, "*.csv") df.to_csv ("D:\\Users\\cdoyle\\Desktop\\short\\combined_csv.csv", index=False, encoding='utf-8-sig')
这花费了610秒的时间
是否有比上述方法更快的方法?
目前,我正在用熊猫编译一些数据框,目前有99个工作簿,其中包含约200,000行数据和几列。练习是过滤这些列之一,并获得...
您曾经profiled您的代码吗?没有它,您将不会真正知道在哪里可以获得最大的收益,而且很难做出很好的猜测。