更快的CSV加载与日期时间索引熊猫



我经常迭代存储在csv文件中的金融价格数据。例如,当我的所有分析都与时间相关时,使用pandas datetime对象来子集和组织数据的可访问性。

我的问题是,当我读取一个文件到我的计算机内存,parse_dates参数提供顶部pandas.read_csv()pandas.to_datetime()是令人难以置信的时间成本。

有没有人知道一个更好的方法来处理时间戳在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

with 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

在测试了几个加载&解析一个csv文件,有13,811,418行,有98个唯一的日期值,我们到达了下面的代码片段,并发现如果我们用预定义的日期格式传递format参数(在我们的例子中是'%m/%d/%Y'),我们可以用Pandas.0.15.3到达2.52 s

def to_date(dates, lookup=False, **args):
    if lookup:
        return dates.map({v: pd.to_datetime(v, **args) for v in dates.unique()})
    return pd.to_datetime(dates, **args)
  • 还使用coerce=True(或在以后的版本中使用coarse='raise')来启用日期格式验证,否则错误值将保留为字符串值,并且当在数据框列上执行任何其他日期时间操作时将导致错误

相关内容

  • 没有找到相关文章

最新更新