簡體   English   中英

過濾 dataframe 會增加 ram 的使用嗎?

[英]does filtering a dataframe result in an increase use of ram?

假設我有 16 GB 的 ram。 我有一個 in memory DataFrame (df) 就像 8 場演出。 假設我想將此 df 保留在 memory 中,但我必須對其進行過濾以用於其他目的。

所以我做了類似的事情

filtered = df.iloc[x, y]

並說filtered就像 2 場演出。

這是否意味着我在 memory 中的使用量現在是 10 場演出,還是仍然是 8 場演出?

我試圖弄清楚如何設計一些東西,保持對 ram 的有效使用。

也許如果我使用它而不是創建一個新變量它保持在 8,否則它會增加嗎?

trainOn(df.iloc[x, y])

你怎么認為?

這取決於您如何進行過濾。 pandas 文檔說:

是否為設置操作返回副本或引用,可能取決於上下文。

這里有一個小例子來演示這兩種可能的行為。 首先,當您將df.iloc與切片一起使用時,它會返回原始 dataframe 的視圖,因此 memory 負載幾乎不會受到影響:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.array(range(9)).reshape((3, 3)))

filtered = df.iloc[:2, :2]
df.iloc[0, 0] = 777

print(filtered)
     0  1
0  777  1
1    3  4

其次,改用 Boolean 過濾器,顯然會返回一個副本,因此這會影響 memory 負載:

df = pd.DataFrame(np.array(range(9)).reshape((3, 3)))

x = y = [True, False, True]
filtered = df.iloc[x, y]
df.iloc[0, 0] = 777

print(filtered)
   0  2
0  0  2
2  6  8

暫無
暫無

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

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