我正在构建一个工具,以帮助您每周自动执行来自多个实验室设置的数据审查.每天都会生成一个制表符分隔的文本文件.每行代表每2秒获取的数据,因此共有43200行和许多列(每个文件为75mb)
我正在使用pandas.readcsv加载七个文本文件,并且仅将我需要的三列提取到pandas数据框中.这比我想要的要慢,但是可以接受.然后,我使用离线Plotly绘制数据以查看交互式图.这是一项计划的任务,设置为每周运行一次.
绘制数据与日期和时间的关系.时间.通常,测试设置会暂时处于离线状态,并且数据中会存在空白.不幸的是,当绘制该图表时,即使测试处于离线状态达数小时或数天,所有数据仍通过线连接.
防止这种情况的唯一方法是在两个日期之间插入一个日期,其中包含实际数据和所有缺失数据的NaN.我已经很容易地为丢失的数据文件实现了此功能,但是我想对大于特定时间段的数据中的任何差距进行概括.我想出了一个似乎可行的解决方案,但它确实很慢:
# alldata is a pandas dataframe with 302,000 rows and 4 columns
# one datetime column and three float32 columns
alldata_gaps = pandas.DataFrame() #new dataframe with gaps in it
#iterate over all rows. If the datetime difference between
#two consecutive rows is more than one minute, insert a gap row.
for i in range(0, len(alldata)):
alldata_gaps = alldata_gaps.append(alldata.iloc[i])
if alldata.iloc[i+1, 0]-alldata.iloc[i,0] > datetime.timedelta(minutes=1):
Series = pandas.Series({'datetime' : alldata.iloc[i,0]
+datetime.timedelta(seconds=3)})
alldata_gaps = alldata_gaps.append(Series)
print(Series)
有人建议我如何加快此操作的速度,以免花费那么长的时间吗?