我有一個巨大的SQLite數據庫,當讀入一個大塊熊貓會導致內存錯誤。解決通常的方法是設置一個chunksize
參數:跨大塊熊貓填充
db = 'rawdb.sqlite'
conn = sqlite3.connect(db)
SQL = 'SELECT * FROM Table'
df = pd.read_sql(SQL, conn, chunksize=10000)
我試圖清理在數據庫中的數據(2密耳行×141列),通過:
- 刪除任何一行超過32個
NaN
值 - 正向填不下降
我可以提取我所需要的數據,如果它是一個唱行的所有其他NaN
值樂塊:
df[~(df.isnull().sum(axis=1) > 32)].fillna(method='ffill')
如何跨越塊做到這一點?具體而言,由於chunksize = 10000
,下一塊將會從10001點的數據開始,如果行10001恰好包含NaN
值,行不掉線,這是假設從行10000
但是到ffill,行10000在前面的塊中,所以沒有提及填充。這會導致行10001 NaN
值未被填充。什麼是模板算法來解決這類問題?
爲什麼在閱讀完所有大塊後最後兩個步驟不乾淨? – Parfait
現在你的問題得到了解答,你能回答我的問題嗎?性能問題是不是最後清理? – Parfait
這不是性能問題。你無法將整個文件讀入內存中,因爲它太大了,所以你可以通過分塊讀取它們,操縱並存儲它,卸載當前塊並讀取下一個文件。 – Yeile