无法弄清楚这样做的方法。 Python,csv,pandas

时间:2015-05-16 01:14:11

标签: python csv pandas

好的,所以我正在对股票数据进行回溯测试,这里是我难倒的地方:

我有150个csv文件,每个文件包含库存生命周期的每日库存数据。每只股票都有不同的开始日期。

Date        Close       etc
2015-05-05   123.24

我想在某些日子查看某些条件。那么,例如,在2015-05-05,150个文件中每个股票的收盘价是多少?然后执行一些操作,然后检查2015-05-06等。如何使用所有这些csv文件逐行条件语句?:

if date in csv_file:
    return row in csv_file that has this date

真的不知道如何处理这个,我知道如何手工完成,但那将是永远的,这就是计算机的用途。提前谢谢。

2 个答案:

答案 0 :(得分:0)

包含每日价格开始的150个文件(OHLC,数量等)确实不是那么多数据。

我会阅读所有csv文件并将它们放入一个在日期和符号上编入索引的DataFrame中(假设这些符号在所有csv文件中都是唯一的)。一旦数据采用这种平面格式,您就可以根据自己的内容重新排列数据。

答案 1 :(得分:0)

@Alexender是对的,这不是很多数据,而且将所有文件读入单个DataFrame可能最容易,但是当你到达数据点时不适合内存,您可以使用dask对数据进行操作,就好像它被读入内存中的DataFrame一样。一个很好的功能是它允许你将glob传递给read_csv(),这样你就可以同时操作多个csv文件。

使用这种方法,您的代码将如下所示。

import dask.dataframe as dd

ddf = dd.read_csv('/path/to/csvs/fname*glob.csv')
ddf[ddf.Date == some_date].compute()

dask的一个小缺点是它在推断类型方面不如pandas那么好,因此您可能必须将明确的dtype传递给read_csv()。< / p>