我有一个只包含一列的数据集(Pandas系列). Dataset为.dat文件,约有200万行和1列(166 MB)。使用 pd.read_csv 阅读此数据大约需要7-8分钟。此数据是一个信号,需要进行处理(使用scipy.signal
)。所以当我处理数据时,我得到了MemoryError。有没有办法加快文件的加载速度并提高其处理速度(scipy.signal.ellip
)并绕过内存问题?提前感谢您。加载数据:
data = pd.read_csv('C:/Users/HP/Desktop/Python and programming/Jupyter/Filter/3200_Hz.dat',
sep='\r\n', header=None, squeeze=True)
数据处理(也需要约7分钟):
b, a = signal.ellip(4, 5, 40, Wn, 'bandpass', analog=False)
output = signal.filtfilt(b, a, data)
#after that plotting 'output' with plt
输入数据示例:
6954
25903
42882
17820
3485
-11456
4574
34594
25520
26533
9331
-22503
14950
30973
23398
41474
-860
-8528
1条答案
按热度按时间rt4zxlrg1#
将
'\r\n'
设置为分隔符,这意味着(如果我理解正确的话)每一行等于一个新列,这意味着最终将有数百万列,而squeeze
参数没有任何作用。不要设置
sep
参数(保留其默认值):换行符将分隔记录,然后squeeze
将其返回到Series
中。