我想將多個 csv 檔案匯入字典。不幸的是,我的解決方案非常慢。我該如何優化該代碼?
先感謝您!:)
dats = os.listdir(path) #file_names
dat_names = [i.split(sep = "_")[0] for i in dats ] #should be key in dict
PFC_Dict = {}
i = 0
while i < len(dats):
PFC_Dict[dat_names[i]] = pd.read_csv(str(path str(dats[i])), sep =";", parse_dates= True, index_col=(0), names = ["Preis"], decimal =",", dayfirst =True ).resample("15min").ffill()
i = 1
編輯:附加資訊:
- 匯入檔案數:~10 個檔案。
- 檔案大小:~ 1 MB,CSV 形狀:(160000,1)
- 語境:
分析結果應為以下形式的資料框:
- 顯示檔案名的索引
- 代表計算的不同場景的列(不同的引數)
這些檔案由日期時間索引和相應的價格組成。這些檔案有不同的開始日期和不同的價格,因為這些是預測。
我將根據這些資料的開始日期將這些資料框合并到不同的資料上。每個檔案都有單獨的資料框,我可以很容易地找到開始日期,因為它的索引 [0]。另一方面,如果我對所有檔案都有一個資料框,我認為找到每個檔案的開始日期并不容易。
uj5u.com熱心網友回復:
讀取 csv 是一個緩慢的程序,因為 csv 意味著人類可以閱讀。最有效的檔案格式是.feather. 幸運的是,Pandas 內置了對羽毛檔案的支持:
.read_csv()-->.read_feather()
.to_csv()-->.to_feather()
運行一次腳本,將所有.csv檔案轉換為.feather. 為此,請遍歷所有 csv 檔案并使用pd.read_csv(). 接下來使用df.to_feather().
當您現在運行代碼時,它應該.feather更快地讀取檔案。對我來說,我有一個資料檔案需要 30 秒才能讀取為 csv,而需要 1 到 2 秒才能讀取為羽毛檔案。
uj5u.com熱心網友回復:
問題不在于代碼的速度或資料的大小。只是代碼錯了。只要 i < len(import_list) 使用以下代碼,我就遍歷了匯入檔案串列:
i = 1
顯然它應該是 i = 1。否則它會在串列中無限回圈。
感謝您的所有回復!
uj5u.com熱心網友回復:
我個人喜歡pathlib使用檔案路徑。您可以執行以下操作:
from pathlib import Path
import pandas as pd
# creates a posix path
folder_path = Path('/your/folder/')
# iterates through the directory and puts everything in a list
file_list = list(folder_path.iterdir())
PFC_Dict = {}
# iterate through the list and add items into the dict
for file in file_list:
PFC_Dict[file.stem.split('_')[0]] = pd.read_csv(file)
這樣你就不必跑柜臺了。也許是您未來任務的解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490633.html
下一篇:Neo4J-有沒有辦法在一個查詢中加載多個子查詢,如LOAD...CREATE..LOAD..CREATE..LOAD...(用于測驗)
