最近開始在回測股票,後來發現因為1900家的股票資訊存成csv檔案,然後用python抓這些檔案來回測,可是程式碼慢在帶入csv檔案這個地方,因為變成電腦要在1900家的csv檔案中找到相對應的檔案?
想請教先進有沒有什麼方法可以讓電腦更快的搜尋到相對應的檔但呢?
stocdid=[0050,0051,.......................]
for j in stockid:
tempdf = pd.read_csv(j+'.csv', parse_dates=True)
你不是已經用股票代碼(0050,0051)當檔名了嗎?
還需要用什麼方式找到檔案
我找到解決方法了 謝謝
程式碼如下
先把1900個股票交易資料csv檔案分別建立一個 dataframe,然後加入到dict中
li = []
for i in stockidnew:
df_name = f'df{i}'
print(df_name)
df_name= pd.read_csv('./newcsv/'+i+'new.csv', parse_dates=True)
li.append(df_name)
for df in li:
print(df)
我是說回測的時候會一直不斷在1900個csv擋去找,cpu時間會浪費很多時間在這上面,後來用如上的方法,原本要回測某一天1900家某技術指標會需要花一分半,但現在只需要六秒鐘。所以說每次回測一天會整整花了1分鐘2X秒在搜尋檔案。
問題出在於程式每一次要花0.04秒上下找到0050.CSV檔案。
測一天是1900乘0.04,然後如果要測100天就變成1900乘0.04乘100,那就很可怕了。萬一要回測10年-20年呢?
寫隻程式把1900個檔案讀進資料庫,後續用資料庫去做才是正途。
你也提到要回測多年的問題,那怎麼還會用CSV檔?
我也覺得把csv轉存到資料庫比較好
用資料庫方式處理資料不好嗎?
這麼堅持要用CSV是受了啥刺激?還是有啥外部制約?
@grissonlin 這其實就是是資料結構中最基本的收尋問題,大牛早就幫你實做好了
開始 → powershell
複制貼上以下指令(一行),內容自己按實際情況更改,找出"C:\path\to\folder"所有CSV檔裡含有michael字串的檔案,放心不會破壞任何資料也沒有危險性,難度★☆☆☆☆
Get-ChildItem -Path "C:\path\to\folder" -Recurse -Filter *.csv | Select-String -Pattern "michael" | Select-Object -Unique Path