gpt4 book ai didi

python - .dropna() 增加内存使用

转载 作者:太空狗 更新时间:2023-10-30 02:14:45 25 4
gpt4 key购买 nike

首先我导入了整个文件并得到了 1002.0+ KB 的内存消耗

df = pd.read_csv(
filepath_or_buffer="./dataset/chicago.csv"
)
print(df.info())

# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 32063 entries, 0 to 32062
# Data columns (total 4 columns):
# Name 32062 non-null object
# Position Title 32062 non-null object
# Department 32062 non-null object
# Employee Annual Salary 32062 non-null object
# dtypes: object(4)
# memory usage: 1002.0+ KB
# None

然后我放弃 NaN,再次运行脚本并获得 1.2+ MB 的内存消耗

df = pd.read_csv(
filepath_or_buffer="./dataset/chicago.csv"
).dropna(how="all")

# <class 'pandas.core.frame.DataFrame'>
# Int64Index: 32062 entries, 0 to 32061
# Data columns (total 4 columns):
# Name 32062 non-null object
# Position Title 32062 non-null object
# Department 32062 non-null object
# Employee Annual Salary 32062 non-null object
# dtypes: object(4)
# memory usage: 1.2+ MB
# None

因为我删除了一行,所以我希望内存消耗会下降或至少保持不变。

有没有人知道为什么会这样?或者如何解决?或者这是一个错误?

编辑: chicago.csv

最佳答案

变化是因为您的索引从 RangeIndex 更改为 Int64Index,这会占用更多内存。

您可以通过在 dropna() 之后重置索引来“修复”此问题,但这会产生更改行索引的副作用(您可能不关心)。

这是一个说明性的例子:

首先创建一个示例 DataFrame:

df = pd.DataFrame({"a": range(10000)})
df.loc[1000, "a"] = None

打印信息:

print(df.info())
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 10000 entries, 0 to 9999
#Data columns (total 1 columns):
#a 9999 non-null float64
#dtypes: float64(1)
#memory usage: 78.2 KB

删除 na 值:

print(df.dropna().info())
#<class 'pandas.core.frame.DataFrame'>
#Int64Index: 9999 entries, 0 to 9999
#Data columns (total 1 columns):
#a 9999 non-null float64
#dtypes: float64(1)
#memory usage: 156.2 KB

重置(并删除)索引:

df.dropna().reset_index(drop=True).info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 9999 entries, 0 to 9998
#Data columns (total 1 columns):
#a 9999 non-null float64
#dtypes: float64(1)
#memory usage: 78.2 KB

关于python - .dropna() 增加内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55421874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com