【发布时间】:2015-09-28 09:07:41
【问题描述】:
我经常迭代存储在 csv 文件中的金融价格数据。就像我的所有分析都与时间相关时,使用 pandas 日期时间对象来子集和组织数据的可访问性。
我的问题是,当我将文件读入计算机内存时,pandas.read_csv() 和 pandas.to_datetime() 顶部提供的 parse_dates 参数都非常耗时。
有谁知道在 python 中处理时间戳的更好方法,可以优化以运行需要加载到内存中的许多文件?
%timeit pd.read_csv("C:\\Users\\rgalbo\\Desktop\\Equity\\Data\\sp - working data\\30min--Adj\\AAPL_24.csv",index_col=[0])
10 loops, best of 3: 112 ms per loop
使用 parse_date = True
%timeit pd.read_csv("C:\\Users\\rgalbo\\Desktop\\Equity\\Data\\sp - working data\\30min--Adj\\AAPL_24.csv",index_col=[0],parse_dates=True)
1 loops, best of 3: 7.5 s per loop
【问题讨论】:
-
你确定这是你的瓶颈而不是 I/O?
-
我不确定,我只是想知道是否有人处理过日期时间转换并遇到过长时间执行的问题
-
我会尝试对您的测试更加孤立。首先读入数据并尝试将转换作为第二步,仅对第二步进行计时。您也可以尝试 parse_dates=['column_name'],因为我相信 parse_dates=True 会迫使熊猫猜测日期时间是什么。其他技巧包括以数字格式存储您的日期时间(例如自纪元以来的毫秒数)以及存储压缩的 csv 文件并使用 pd.read_csv(..., compression='gzip') 读取它们以权衡 CPU 的 I/O。
-
当我隔离将索引的日期转换为步骤时,在 I/O 之后完成转换需要更长的时间。我可能不得不尝试压缩或其他更有利于这种计算的格式