我正試圖將一些excel檔案讀成pandas資料幀。問題是它們相當大(大約2500行,列到Excel表中的'CYK'標簽,而且有14個)。
每次我運行我的程式時,它都必須再次從 excel 中匯入這些檔案。這導致運行時間大大增加,目前已經超過了15分鐘,而且到現在為止,除了匯入檔案,程式甚至沒有做任何重要的事情。
我希望能夠只匯入一次檔案,然后將資料框架物件保存在某個地方,并使我的程式只在這些資料框架上作業。
有什么建議嗎?
這是我們的代碼。
這是我到現在為止開發的代碼:
。import pandas as pd
import os
path = r'C:/Users/damia/Dropbox/Tesi/WIOD'
dirs = os.listdir(path)
complete_dirs = []
for f in dirs:
complete_dirs.append(path r"/"/span> f)
資料 = []
for el in complete_dirs:
wiod = pd.read_excel(el, engine='pyxlsb')
data.append(wiod)
如果有人感興趣,你可以在這個鏈接中找到我試圖讀取的檔案。 http://www.wiod.org/database/wiots16
uj5u.com熱心網友回復:
你可以使用pandas提供的to_pickle和read_pickle方法來序列化資料幀并將其存盤在檔案中。
docs
示例腌制:
data = [] 。
pickle_paths = []
for el in complete_dirs:
wiod = pd.read_excel(el, engine='pyxlsb')
# 這里是你存盤它的地方。
pickle_loc = 'your_unique_path_to_save_this_frame'
wiod.to_pickle(pickle_loc)
pickle_paths.append(pickle_loc)
data.append(wiod)
解密
data = [] for el in pickle_paths:
data.append(pd.read_pickle(el))
uj5u.com熱心網友回復:
另一個解決方案是使用to_pickle和read_pickle。
作為一個旁觀者,如果你不想先保存到你的驅動器,你可以直接從URL讀取Excel檔案。
#從URL讀取每個檔案并保存到磁盤。
for year in range(2000, 2015)。
pd.read_excel(f "http://www.wiod.org/protected3/data16/wiot_ROW/WIOT{year}_Nov16_ROW.xlsb").to_pickle(f"{span class="hljs-subst">{year}.pkl")
#從磁盤上讀取pickle檔案到一個資料幀。
data = list()
for year in range(2000, 2015)。
data.append(pd.read_pickle(f"{year}.pkl"/span>)
data = pd.concat(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332372.html
標籤:
上一篇:crypto-pouch在angular中顯示匯入錯誤
下一篇:檢索詞的重新運算
