我目前在Python中有一個問題,我不知道如何解決高效。我有一大組時間序列數據讀入發生器。到目前爲止,當我呼叫收益率時,每個數據都會一一給我。當每個時間序列具有相同的索引時,這一切都很好,其中每個時間序列從同一日期開始並在同一日期結束。問題是當我有一組時間序列數據不具有相同的開始日期,但具有相同的結束日期。高效的時間序列數據提取
什麼是最好的實現,當我查詢時,它會返回該特定日期的值。這樣我就不必擔心開始日期。它就像時間點。
我使用熊貓,目前沒有線索如何有效地實現這一點。
代碼我用文件導入CSV文件:
def _open_convert_csv_files(self):
comb_index = None
for s in self.symbol_list:
print s
# Load the CSV file with no header information, indexed on date
self.symbol_data[s] = pd.io.parsers.read_csv(
os.path.join(self.csv_dir, '%s.csv' % s),
header=0, index_col=0, parse_dates=True,
names=['Date','Open','High','Low','Close','Total Volume']
).sort()
# Combine the index to pad forward values
if comb_index is None:
comb_index = self.symbol_data[s].index
else:
comb_index.union(self.symbol_data[s].index)
# Set the latest symbol_data to None
self.latest_symbol_data[s] = []
print ''
# Reindex the dataframes
for s in self.symbol_list:
self.symbol_data[s] = self.symbol_data[s].reindex(index=comb_index, method='pad').iterrows()
正如你所看到的,self.symbol_data[s]
工作正常時,時間序列具有相同的開始日期,但如果他們不這樣做,它不會工作的過程中我的模擬中,我遍歷循環中的每個符號以獲取數據。另一個詞我需要考慮到每個迭代日期的橫截面價格數據
喜歡聽到別人正在做什麼來實現這一點。
我知道我們可以將它們並排排列在一起,所以它們的日期匹配並逐行循環,但是當我有100k個不同的證券時,這在內存中很慢。此外,每個csv文件不是一個單獨的列,但多列...
感謝,
Date Open High Low Close Total Volume
19991118 29.69620186 32.63318885 26.10655108 28.71720619 685497
19991119 28.02375093 28.06454241 25.98417662 26.3513 166963
19991122 26.96317229 28.71720619 26.14734257 28.71720619 72092
19991123 27.73821052 28.47245727 26.10655108 26.10655108 65492
19991124 26.18813405 27.37108715 26.10655108 26.80000634 53081
19991126 26.67763189 27.08554675 26.59604891 26.88158932 18955
你可以發佈csv文件的樣本嗎?另外,symbol_list是文件的一個子集? – Alexander
Symbol_list是一個符號名稱列表,例如[「SPY」,「GE」] – user1234440
我不確定如何發佈csv文件,它具有6列開放高低收盤價和開倉價。索引欄只是日期。不是盤中數據。 – user1234440