当试图读取只有20万行数据的CSV文件时,Python程序会冻结我的计算机



我是Python的初学者,我面临着一个问题。我希望用户选择要读入的CSV文件。如果程序无法定位文件或处理条件,则应默认为错误。

我已经成功地为小文件大小(<50000行(实现了此解决方案,但当所选文件变大(e.x.>50000行时(,程序会冻结。

以下是需要考虑的一些特性:

  1. 我的电脑有8GB的RAM
  2. 所选文件只有200k+行;大数据">

以下是我对实现的尝试:

def File_DATALOG():
global df_LOG
try:
dataloggerfile = tk.filedialog.askopenfilename(parent=root,
title='Choose Logger File',
filetype=(("csv files", "*.csv"),
("All Files", "*.*")))
if len(dataloggerfile) == 0:
return None
lb.insert(tk.END, dataloggerfile)
if dataloggerfile[-4:] == ".csv":
df_LOG = pd.DataFrame(pd.read_csv(dataloggerfile))
if 'Unnamed: 1' in df_LOG.columns:
df_LOG = pd.DataFrame(pd.read_csv(dataloggerfile, skiprows=5, low_memory=False))
else:
df_LOG = pd.DataFrame(pd.read_excel(dataloggerfile, skiprows=5))
df_LOG.rename(columns={'Date/Time': 'DateTime'}, inplace=True)
df_LOG.drop_duplicates(subset=None, keep=False, inplace=True)
df_LOG['DateTime'] = df_LOG['DateTime'].apply(lambda x: insert_space(x, 19))
df_LOG['DateTime'] = pd.to_datetime(df_LOG['DateTime'], dayfirst=False, errors='coerce')
df_LOG.sort_values('DateTime', inplace=True)
df_LOG = df_LOG[~df_LOG.DateTime.duplicated(keep='first')]
df_LOG = df_LOG.set_index('DateTime').resample('1S').pad()
print(df_LOG)
columnsDict['Logger'] = df_LOG.columns.to_list()
except Exception as ex:
tk.messagebox.showerror(title="Title", message=ex)
return None

您正试图同时获取所有文件。但是你的记忆力还不够。

因此,您需要一点一点地处理数据。

下面是一个简单的例子:https://stackoverflow.com/a/43286094/7285863

相关内容

  • 没有找到相关文章

最新更新