熊猫:丢弃列和释放内存

时间:2015-07-18 13:28:21

标签: python pandas

我正在处理一个包含大约20,000,000行和4列的大型数据集。 不幸的是,我机器上的可用内存(~16GB)是不够的。

示例(时间是自午夜起的秒数):

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

然后我将数据集转换为适当的时间序列对象:

                         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

要释放内存,我想删除冗余的日期和时间列。 我使用.drop()方法执行此操作但未释放内存。之后我也试着打电话给gc.collect(),但这也没有帮助。

这是我调用以处理所描述的操作的代码。 del部分释放内存但不释放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数据框中释放内存?

1 个答案:

答案 0 :(得分:1)

# in ~/.gitconfig
[alias]
    lg = log --all --stat --pretty=oneline --graph --format='%h %d %an %cr %s' --oneline
    l = log --all --stat --graph --format='%h %d %an %cr %s'
    up = pull --rebase
    br = branch --verbose -a
    sfp = push --force-with-lease

这将释放内存。