簡體   English   中英

Pandas:垃圾收集丟棄的列以釋放 memory

[英]Pandas: garbage-collect drop'ped columns to release memory

我正在處理一個包含大約 20,000,000 行和 4 列的大型數據集。 不幸的是,我機器上可用的 memory (~16GB) 是不夠的。

示例(時間是從午夜開始的秒數):

           Date   Time   Price     Vol
0      20010102  34222  51.750  227900
1      20010102  34234  51.750    5600
2      20010102  34236  51.875   14400

然后我將數據集轉換為適當的時間序列 object:

                         Date   Time   Price     Vol
2001-01-02 09:30:22  20010102  34222  51.750  227900
2001-01-02 09:30:34  20010102  34234  51.750    5600
2001-01-02 09:30:36  20010102  34236  51.875   14400
2001-01-02 09:31:03  20010102  34263  51.750    2200

要發布 memory,我想刪除多余的日期和時間列。 我使用.drop()方法完成此操作,但未發布 memory。 之后我也嘗試調用gc.collect()但這也無濟於事。

這是我為處理所描述的操作而調用的代碼。 del部分釋放 memory 但不釋放drop部分。

# Store date and time components
m, s = divmod(data.Time.values, 60)
h, m = divmod(m, 60)
s, m, h = pd.Series(np.char.mod('%02d', s)), pd.Series(np.char.mod('%02d', m)), pd.Series(np.char.mod('%02d', h))

# Set time series index
data = data.set_index(pd.to_datetime(data.Date.reset_index(drop=True).apply(str) + h + m + s, format='%Y%m%d%H%M%S'))

# Remove redundant information
del s, m, h
data.drop('Date', axis=1, inplace=True)
data.drop('Time', axis=1, inplace=True)

如何從 pandas 數據框中釋放 memory?

del data['Date']
del data['Time']

這將釋放 memory。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM