首先我导入整个文件,并获得了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
由于我将一个行删除,我期望内存消耗会降低或至少保持不变,但实际情况并非如此。
有人知道为什么会这样吗?还是该如何解决?或者这是个bug吗?
编辑:chicago.csv
RangeIndex
,这很好用,因为你只需要开始和结束值。现在由于你删除了一行,你有了一个Int64Index
,它需要更多的内存。尝试在最后添加.reset_index()
(我不确定,但它可能会将索引转换回范围)。 - pault