即使使用usecols,pandas是否会读取整个文件?

问题描述 投票:1回答:2

我正在使用pandas来读取休息服务中的文件。该文件非常庞大,有超过100列。但我只想阅读前两列。我知道我可以在read_csv中使用usecols,但我想知道它究竟是如何工作的?

pandas是否读取整个文件并过滤掉所需的列?或者它只读取所需的列?

我问,因为我不想重写内存。

python pandas
2个回答
6
投票

根据文档,它将读取整个文件(无法只读取磁盘中的列),但只会解析和存储use_cols变量中给出的列(强调我的):

usecols:list-like或callable,optional

返回列的子集...使用此参数可以更快地解析分析时间并降低内存使用量。


2
投票

使用该参数可以大大减少解析时间,并且您获得的内存对内存的影响较小。

您可以在以下示例中看到它:

import pandas as pd
import numpy as np

data = np.random.random_integers(1, 20, (1000000, 100))
df = pd.DataFrame(data=a)
df.to_csv('testing.csv')

%timeit x = pd.read_csv('testing.csv')
7.38 s ± 86.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit x = pd.read_csv('testing.csv', usecols=[0, 1])
2.91 s ± 19.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
© www.soinside.com 2019 - 2024. All rights reserved.